Z_h_e писал(а):Условие окончания цикла было равенство SP нулю. Цикл отрабатывался нормально...
Я не знаю что за МК проходил тестирование и какой именно был цикл (точнее реализация условия выхода), но регистр SP и регистр флагов находятся ближе всего к оперативке, так что не удивительно, что первый занулялся раньше, чем остальные регистры ввода-вывода.
Добавлено after 9 minutes 5 seconds:
trofim2 писал(а):Уважаемые коллеги.
Можно-ли расположить стек в регистрах АТмега48?
Памяти не хватает.
У этого микроконтроллера есть две штуки
General purpose I/O register. Так что если вам нужен стек на один или два байта, то его наверное (надо проверять!) можно расположить в этих регистрах. С остальными регистрами будут следующие проблемы:
1) регистр не имеет прямого доступа (кешируется, например)
2) регистр имеет только однонаправленный доступ
3) регистр относится к управлению ядром МК, тактированием МК или к модулю который будет использоваться
4) в регистре реализованы не все биты
5) изменение содержимого регистра безоговорочно влияет на поведение портов МК
6) трудно найти непрерывную последовательность регистров не попадающих под случаи выше.
7) как уже выше сказали, стек может не иметь доступа к регистрам ввода-вывода (проверка на дурака зашита в железо)
Если не хватает памяти, то не лучше ли взять какие-нибудь ATmega88 или ATmeg168? Если планируется осуществлять поддержку проектируемого устройства, то лучше иметь запас по оперативке и ПЗУ, чтобы не пришлось потом перепаивать чип.