Ассемблер (ASM) для AVR в вопросах и ответах
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Выбросьте протеус и симулируйте программу в avr-studio 4.19. Это самая стабильная версия.
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Подскажите, при выделение ячейки ОЗУ МК, она чистая? Можно с нее считать ноль? Спасибо.
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ноль (как и любое другое значение) в ячейке ОЗУ будет только в одном случае - если его туда записать. Что имеется ввиду под выделением ячейки? Директива типа .byte?
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
При написании программ на ассемблере в самом начале любой программы по необходимости вставляете функции и макросы очистки ОЗУ и регистров. Дело в том, что при включении в ОЗУ и регистрах может быть любое значение из за остаточных зарядов. Периферийные регистры при включении питания и сбросе устанавливаются в дефолтные значения. Уточняется в даташитах.
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Demiurg",url="/forum/viewtopic.php?p=3422512#p3422512"]при включении в ОЗУ и регистрах может быть любое значение из за остаточных зарядов.[/uquote]
...а при сбросе, например во вачдогу или по внешнему ресету так и вовсе там сохранится то, что было до сброса, так что инициализировать переменные нужно всегда.
...а при сбросе, например во вачдогу или по внешнему ресету так и вовсе там сохранится то, что было до сброса, так что инициализировать переменные нужно всегда.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
При аварийном перезапуске "неопределенность" может иметь место не только в ОЗУ, регистровом файле но и в регистрах спецфункций.
Ибо исходное состояние там только при аппаратном сбросе при подаче питания - во всех остальных случаях минимум предшествующее перезапуску состояние.

Ибо исходное состояние там только при аппаратном сбросе при подаче питания - во всех остальных случаях минимум предшествующее перезапуску состояние.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="BOB51",url="/forum/viewtopic.php?p=3422547#p3422547"]При аварийном перезапуске "неопределенность" может иметь место не только в ОЗУ, регистровом файле но и в регистрах спецфункций.
Ибо исходное состояние там только при аппаратном сбросе при подаче питания - во всех остальных случаях минимум предшествующее перезапуску состояние.
[/uquote]
Уточняется в даташитах. Есть специальные таблицы.
Ибо исходное состояние там только при аппаратном сбросе при подаче питания - во всех остальных случаях минимум предшествующее перезапуску состояние.
Уточняется в даташитах. Есть специальные таблицы.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я ж про соответствие даташиту только В ЛУЧШЕМ СЛУЧАЕ из ВОЗМОЖНЫХ говорю.
Достаточно часто бывает и хуже.

Не повреждается только информация в ПЗУ и то "все относительно".
Да еще непосредственно в регистре сразу после чтения команды/данных.
Все что хранится в регистрах группы оперативной памяти может заполучить "мусор".
Про ЕЕПРОМ разговор особый - при хранении/считывании данные повредить затруднительно,
однако сам процесс считывания достаточно многоступенчат - посему окончательный результат
чтения может иметь искажения.
При наличии мощных искровых и прочих помех вышеуказанное следует особо учитывать.

Достаточно часто бывает и хуже.
Не повреждается только информация в ПЗУ и то "все относительно".
Да еще непосредственно в регистре сразу после чтения команды/данных.
Все что хранится в регистрах группы оперативной памяти может заполучить "мусор".
Про ЕЕПРОМ разговор особый - при хранении/считывании данные повредить затруднительно,
однако сам процесс считывания достаточно многоступенчат - посему окончательный результат
чтения может иметь искажения.
При наличии мощных искровых и прочих помех вышеуказанное следует особо учитывать.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Т.е. кн. включения питания нежелательно использовать, как переключатель режимов. А если хочу, то на МК надо отдельно вешать питание, так?
Или написать скрипт инициализации, так, чтоб при каждом включение проверял целостность данных, так?
Или написать скрипт инициализации, так, чтоб при каждом включение проверял целостность данных, так?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
вопрос, конечно, интересный. существуют китайские фонарики на attiny13, в которых единственная кнопка питания служит и для переключения режимов его работы. но для большинства других устройств это будет достаточно неудобный вариант, а может, и недопустимый.vit007 писал(а):Т.е. кн. включения питания нежелательно использовать, как переключатель режимов. А если хочу, то на МК надо отдельно вешать питание, так?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Собственно ежли кнопка выводит систему из сна, а затем перестраивается на обработку сигнала ввода то можно.
Примерно как в этом тесте
https://radiokot.ru/forum/viewtopic.php ... 8#p3419178
если помимо вывода из режима сна ту кнопу задействовать в программе как сигнальную для смены режимов.
Исходно там кнопа только из гиперсна выводит и в самом теле теста не используется.
А как развитие проекта намечался ключик-отсекатель питания светодиодов и, возможно, внутри цикла свечения кнопа как фактор смены чегось в режиме индикации.

