Witam,
w poniższym programie występują niepożądane resety, sprawdzałem już wartość rejestru MCUCSR i tuż po resecie ma wartość 0 czyli jest to reset programowy. zorientowałem się, że źródłem jest wywołanie instrukcji odpowiadającej za przerwanie komparatora analogowego (w oknie disassembly adres 0x00000020), które jest wyłączone... nie wiem co powoduje skok do tego adresu.
Program wykonywany na rzeczywistym procku, debug przez jtag.
Kod:
def.h
progmemdata.c
Ma ktoś z was pomysł co może być źródłem tych problemów, czas od uruchomienia do resetu jest nieregularny, czasem poniżej sekundy najczęściej kilka sekund, ale raz czekałem około minuty.
edit:
Gdy wyłączyłem przerwania zarówno poprzez brak sei(); jak i przez
to resety nie występują, więc pewnie trzeba się przyjrzeć procedurze przerwania.
w poniższym programie występują niepożądane resety, sprawdzałem już wartość rejestru MCUCSR i tuż po resecie ma wartość 0 czyli jest to reset programowy. zorientowałem się, że źródłem jest wywołanie instrukcji odpowiadającej za przerwanie komparatora analogowego (w oknie disassembly adres 0x00000020), które jest wyłączone... nie wiem co powoduje skok do tego adresu.
Program wykonywany na rzeczywistym procku, debug przez jtag.
Kod:
Kod: C / C++
def.h
Kod: C / C++
progmemdata.c
Kod: C / C++
Ma ktoś z was pomysł co może być źródłem tych problemów, czas od uruchomienia do resetu jest nieregularny, czasem poniżej sekundy najczęściej kilka sekund, ale raz czekałem około minuty.
edit:
Gdy wyłączyłem przerwania zarówno poprzez brak sei(); jak i przez
//UCSRB=(1<<RXCIE)|(1<<RXEN);
UCSRB=(1<<RXEN);to resety nie występują, więc pewnie trzeba się przyjrzeć procedurze przerwania.
