Во-первых, в нормальных МК есть способы выполнить софтовый резет без активации собаки.
Во-вторых, если уж через жопу делать, то это красивше было бы в static inline запихнуть.
Ну, а в-третьих, у нормальных людей собака запускается сразу. Как можно без нее работать? Мало ли, что зависнет… Поэтому если нет пункта 1), то перезагрузка выполняется обычным
while(1){nop();}
Ты не путай обычные функции со статик инлайнами и макросами! В первом случае тратится приличное количество тактов на переписывание стека и переход по адресу функции. Во втором все проще. Но с точки зрения кошерности красивей статик инлайн.
я ни чего не путаю! очевидно же из вопрос: ... что-то тут не так ...
и макросами ... все проще ...
что там проще? подводных камней я не вижу, по идее макрос без изменений заменяется/вставляется в «код портянки», разве не так?
в нормальных МК есть
речь идет об «нормальных мк» или в ссылке что-то об этом говориться, кроме как
CAUTION! Older AVRs will have the watchdog timer disabled on a reset
+
софтовый резет без активации собаки
это который goto 0?
на авр-фрике это не раз обсуждалось, есть подводные камни, сейчас точно не помню, но что-то не до конца переинициализируется в таком случае (есть выкусы в текстах, нет под рукой)
давайте, пожалуйста, с уточнениями, выкусами из первоисточников! спасибо
Нет лишних тиков на работу со стеком при вызове функции. Ну, а если использовать static inline, то нет 100% гарантии, что функция будет заинлайнена! А вот макрос дает 100% гарантию!!!
речь идет об «нормальных мк»
Аврки и прочее говно от микрочипоатмеля к нормальным МК не относится!
Older AVRs will have the watchdog timer disabled on a reset
Вообще-то, если сообака по умолчанию на старте активирована, это не очень-то нормально… Ты при старте должен всю периферию настроить. А как настроил, запускаешь собаку. И если что-то у тебя по вине кривых рук зависнет, то железка не станет кирпичом на какое-то время, а перезагрузится и продолжит работу.
А насчет "нормальных" я имел в виду то, что резет выполняется одним ассемблерным вызовом! Потому как блоку резета пофиг: ты подал нужный уровень на ногу reset, или же на вход собственно блока сброса.
это который goto 0?
Ты не знаешь, что такое софтовый резет? Это то же самое, что аппаратный, но вместо нажатия кнопочки ты запускаешь нужную ассемблерную инструкцию. А переход в начало — не совсем то же самое.
авр-фрике
Ты бросай это дело. Не опускайся до уровня абдуринщиков. Аврки и пики - говно!
WDTO_15MS константа для разных МК разная, может вообще не быть, лучше функцию сброса поместить в тот же h файл что и константы определяющие все что относится к watchdog, как вариант
Советую разупороться тебе. Прежде всего, сравни тупую аврку хотя бы с STM8: цена и качество. Тогда тебе станет понятно, что пользоваться в 21 веке продукцией микрочипоатмеля может только динозавр с оговнявшимися мозгами.
Зачем? Идиотизм же делать, как в СССР — тупо копировать чужое.
У китайцев хорошо получается делать дешевые STM8 (STM8S001, ЕМНИП, от трех рублей за штучку что ли). В России никогда не получится так дешево железо делать (апофеоз китайцев - собственные МК по типу STM32F103, но с улучшенной периферией и по 20 рублей за штучку).
Аврки лидируют лишь из-за того, что на их базе стали делать абдурины. Если бы не толпа дебилов, использующих абдурины, аврки уже можно было бы закопать!
норм?
Наверное норм. Норм для чего? Я пользовался 373 камнем и 746 с аппаратным FPU для небольшой обработки сигнала. Если AVR нужен чтобы максимально снизить потребление (батарею экономить) стоит посмотреть на stm камни с буквой L. Вообще подобрать камень удобно можно в утилите STM32CubeMX, только STM8 там нет.