Примерно как в этом тесте
https://radiokot.ru/forum/viewtopic.php ... 8#p3419178
если помимо вывода из режима сна ту кнопу задействовать в программе как сигнальную для смены режимов.
Исходно там кнопа только из гиперсна выводит и в самом теле теста не используется.
А как развитие проекта намечался ключик-отсекатель питания светодиодов и, возможно, внутри цикла свечения кнопа как фактор смены чегось в режиме индикации.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
я говорил о фонарике с кнопкой, которая отрубает от батарейки всю остальную схему вместе с МК и прочим.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Так чтоб и питание рвать и режимы менять да еще и дешево...
Только если та кнопа "вторичная" - управляет силовым ключом с самоподхватом от МК и дальнейшим отслеживанием уровня на коллекторе упавляемого от МК транзистора.
Но там разница между механическим КЗ и открытым переходом настолько мизерная - логическими уровнями вряд-ли можно оперировать...
Разве что компаратор и/или АЦП?...

Только если та кнопа "вторичная" - управляет силовым ключом с самоподхватом от МК и дальнейшим отслеживанием уровня на коллекторе упавляемого от МК транзистора.
Но там разница между механическим КЗ и открытым переходом настолько мизерная - логическими уровнями вряд-ли можно оперировать...
Разве что компаратор и/или АЦП?...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
кнопочка там ничего такого не делает, тупо рвет питание МК.
а вот программа МК уже весьма и весьма хитро сделана: в активном режиме "заряжается" встроенный конденсатор схемы выборки-хранения АЦП путем выдачи на один из портов высокого уровня.
если питание выключается ненадолго - этот конденсатор разрядиться не успевает, и АЦП на этом входе что-то намеряет. если питание отключить на несколько секунд - конденсатор разрядится и АЦП покажет 0.
алгоритм переключения режима таков: после подачи питания включается сохраненный ранее в EEPROM. если просто выключить питание - так все и останется. а вот если выключить-включить питание быстро, то МК это обнаруживает по вышеописанному алгоритму и переключает режим, сохраняя его в EEPROM.
можно еще использовать аналогичный эффект емкости выводов питания - нескольких пикофарад хватает, чтобы за долю секунды содержимое ОЗУ не усело попортиться... но это игра на грани фола.
а вот программа МК уже весьма и весьма хитро сделана: в активном режиме "заряжается" встроенный конденсатор схемы выборки-хранения АЦП путем выдачи на один из портов высокого уровня.
если питание выключается ненадолго - этот конденсатор разрядиться не успевает, и АЦП на этом входе что-то намеряет. если питание отключить на несколько секунд - конденсатор разрядится и АЦП покажет 0.
алгоритм переключения режима таков: после подачи питания включается сохраненный ранее в EEPROM. если просто выключить питание - так все и останется. а вот если выключить-включить питание быстро, то МК это обнаруживает по вышеописанному алгоритму и переключает режим, сохраняя его в EEPROM.
можно еще использовать аналогичный эффект емкости выводов питания - нескольких пикофарад хватает, чтобы за долю секунды содержимое ОЗУ не усело попортиться... но это игра на грани фола.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
У меня будет в качестве питания танталовый кондер и керамика от Step-up'а. А констант у меня не много, поэтому в пихну проверку содержимого - не соответствует - сброс в начало выбора...
Да, хотел поиграться с watchdog, чтоб таймер отключить, так в симуляторе, что avr, что в протеусе не срабатывает. Использую attiny85, в WDT включил единицу на прерывание и включение (wde), так после 2048 циклов, флаг не поднимается...
Да, хотел поиграться с watchdog, чтоб таймер отключить, так в симуляторе, что avr, что в протеусе не срабатывает. Использую attiny85, в WDT включил единицу на прерывание и включение (wde), так после 2048 циклов, флаг не поднимается...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Так опять же вариант с управляемым силовым ключем и/или раздельным питанием нагрузки и МК напрашивается...
В смысле такового уже ЗА кнопкой...
А там и чего по типу ионистора... да диодика шоттки...
Периферия в симуляторах требует внимательного ознакомления с соответствующими разделами хелпа - что-то поддерживается , что-то нет и все относительно каждого из конкретного кристалла по-своему...
Читать надо...

В смысле такового уже ЗА кнопкой...
А там и чего по типу ионистора... да диодика шоттки...
Периферия в симуляторах требует внимательного ознакомления с соответствующими разделами хелпа - что-то поддерживается , что-то нет и все относительно каждого из конкретного кристалла по-своему...
Читать надо...
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
2048 циклов чего? у WDT свой тактовый генератор никак не связанный с тактированием МК.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Выставляется битами WDP. Ими реализована, когда произойдет прерывание.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Это хорошо что выставляется. А сам WDT включен? А эти 2048 циклов вы где отсчитали?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
в мануале: 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....
разобрался, осциллятор собаки в attiny25,45,85 работает на 128kHz, думал, 1 MHz.
Все равно не понятно, как посчитать время до прерывание в авр. У меня 1 MHz, Number of WDT Oscillator Cycles - 2K (2048) cycles и срабатывает прерывание на 1050 ms....


