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

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Ассемблер из комплекта avr-gcc.

Makefile в наличии, так что чего-то вроде WinAVR, в котором есть и сам gcc, и make, должно быть достаточно.
Контактная информация:
Реклама
Грызет канифоль
Сообщения: 286
Зарегистрирован: Пт дек 30, 2016 18:05:50
Откуда: Украина.

Сообщение Deoptim »

Спасибо.
У меня еще один вопросик.
В main.S есть следующие фюзы для Attiny13A:

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

;----------------------------------------------;
; Fuse values
;----------------------------------------------;
.section	.fuse,"a",@progbits

	.dc.b	0b01111010	; Fuse low bits
	.dc.b	0b11111000	; Fuse high bits
Я использую HVS(вот reset фюзы по умолчанию):

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

g:\_flashlight\ATtiny\HVS\LPT\avrxtool32\bin>avrpp.exe -RF
Put a device on the socket and type Enter...
PAR->Unknown device (FF-FF-FF).
HVS->Detected device is ATtiny13.

Low: 01101010
     ││││││└┴── CKSEL[1:0] Clock
     ││││└┴── SUT[1:0] Startup time
     │││└── CKDIV8 Clock division ratio (1:1/1, 0:1/8)
     ││└── WDTON (1:WDT normal, 0:WDT always on)
     │└── EESAVE (Retain EEPROM at chip erase 1:No, 0:Yes)
     └── SPIEN (1:Disable ISP, 0:Enable ISP) *Available only HVS mode

High:---11111
        ││││└── RSTDISBL (RESET pin 1:Enable, 0:Disable(PB5))
        ││└┴── BODLEVEL[1:0] (BOD 11:None, 10:1.8V, 01:2.7V, 00:4.3V)
        │└── DWEN (On-Chip Debugging via RESET pin 1:Disable, 0:Enable)
        └── SPMEN (SPM instruction 1:Disable, 0:Enable)

Cal: 98

g:\_flashlight\ATtiny\HVS\LPT\avrxtool32\bin>
Мне кажется, или в main.S big-endian формат фюзов или наоборот в HVS он big-endian?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Достаточно посмотреть на расположение RSTDISBL согласно даташита.
Docendo discimus
Контактная информация:
Встал на лапы
Сообщения: 89
Зарегистрирован: Вт мар 31, 2015 01:12:46

Сообщение dumbass »

Спасибо за ответы, буду пробовать!
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 107
Зарегистрирован: Ср авг 05, 2015 19:34:20

Сообщение siimao »

Уважаемый akl.
Стал проверять работу brtc в протеус. Один момент: для того, чтобы выйти из цикла brtc приходится отправлять команду два раза. Причем останов происходит на команде brtc.
Отправляю сообщение - перехожу в паузу - программа на brtc и флаг T установлен. Продолжение Run не изменяет ситуацию.
Повторное отправление сообщения и происходит выход из цикла с отработкой последующих команд и сбросом флага T.

Относительно вашего решения:
https://radiokot.ru/forum/viewtopic.php ... start=6420
Пт янв 26, 2018 14:25:41

Это баг Протеус или какая-то особенность? И как с ней бороться?
Спасибо!
Вложения
brtc.png
(42.67 КБ) 272 скачивания
Реклама
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Симулируется спящий режим. Поэтому все верно. При включенном спящем режиме выполнение программы прекращается сразу после команды sleep. И разбудить МК можно только действиями зависящими от настройки спящего режима.
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 107
Зарегистрирован: Ср авг 05, 2015 19:34:20

Сообщение siimao »

Demiurg, спасибо огромное за ответ. Буду пробовать при подключенном сотике (ME) в связке с Протеус. Или так тоже не получится и надо ME+железо?
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Выбросьте протеус и симулируйте программу в avr-studio 4.19. Это самая стабильная версия.
Контактная информация:
Встал на лапы
Сообщения: 124
Зарегистрирован: Пн мар 22, 2010 18:07:52

Сообщение vit007 »

