Atmel Studio 7 und ATtiny2313

(Firma: privat) #4472982
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren