Gast
#6619
Hallo zusammen,
kann mir jemand sagen warum der Code nicht funktioniert??
Problem ist, dass die Interruptroutine mehrmals ausgeführt wird, obwohl
ich nur ein Zeichen über die Serielle Schnittstelle sende.
Meine Vermutung war, dass die Variable "UART_ReceivedChar " nicht
richtig funktioniert obwohl es als volatile deklariert ist
(Codeoptimierung)
deshalb die Frage auch wie ich die Codeoptimierung ausschalten kann.
SIGNAL(SIG_UART_RECV)
{
/* Indicate that the UART has received a character */
UART_RxChar = inp(UDR);
gemessen_2 = (gemessen_2 + 1);
UART_ReceivedChar = 1;
cli();
/* Store received character */
}
int main (void) {
for (;;) {
sei();
while(!UART_ReceivedChar)
UART_ReceivedChar = 0;
UartPrintF ("test %05d ", gemessen_2);
gemessen_2=0;
}}