| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > возврат из функции не по адресу в AVR studio (С) |
| Автор: kot34 23.10.2008, 15:08 | ||
Написал(1/2содрал) драйвер для управления жк знакосинтезирующим индикатором. Оформил в виде програмки и тестирую. МК - mega64 ЖК - 16100 (на hd44780(предположительно)) При отладке в АВстудии без подключения к МК программа работает без ошибок(не выдает). При отладке с подключенным МК(JTAG интерфейс) - отладчик возвращается из первой же функции(MainIni();) по ложному адресу(в Program counter адрес ~ 0x001000, а вызывалась функция с адреса ~ 0x0000b9) Так происходит с любой первой функцией. В чем может быть ошибка/проблема ?
|
| Автор: Mazzi 23.10.2008, 15:20 |
| Указатель стека правильно настроен? |
| Автор: kot34 23.10.2008, 16:20 | ||
Так и есть:
avrstudio записывает в него 0x10ff - у mega64 это граница озу => дело не в SP ? |
| Автор: Mazzi 23.10.2008, 16:53 |
| Запустив отладку перейди в окошко дизассемблированного кода и посмотри что выполняется сразу после ресета. В атмеге64 указатель стека располагается по адресам 0x3E (0x5E) SPH (Старший байт указателя) 0x3D (0x5D) SPL (младший байт указателя) Указатель следует настраивать на конечные адреса ОЗУ. |
| Автор: kot34 23.10.2008, 18:01 |
| Попробовал задать другой адрес для указателя стека, и методом научного тыка выяснил программа работает при установки SP на адреса менее 0x1000 ммм... это здорово, но расходится с офф. версией границы озу |
| Автор: kot34 24.10.2008, 13:30 |
| Дело было в том что стоял режим совместимости с ATmega103 - в нем нет памяти под доп регистры в/в => граница озу = 0х1000 тема закрыта. |