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

OP #2591444
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
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.
OP #2592050
Da hast du recht,

daran hatte ich diesmal irgendwie nicht gedacht.

Das Problem war, das ich in dem Receive Interrupt des UART Werte über 
TWI abgefragt habe. Das scheint ihm nicht gefallen zu haben.

Hab das rausnehmen können, jetzt funktionierts wieder.

Danke

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.