[an error occurred while processing this directive]
Наиболее популярные грабли:
(«Телесистемы»: «Конференция «Микроконтроллеры и их применение»»)
- использованы "запрещенные" PUSH/POP. Если CPU объявлен как Tiny22, то и ругаться никто не станет.
- неявно вложенные прерывания. В ISR сбросил флаг I - и пожалуйте, прерывай эту ISR на здоровье, а если еще из подпрограммы - то совсем весело.
- RET/RETI без RCALL. Стек "недополнится", т.е. переполнится наоборот.
- игрушки с записью в "reserved" регистры. Одни могут оказаться собственно стеком, другие - указателем. Низзьзя.
- шалости Watchdog Timer. Про него забыли, а он знай тявкает. Люди думают, что стек мудит, а это собачка исправно периодически отправляет всех на х000.
Кстати, что за чушь по поводу AStudio3? 3.56 прекрасно поддерживает Tiny15, а уж отладчик-симулятор там присутствует первозданно (собственно, Студия и есть отладчик).
Ответы
- Ответ: Из перечисленного - причина может быть только WDT (нужно проверить). Остального - просто нет из-за примитивности программы. Про AVR studio - см. ниже. — Oldmanoff (16.04.2003 19:20, пустое)
- Вот только залезть в сам стек либо его указатель (записью/чтением в/из регистров) в пятнашке уж никак низзя (даже если очень захотеть) :) — Щ.С. (16.04.2003 19:11, пустое)
- А переполнить его можно? — L.A. (16.04.2003 20:08, пустое)
- label: RCALL label ;) — BLACKEAGLE (16.04.2003 20:27, пустое)
- Я в смысле глубины стека(+) — L.A. (16.04.2003 20:40, 209 байт)
- Не кольцевой, но со стопором. Пихаем туда 1,2,3,4, выпихиваем 4,3,2,2,2...,2, т.е. 3 последних запиханных. — BLACKEAGLE (16.04.2003 21:19, 198 байт)
- Вероятно. Я и сам не пробовал, но десятки "reserved" SFR наводят на крамольную мысль ;) — BLACKEAGLE (16.04.2003 19:20, пустое)
E-mail:
info@telesys.ru