Störung nach überscheidung von eingehenden und ausgehenden Daten via UART

OP #2591444
Lesenswert?

Hallo,

ich verwende die UART Schnittstelle des ATmega8.

in einer Endlosschleife in der main() wird jede Sekunde ein 37 Byte 
großes Datenpaket an einen Rechner geschickt.

Zudem wird ein "USART_RXC_vect" verwendet um eingehende Daten entgegen 
zu nehmen.

Treffen nun Daten ein während der ATmega8 versucht Daten raus zu 
schicken, kehrt er nicht mehr in die main() zurück.

-> Daten können weiter zum ATmega8 geschickt werden (Der Interrupt 
funktioniert weiterhin)

-> Daten werden aber nicht mehr vom ATmega8 versendet (Er macht nichts 
mehr was in der main() steht)


*Initialisierung des UART:
1
    UBRRH |= UBRR_VAL >> 8;
2
    UBRRL |= UBRR_VAL & 0xFF;
3
    
4
    UCSRB |= (1<<RXCIE) | (1<<RXEN) | (1<<TXEN);


*Funktion zum senden von Daten in der Endlosschleife:
1
while(1)
2
{
3
    /* Wait for empty transmit buffer */
4
    while (!(UCSRA & (1 << UDRE)));
5

6
    /* Start transmittion */
7
    UDR = data;
8

9
    _delay_ms(1000);
10
}


*Interruptfunktion zum empfangen von Daten:
1
ISR(USART_RXC_vect)
2
{
3
    temp_data = UDR;
4
}

Hat jemand eine Idee woran das liegen könnte?

Wichtig bei der Lösung ist nur das die zu EMPFANGEN Daten sicher 
ankommen, die zu SENDENEN Daten können auch verloren gehen, da sie nach 
na sekunde erneut abgefragt werden
#2591991
Lesenswert?

Anthony Swofford schrieb:
> War hier wohl doch etwas zu kurz dargestellt.

Das kannst du ganz leicht testen.

Nimm deine 4 Fragmente aus deinem ersten Post, schraub sie zu einem 
kompletten Programm zusammen und sieh nach, ob du immer noch das Problem 
hast.

Wenn nicht, ist es sehr wahrscheinlich, dass dein eigentliches Problem 
ganz woanders sitzt und du nur aufgrund der Symptome die UART 
beschuldigst.

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