Danke für den Tipp hat aber leider nichts geändert.
Ich erhalte immer noch nur einen leeren String.
Danke für den Tipp hat aber leider nichts geändert.
Ich erhalte immer noch nur einen leeren String.
Inzwischen habe ich es geschafft das er in den ISR springt jetzt ist aber trotzdem noch das Problem das ich immer einen leeren String zurück bekomme.
Es lang an diesem Teil der Initialisierung das der Interrupt nicht funktioniert hat:
TCC0.CTRLA = TC_CLKSEL_DIV1024_gc;
TCC0.CTRLB = 0x00;
TCC0.INTCTRLA = 0x03;
TCC0.PER= 0x85ED;
hab das jetzt erst mal raus gelöscht da ich es hier nicht brauche.
Kann mir bitte jemand sagen wie ich das das Auslesen das USARTE0.Data Registers richtig mache ?
Wenn ich das richtig sehe muss du ein Array anlegen für die empfangegen daten da du ja sonst immer die Variable überschreibst und der Letzte wert im String ist halt eine Null:
Also ich würde es so machen:
#define BUFSIZE 20
uint8_t ring[BUFSIZE];
volatile uint8_t buf_in = 0;
uint8_t buf_out = 0;
ISR(USARTE0_RXC_vect)
{
ring[buf_in++] = USARTE0.DATA; // Usart einlesen und in data_Empfangen schreiben
buf_in %= BUFSIZE;
}
in der Main dann
if (buf_in != buf_out)
{
Send_UART(ring[buf_out++]);
buf_out %= BUFSIZE;
}
Jetzt musst du nur noch Sicher stellen das dein String kleiner ist als BUFSIZE
LG
Bin gerene bereit Hilfe zu leisten, freue mich wenn auch mir geholfen werden kann.
Entschuldigt bitte Rechtschreibfehler falls welche vorkommen
Lesezeichen