Обсуждаем контроллеры компании Atmel.
Ответить

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

Вт июн 26, 2018 14:35:01

Выбросьте протеус и симулируйте программу в avr-studio 4.19. Это самая стабильная версия.

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

Пт июл 20, 2018 09:04:43

Подскажите, при выделение ячейки ОЗУ МК, она чистая? Можно с нее считать ноль? Спасибо.

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

Пт июл 20, 2018 09:27:55

Ноль (как и любое другое значение) в ячейке ОЗУ будет только в одном случае - если его туда записать. Что имеется ввиду под выделением ячейки? Директива типа .byte?

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

Пт июл 20, 2018 10:04:24

При написании программ на ассемблере в самом начале любой программы по необходимости вставляете функции и макросы очистки ОЗУ и регистров. Дело в том, что при включении в ОЗУ и регистрах может быть любое значение из за остаточных зарядов. Периферийные регистры при включении питания и сбросе устанавливаются в дефолтные значения. Уточняется в даташитах.

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

Пт июл 20, 2018 10:26:28

при включении в ОЗУ и регистрах может быть любое значение из за остаточных зарядов.

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

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

Пт июл 20, 2018 11:06:58

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

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

Пт июл 20, 2018 11:26:19

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

Уточняется в даташитах. Есть специальные таблицы.

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

Пт июл 20, 2018 12:03:49

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

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

Пт июл 20, 2018 12:40:27

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

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

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

Пт июл 20, 2018 12:47:54

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

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

Пт июл 20, 2018 13:24:36

Собственно ежли кнопка выводит систему из сна, а затем перестраивается на обработку сигнала ввода то можно.
Примерно как в этом тесте
https://radiokot.ru/forum/viewtopic.php ... 8#p3419178
если помимо вывода из режима сна ту кнопу задействовать в программе как сигнальную для смены режимов.
Исходно там кнопа только из гиперсна выводит и в самом теле теста не используется.
8)
А как развитие проекта намечался ключик-отсекатель питания светодиодов и, возможно, внутри цикла свечения кнопа как фактор смены чегось в режиме индикации.
:roll:

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

Пт июл 20, 2018 13:28:22

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

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

Пт июл 20, 2018 13:48:25

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

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

Пт июл 20, 2018 14:08:43

кнопочка там ничего такого не делает, тупо рвет питание МК.
а вот программа МК уже весьма и весьма хитро сделана: в активном режиме "заряжается" встроенный конденсатор схемы выборки-хранения АЦП путем выдачи на один из портов высокого уровня.
если питание выключается ненадолго - этот конденсатор разрядиться не успевает, и АЦП на этом входе что-то намеряет. если питание отключить на несколько секунд - конденсатор разрядится и АЦП покажет 0.
алгоритм переключения режима таков: после подачи питания включается сохраненный ранее в EEPROM. если просто выключить питание - так все и останется. а вот если выключить-включить питание быстро, то МК это обнаруживает по вышеописанному алгоритму и переключает режим, сохраняя его в EEPROM.
можно еще использовать аналогичный эффект емкости выводов питания - нескольких пикофарад хватает, чтобы за долю секунды содержимое ОЗУ не усело попортиться... но это игра на грани фола.

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

Пт июл 20, 2018 14:41:34

У меня будет в качестве питания танталовый кондер и керамика от Step-up'а. А констант у меня не много, поэтому в пихну проверку содержимого - не соответствует - сброс в начало выбора...

Да, хотел поиграться с watchdog, чтоб таймер отключить, так в симуляторе, что avr, что в протеусе не срабатывает. Использую attiny85, в WDT включил единицу на прерывание и включение (wde), так после 2048 циклов, флаг не поднимается...

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

Сб июл 21, 2018 05:39:14

Так опять же вариант с управляемым силовым ключем и/или раздельным питанием нагрузки и МК напрашивается...
В смысле такового уже ЗА кнопкой...
А там и чего по типу ионистора... да диодика шоттки...
:roll:
Периферия в симуляторах требует внимательного ознакомления с соответствующими разделами хелпа - что-то поддерживается , что-то нет и все относительно каждого из конкретного кристалла по-своему...
Читать надо...
:(

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

Сб июл 21, 2018 11:54:17

2048 циклов чего? у WDT свой тактовый генератор никак не связанный с тактированием МК.

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

Сб июл 21, 2018 13:48:55

Выставляется битами WDP. Ими реализована, когда произойдет прерывание.

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

Вс июл 22, 2018 12:41:14

Это хорошо что выставляется. А сам WDT включен? А эти 2048 циклов вы где отсчитали?

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

Вс июл 22, 2018 17:13:29

в мануале: Number of WDT Oscillator Cycles - 2K (2048) cycles. В протеуси фьюз ставил.

разобрался, осциллятор собаки в attiny25,45,85 работает на 128kHz, думал, 1 MHz.

Все равно не понятно, как посчитать время до прерывание в авр. У меня 1 MHz, Number of WDT Oscillator Cycles - 2K (2048) cycles и срабатывает прерывание на 1050 ms.... :dont_know:
Ответить