AvrStudio ругается
avrstudio ругается выдает ошибку: "AVR Simulator: Uninitialized stack pointer used at 0x0043" в контроллерах новичок особенно в СИ, код и подключение брал отсюда http://robot-develop.org/archives/162
- Реклама
- Сообщения: 762
- Зарегистрирован: Чт мар 04, 2010 12:38:27
Где-то читал, что стек при программировании на C инициализировать не надо. На ASM'е надо.
А такая ошибка может появляться, если версия AVR Studio более ранняя, а компилятор более поздней версии или наоборот...
Но скорее всего, следует проверить:
AVR model в Project-Configuration и Debug-Select Platform and device. И там, и там нужно выбрать модель Вашего микроконтроллера (ATMEGA8, ATMEGA16 и т.д.). Какой у Вас МК?
А такая ошибка может появляться, если версия AVR Studio более ранняя, а компилятор более поздней версии или наоборот...
Но скорее всего, следует проверить:
AVR model в Project-Configuration и Debug-Select Platform and device. И там, и там нужно выбрать модель Вашего микроконтроллера (ATMEGA8, ATMEGA16 и т.д.). Какой у Вас МК?
Против лома - нет приема! ...разве что, Закона Ома!
Лом ужасен и велик! Но... хороший проводник!
Лом ужасен и велик! Но... хороший проводник!
- Сообщения: 762
- Зарегистрирован: Чт мар 04, 2010 12:38:27
Проверьте еще раз. В самом начале, при создании проекта Вы выбираете:
Debug platform: AVR Simulator, Device: ATmega16,
затем залезаете в Debug - Select Platform and Device и выбираете Debug platform: AVR Simulator, Device: ATmega16
Debug platform: AVR Simulator, Device: ATmega16,
затем залезаете в Debug - Select Platform and Device и выбираете Debug platform: AVR Simulator, Device: ATmega16
Против лома - нет приема! ...разве что, Закона Ома!
Лом ужасен и велик! Но... хороший проводник!
Лом ужасен и велик! Но... хороший проводник!
- Сообщения: 762
- Зарегистрирован: Чт мар 04, 2010 12:38:27
Скачал LCD.rar, распаковал откры проект в AVR Studio. в установках проекта Atmega32! Но каким то макром удалось все поменять и Debug запустился всего с 3-мя варнингами... никаких ошибок о стеке небыло.
Против лома - нет приема! ...разве что, Закона Ома!
Лом ужасен и велик! Но... хороший проводник!
Лом ужасен и велик! Но... хороший проводник!
- Реклама
Последний раз редактировалось mastech Пн июл 25, 2011 14:35:17, всего редактировалось 4 раза.
- Сообщения: 762
- Зарегистрирован: Чт мар 04, 2010 12:38:27
Что самое смешное, после того, как я закрыл АВРстудию и открыл ее заново, выбрал проект LCD (Уже с изменениями), при компиляции не было ни варнингов ни ошибок, типа все ок!
Против лома - нет приема! ...разве что, Закона Ома!
Лом ужасен и велик! Но... хороший проводник!
Лом ужасен и велик! Но... хороший проводник!
- Сообщения: 762
- Зарегистрирован: Чт мар 04, 2010 12:38:27
Лучше сделайте такие скрины:
У меня вот так:
Против лома - нет приема! ...разве что, Закона Ома!
Лом ужасен и велик! Но... хороший проводник!
Лом ужасен и велик! Но... хороший проводник!
чудеса скачал архив ее раз он взял и заработал
по идее теперь код рабочий? просто сейчас на работе проверить не могу.
по идее теперь код рабочий? просто сейчас на работе проверить не могу.
Ну вообще не все то, что успешно откомпилилось, является рабочим кодом. 
Но так как программа взята из архива к инет-статье, то доверие она внушает. И раз удалось откомпилировать и получить hex файл, то процентов на 98 код рабочий.)
Но так как программа взята из архива к инет-статье, то доверие она внушает. И раз удалось откомпилировать и получить hex файл, то процентов на 98 код рабочий.)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

теперь следующий вопрос. а как написать на второй строчке какой командой?
если не затруднит кусок кода.
если не затруднит кусок кода.
Э-э-э... Что?
Человек имеет в виду как вывести во второй строке индикатора что-либо. Подскажите, а то мне бежать пора. 
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Ну тогда, судя по даташиту, нужно перейти на ячейку с адресом 0х40.
Судя по вышевыложенным исходникам, это делается так:
Дальше выводите текст как обычно.
Судя по вышевыложенным исходникам, это делается так:
Код: Выделить всё
hd44780_outcmd( HD44780_DDADDR(0x40) );
Ну а где вам нужно написать на второй строчке?
- Сообщения: 762
- Зарегистрирован: Чт мар 04, 2010 12:38:27
int main()
{
// configuration
lcd_init();
stderr = &lcd_str;// НЕ ТРОГАТЬ!
fprintf(stderr, "Hello world!\n");
hd44780_outcmd( HD44780_DDADDR(0x40) );
fprintf(stderr, "Hello mastech\n");
}
{
// configuration
lcd_init();
stderr = &lcd_str;// НЕ ТРОГАТЬ!
fprintf(stderr, "Hello world!\n");
hd44780_outcmd( HD44780_DDADDR(0x40) );
fprintf(stderr, "Hello mastech\n");
}
Против лома - нет приема! ...разве что, Закона Ома!
Лом ужасен и велик! Но... хороший проводник!
Лом ужасен и велик! Но... хороший проводник!
с таким вариантом выводит только вторую строчку(Hello mastech) на первой строчке дисплея.
Попробуй поставить до
hd44780_outcmd( HD44780_DDADDR(0x40) );
это:
hd44780_wait_ready(0);
или
hd44780_wait_ready(1);
hd44780_outcmd( HD44780_DDADDR(0x40) );
это:
hd44780_wait_ready(0);
или
hd44780_wait_ready(1);
Код: Выделить всё
hd44780_wait_ready(1);
hd44780_outcmd( HD44780_DDADDR(0x40) );



