Hallo Wissende,
in einem kleinen Enpfangsmodul mit einem ATtiny2313 läuft untenstehendes
Programm. Beachtet bitte die zwei Zeilen innerhalb der While-Schleife
ganz unten. Die empfangenen 16 Zeichen werden im Display korrekt
angezeigt, => ISR korrekt. Kommentiere ich aber nun Zeile A aus wird das
Display nicht mehr aktualisiert obwohl die LED an PD2 - 0-aktiv - kurz
an und wieder aus geht.
Jetzt frage ich mich schon eine Weile wo der Bug versteckt ist? Compiler
ist der gcc der im Atmel Studio 7 integriert ist.
Wo liegt hier das Problem?
Danke
Tom
schnipp---anfang
#define STX 0x7E //->
#define ETX 0x7F //<-
#define LF 0x24 //$
unsigned char RxDByte = 0;
unsigned char RxDCnt = 0;
unsigned char EmpfangOK = 0;
char Zeile0[16];
char Zeile1[16];
ISR (USART_RX_vect)
{
RxDByte = UDR;
switch (RxDByte)
{
case STX: RxDCnt=0; EmpfangOK = 0; PORTD &= ~(1<<PD2);
break;
case ETX: EmpfangOK = 1; PORTD |= (1<<PD2);
break;
default: Zeile1[RxDCnt] = RxDByte; RxDCnt++;
}
}
int main(void)
{
DDRD = DDRD | 0b11111100;
PORTD = PORTD | 0b00000111;
UBRRH = 0;
UBRRL = 12;
UCSRB |= (1<<RXCIE) | (1<<RXEN);
lcd_gotoxy(0,1); lcd_puts(" RxD ? ");
sei();
RxDCnt = 0; EmpfangOK = 0;
while (1)
{
if (EmpfangOK == 1) { PORTD |= (1<<PD2); } //Zeile A
if (EmpfangOK == 1) { lcd_gotoxy(0,1); lcd_puts(Zeile1); EmpfangOK =
0;}
}
}
schnipp---ende