Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

IM1
Предлагаю перейти на "личности" :))) (в смысле в личную переписку)
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Аватара пользователя
MTF
Нашел транзистор. Понюхал.
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение MTF »

Всем привет !!!
Давно что то не занимался своим устройством вот опять решил занятся и наткнулся на небольшую проблемку :shock:
вопрос к спецам :
Не могу проверить порт B attiny2313 настроенный как вход без подтяжки

Код: Выделить всё

   ldi   r16,0b00001111      ;Set Ini Ports func (DIRECTIO)
   out   ddrb,r16      ;   DDRB

   ldi   r16,0b00000000      ;Set Ini Ports value (VALUE)
   out   portb,r16      ;   PORTB

на наличее на входе плюса взятого с порта PD4

проверяю так

Код: Выделить всё

; основная прогр
  *************
  *************
  *************
Enable: 
   sei
   sbi    portd , 4      
 
    sbic pinb , PB4   ; "+"(PB4)
    rjmp PwrOn         

;    sbic pinb , PB5   ;   "-"(PB5)
;    rjmp PwrOn         
********
********
    rjmp   Enable       ;                 
PwrOn:
******** 


sbic почему то не пропускает , сразу переходит на PwrOn (даже не нажимая на кнопку), попробовал sbis тоже сразу переходит !!!

там что одновременно 1 и 0 ????
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

если вход без подтяжки, то это означает что pinbx будет присутствовать примерно 1/2Vcc что соответствует лог.1, поэтому программа правильно переходит.
замкни вывод на корпус и ...
вот оно счастье :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
MTF
Нашел транзистор. Понюхал.
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение MTF »

GP1 если помните у меня динамическая индикация с общим катодом на катодах 4 кнопки с 4 диодами _noise давал алгоритм работы !!!http://radiokot.ru/forum/viewtopic.php?f=20&t=28364

вот и приходится с плюсом марочится с +


то это означает что pinbx будет присутствовать примерно 1/2Vcc что соответствует лог.1, поэтому программа правильно переходит.


я согласен а почему также переходит по команде sbis ???

как нибуть еще можно проверить ????
Последний раз редактировалось MTF Вт июн 08, 2010 14:59:29, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

без подтяжки к + или массе ни как, висящий в воздухе вывод - это вещь в себе: антенна для помех, указатель цены на дрова в прошлом году :)))
ну для проверки можно же подключиться к чему-то определенному, чтобы исключить влияние вспышек на солнце и дрейфа айсбергов. :)))

Освежил в памяти твой проектик, смотри, когда ты переключаешь потрБ на вход ни что не мешает подтянуть его встроенными резюками к +.
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Аватара пользователя
MTF
Нашел транзистор. Понюхал.
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение MTF »

т.е пока я не включу подтяжку на входе ни чего определенного не будет я правильно понял ???
если я включу внутреннюю подтяжку, у меня ведь плюс будет на входе , минус я так понял внешнее сопр надо ставить , а хотелось бы без него ???

Какие нибуть варианты еще возможны ????
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

так и будет.
если верить схеме подключения кнопок, то без сопры на кнопке не обойтись.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
MTF
Нашел транзистор. Понюхал.
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение MTF »

если я минус подам на катоды у меня засветится цифра последняя загруженная в 74ls164
но это можно подправить придется после настройки на вход порт B еще дополнительно стирать из 74ls164 послед цифру , а то при подачи минуса на portb подсветится индикатор , и диоды
перепаять придется :shock:
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

не совсем так, у тебя будут высвечиваться все цифры, ты же не сможешь обеспечить нажатие кнопки строго в момент опроса, кнопка по-любому будет нажатой N-циклов динамической индикации всех разрядов.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
MTF
Нашел транзистор. Понюхал.
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение MTF »

GP1 что же делать не пойму , с + бы проблем не было но геморойно реализовать навесным не хотелось бы , c - тоже загвозка есть с индикацией ????
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

да честно говоря я не вижу проблемы.
1. при опросе переключаешь выводы на вход
2. подключаешь подтягивающие резисторы
3. считываешь кнопку(и)
4. возвращаешь порт в исходное
единственное, без добавочного резистора на кнопке никак.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
MTF
Нашел транзистор. Понюхал.
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение MTF »

to GP1
единственное, без добавочного резистора на кнопке никак.


это тот резистор который предлагал ooogo http://radiokot.ru/forum/download/file.php?id=31171
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

он самый :wink:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
selevo
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт ноя 26, 2009 13:44:03
Откуда: Ижевск
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение selevo »

загрузил в avr studio 4 hex файл
дизассемблер показывает какие-то пропущенные строки со знаками вопросов вместо операндов
что за опкоды такие которые не понятны студии ?
или надо сменить адрес начала дизассемблирования ?
Изображение
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение SII »

Это могут быть какие-то константы, а не команды. Надо разбираться по логике работы программы.
Prevan
Родился
Сообщения: 13
Зарегистрирован: Пт июн 11, 2010 16:44:07

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Prevan »

Зравствуйте! Подскажите как присвоить значение отдельным битам порта содержимое какой-нибудь переменной?
например:

out PORTD,temp ;будет просто установлено значение переменной temp в порт D

а мне надо в порт С на 3ю ножку установить значение такое же как на 6м бите перменной temp и таким же образом раскидать другие переменные.

И наоборот. Как можно сделать обратную операцию, т.е. из разных битов портов составить содержимое переменной temp?
например:

in temp,PINC ;будет просто скопировано значение состояния порта С переменную temp

Дело в том, что мне необходимо "мягко" изменить код программы, не прибегаю к полному переписанию кода программы. Переменные, указанные в программе работают со старым подключением проводов к ножкам МК.
т.е. мне надо будет изменить следующий код:

out PORTD,scancod
clc
ldi rots,4
in temp,PINC

где:
PD0 <->PD4
PD1 <->PD5
PD4 <->PC0
PD5 <->PC1
PD6 <->PC2
PD7 <->PC3
Вложения
3.JPG
(97.14 КБ) 582 скачивания
1.JPG
(114 КБ) 424 скачивания
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Pooher »

Код: Выделить всё

sbrc temp, x ; Если бит х в РОН temp сброшен, пропустить след. команду
sbi PORTy, z ; Установить бит z прота y
sbrs temp, x ; Если бит х в РОН temp установлен, пропустить след. команду
cbi PORTy, z ; сбросить бит z прота y


Ну, как то так...
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Prevan
Родился
Сообщения: 13
Зарегистрирован: Пт июн 11, 2010 16:44:07

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Prevan »

Pooher писал(а):Ну, как то так...

Спасибо, логичное решение. По такому принципу исправил свой код, получил:

Код: Выделить всё

andi PORTD, $CF; обнулить биты 4 и 5
andi PORTC, $F0; обнулить младший полубайт
sbrc scancod, 0 ; Если бит 0 в РОН scancod сброшен, пропустить след.команду
sbi PORTD, 4 ; Установить бит 4 прота D
sbrc scancod, 1 ; Если бит 1 в РОН scancod сброшен, пропустить след. команду
sbi PORTD, 5 ; Установить бит 5 прота D
sbrc scancod, 4 ; Если бит 4 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 0 ; Установить бит 0 прота C
sbrc scancod, 5 ; Если бит 5 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 1 ; Установить бит 1 прота C
sbrc scancod, 6 ; Если бит 6 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 2 ; Установить бит 2 прота C
sbrc scancod, 7 ; Если бит 7 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 3 ; Установить бит 3 прота C
   clc
   ldi rots,4
clr temp;
sbrc PIND, 4 ; Если бит 0 в РОН scancod сброшен, пропустить след. команду
sbi temp, 0 ; Установить бит 4 прота D
sbrc PIND, 5 ; Если бит 1 в РОН scancod сброшен, пропустить след. команду
sbi temp, 1 ; Установить бит 5 прота D
sbrc PINC, 0 ; Если бит 4 в РОН scancod сброшен, пропустить след. команду
sbi temp, 4 ; Установить бит 0 прота C
sbrc PINC, 1 ; Если бит 5 в РОН scancod сброшен, пропустить след. команду
sbi temp, 5 ; Установить бит 1 прота C
sbrc PINC, 2 ; Если бит 6 в РОН scancod сброшен, пропустить след. команду
sbi temp, 6 ; Установить бит 2 прота C
sbrc PINC, 3 ; Если бит 7 в РОН scancod сброшен, пропустить след. команду
sbi temp, 7 ; Установить бит 3 прота C

только при запуске выдаёт ошибки на первые две строки Invalid register и на второй блок команд (после строчки clr temp;) почерёдно Invalid register и Invalid number
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Pooher »

1. Прямо к портам обращаться нельзя.

Код: Выделить всё

andi PORTD, $CF

Надо так:

Код: Выделить всё

in temp, PORTD
andi temp, $CF
out PORTD, temp

2.

Код: Выделить всё

sbi temp, 5

для РОН - команда SBR
3.
sbrc PINC, 1

здесь команда SBIC
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Jack_A »

selevo писал(а):загрузил в avr studio 4 hex файл
дизассемблер показывает какие-то пропущенные строки со знаками вопросов вместо операндов
что за опкоды такие которые не понятны студии ?
или надо сменить адрес начала дизассемблирования ?


Между векторами прерываний и обработчиком старта или данные, или скорее всего, мусор. Бессмысленный набор, если рассматривать как команды. Копировать пару регистров и следующей же командой затирать регистры - ясен пень, мура. Отсюда и неизвестные опкоды.
Я бы рекомендовал включить дебагер и в шаговом режиме пройти хотя бы первую команду rjmp Start, и уже от этого адреса дизасемблироваь дальше. И не факт, что такая же фигня не окажется в другом месте, если кодовые сегменты имеют разрывы :
Сегмент кода 1
........
.org 0xХХХ
Сегмент кода 2

А разбираться - мусор это или данные - нужно анализировать наличие команд LPM. Если есть, и указатель выставлен на это место памяти, - значит, что-то осмысленное. Я так никогда не делаю - константы закидываю в конец флеш-памяти.
Ответить

Вернуться в «AVR»