Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация меню
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
maxx™
Хочу сделать простенький таймер. Есть at90s8515, индикатор, DS18B20. Время считает и температуру показывает, но вот при прикручивании меню, при воде в это самое меню наблюдаются различные глюки, зачастую с рестартом контроллера.
Исходник меню вот:
http://www.maxx.net.ua/avr/menu.c
Сама програмка:
http://www.maxx.net.ua/avr/main.c

В чем может быть проблема?
Dog Pawlowa
Цитата(maxx™ @ Nov 22 2007, 19:49) *
В чем может быть проблема?

Обычная причина в подобных случаях - переполнение стека.
maxx™
Цитата(Dog Pawlowa @ Nov 22 2007, 18:57) *
Обычная причина в подобных случаях - переполнение стека.


Таки где-то с указателями я накосячил. Точно помню что год назад на Atnega16 это работало.
В общем рабочая функция для показа меню в моем случае, если кому интерестно:
void test(MP p, int n)
{
void (*fppin)(int);
void (*fpp)(void);
uint16_t addr;
lcd_clrscr();
tempMenu = pgm_read_word_near(&(p->keys[n]));
if (pgm_read_word_near(&(tempMenu->keys[0])) == &MenuNull) {
fpp = pgm_read_word_near(&(tempMenu->fp));
fpp();
fppin = pgm_read_word_near(&(p->fpin));
fppin(0);
}
else{
if (CurMenu == tempMenu) {
fpp = pgm_read_word_near( (uint16_t) & (CurMenu->fp) );
fpp();
fppin = pgm_read_word_near( (uint16_t) & (CurMenu->fpin) );
fppin(0);
}
else{
CurMenu = tempMenu;
fppin = pgm_read_word_near(&(tempMenu->fpin));
if (fppin != NULL){
fppin(1);
}
}
}
lcd_gotoxy(0,1);
lcd_puts(lcd_temp);
strcpy_P(&lcd_temp, pgm_read_word_near((uint16_t)&(CurMenu->str1)));
lcd_gotoxy(0,0);
lcd_puts(lcd_temp);
}
aag
А код программы точно такойже, как для 16-ой меги? Ничего не меняли?
maxx™
Цитата(aag @ Nov 24 2007, 09:13) *
А код программы точно такойже, как для 16-ой меги? Ничего не меняли?

Вроде ничего не менял, только winavr другой версии был.
Вот к примеру
lcd_puts_p("ok"); работало, теперь работает такая конструкция: lcd_puts_p(PSTR("ok"));
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.