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