Коллеги, помогите, пожалуйста, с очередной проблемой с MD-328D (LGT8F328D).
Пробую писать код на чистом C без использования Arduino IDE.
Инициализацию МК сделал аналогично загрузчику из Arduino IDE, но при этом не могу понять почему при срабатывании WDT контроллер намертво зависает так что даже не помогает кнопка сброса. Только ресет по питанию. Причем одна и та же программа ведет себя по разному в зависимости от того запускаю я её совместно со своим загрузчиком или загрузчиком из Arduino IDE.
MD-328D (LGT8F328D):
Загрузчик из Arduino IDE + моя программа = корретная работа.
Мой загрузчик + моя программа = зависание при срабатывании WDT.
Моя программа без загрузчика = зависание при срабатывании WDT.
ATmega328P:
Загрузчик из Arduino IDE + моя программа = корретная работа.
Мой загрузчик + моя программа = корретная работа.
Моя программа без загрузчика = корретная работа.
И еще один интересный момент. Если перезагрузку через сброс по WDT заменить на программный сброс (бит SWR в регистре VDTCR), то контроллер перестает зависать.
Также контроллер всегда зависает после перепрошивки по SWD и залитая программа стартует лишь после передергивания питания.
Может кто сталкивался с таким странным поведением данного контроллера?
Приложенные файлы:
md328d.rar - загрузчик из Arduino IDE.
MD-328D_AVRMINIBLD.rar - загрузчик под MD-328D.
MD-328D_AVRMINIAPP.rar - программа под MD-328D.
ATmega328_AVRMINIBLD.rar - загрузчик под ATmega328P.
ATmega328_AVRMINIAPP.rar - программа под ATmega328P.