Подскажите, при выделение ячейки ОЗУ МК, она чистая? Можно с нее считать ноль? Спасибо.
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Ноль (как и любое другое значение) в ячейке ОЗУ будет только в одном случае - если его туда записать. Что имеется ввиду под выделением ячейки? Директива типа .byte?
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

При написании программ на ассемблере в самом начале любой программы по необходимости вставляете функции и макросы очистки ОЗУ и регистров. Дело в том, что при включении в ОЗУ и регистрах может быть любое значение из за остаточных зарядов. Периферийные регистры при включении питания и сбросе устанавливаются в дефолтные значения. Уточняется в даташитах.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

[uquote="Demiurg",url="/forum/viewtopic.php?p=3422512#p3422512"]при включении в ОЗУ и регистрах может быть любое значение из за остаточных зарядов.[/uquote]
...а при сбросе, например во вачдогу или по внешнему ресету так и вовсе там сохранится то, что было до сброса, так что инициализировать переменные нужно всегда.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

При аварийном перезапуске "неопределенность" может иметь место не только в ОЗУ, регистровом файле но и в регистрах спецфункций.
Ибо исходное состояние там только при аппаратном сбросе при подаче питания - во всех остальных случаях минимум предшествующее перезапуску состояние.
8)
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

[uquote="BOB51",url="/forum/viewtopic.php?p=3422547#p3422547"]При аварийном перезапуске "неопределенность" может иметь место не только в ОЗУ, регистровом файле но и в регистрах спецфункций.
Ибо исходное состояние там только при аппаратном сбросе при подаче питания - во всех остальных случаях минимум предшествующее перезапуску состояние.
8)[/uquote]
Уточняется в даташитах. Есть специальные таблицы.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Я ж про соответствие даташиту только В ЛУЧШЕМ СЛУЧАЕ из ВОЗМОЖНЫХ говорю.
Достаточно часто бывает и хуже.
8)
Не повреждается только информация в ПЗУ и то "все относительно".
Да еще непосредственно в регистре сразу после чтения команды/данных.
Все что хранится в регистрах группы оперативной памяти может заполучить "мусор".
Про ЕЕПРОМ разговор особый - при хранении/считывании данные повредить затруднительно,
однако сам процесс считывания достаточно многоступенчат - посему окончательный результат
чтения может иметь искажения.
При наличии мощных искровых и прочих помех вышеуказанное следует особо учитывать.
:beer:
Встал на лапы
Сообщения: 124
Зарегистрирован: Пн мар 22, 2010 18:07:52

Сообщение vit007 »

Т.е. кн. включения питания нежелательно использовать, как переключатель режимов. А если хочу, то на МК надо отдельно вешать питание, так?

Или написать скрипт инициализации, так, чтоб при каждом включение проверял целостность данных, так?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

vit007 писал(а):Т.е. кн. включения питания нежелательно использовать, как переключатель режимов. А если хочу, то на МК надо отдельно вешать питание, так?
вопрос, конечно, интересный. существуют китайские фонарики на attiny13, в которых единственная кнопка питания служит и для переключения режимов его работы. но для большинства других устройств это будет достаточно неудобный вариант, а может, и недопустимый.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Собственно ежли кнопка выводит систему из сна, а затем перестраивается на обработку сигнала ввода то можно.
Примерно как в этом тесте
https://radiokot.ru/forum/viewtopic.php ... 8#p3419178
если помимо вывода из режима сна ту кнопу задействовать в программе как сигнальную для смены режимов.
Исходно там кнопа только из гиперсна выводит и в самом теле теста не используется.
8)
А как развитие проекта намечался ключик-отсекатель питания светодиодов и, возможно, внутри цикла свечения кнопа как фактор смены чегось в режиме индикации.
:roll:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Так чтоб и питание рвать и режимы менять да еще и дешево...
:facepalm:
Только если та кнопа "вторичная" - управляет силовым ключом с самоподхватом от МК и дальнейшим отслеживанием уровня на коллекторе упавляемого от МК транзистора.
Но там разница между механическим КЗ и открытым переходом настолько мизерная - логическими уровнями вряд-ли можно оперировать...
Разве что компаратор и/или АЦП?...
:dont_know:
Ответить

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