Przy załączeniu napięcia atmedze na wyświetlaczu zamiast oczekiwanego napisu pojawiają się randomowe śmieci. Przy zwyczajnym resecie wszystko jest ok. Z resztą najlepie to widać na filmiku:
Podejrzewam, ze to jest związane z tym, że atmega startuje zanim jeszcze napiecie się ustabilizuje. Ten sam efekt był na M32 i M128. Zarówno na płytce prototypowej którą sam lutowałem jak i na komercyjnej ewaluacyjnej.
Napis który sie ma pojawić jest to string z pamięci programu. Mam tych stringów we flashu kilka zdefiniowanych i zauważyłem, ze te śmieci to są często fragmenty innych stringów. Tak jakby funkcja odczytująca stringi z pamięci programu nie trafiała w odpowiednie miejsce. Z resztą tak to wygląda w kodzie:
Jak się tego efektu pozbyć?
Podejrzewam, ze to jest związane z tym, że atmega startuje zanim jeszcze napiecie się ustabilizuje. Ten sam efekt był na M32 i M128. Zarówno na płytce prototypowej którą sam lutowałem jak i na komercyjnej ewaluacyjnej.
Napis który sie ma pojawić jest to string z pamięci programu. Mam tych stringów we flashu kilka zdefiniowanych i zauważyłem, ze te śmieci to są często fragmenty innych stringów. Tak jakby funkcja odczytująca stringi z pamięci programu nie trafiała w odpowiednie miejsce. Z resztą tak to wygląda w kodzie:
//MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN--MAIN
portSHORT main(void)
{
//Inicjalizacja LCD-------------------------------
LCD_Initalize();
_delay_ms(100);
//Queues------------------------------------------
KeybBuffer = xQueueCreate(5, sizeof(uint8_t));
ProgramAndMode = xQueueCreate(1, sizeof (struct ProgMode *));
MeasureQueue = xQueueCreate(3, sizeof(struct ADCstruct * ));
Tick = xQueueCreate(1, sizeof(uint8_t));
//Pozostałe inicjalizacje-----------------------------------
//i2cinit();
init_usart();
string_usart_P(PSTR("RESET\n\r"));
//LCD_WriteText("Inicjalizacja");
//_delay_ms(300);
vPwmChargeInit();
vMeasureInit();
vPwmDischargeInit();
SelectedLanguage = eeprom_read_byte(&Language);
//Start Tasks-------------------------------------
//Stringi i tablice stringów w PROGMEM:
static char Settings[][11] PROGMEM={{"Ustawienia"}, {"Settings"}};
static char Lang[][8] PROGMEM={{"Polski "}, {"English"}};
static char LanguageSelect[][16] PROGMEM={{"Wybierz jezyk"}, {"Select Language"}};
static char ProgramSelect[][5] PROGMEM={{"NiCd"}, {"NiMh"}, {"LiPo"}, {"Pb "}};void LCD_WriteText_P(volatile char * text)
{
while(pgm_read_byte( text))
LCD_WriteData(pgm_read_byte( text++));
}Jak się tego efektu pozbyć?