UART -> bytes richtig empfangen.

OP #2160578
Lesenswert?

Hallo,

ich habe das Problem das meine 3 Bytes nicht wirklich sauber empfangen 
werden. Mit dem einen AVR sende ich 3 Bytes, und mit einem anderen AVR 
möchte ich diese Empfangen. Empfangen wird meist das Mittlere Byte, das 
erste und letzte Byte sind meist 0. Hat einer ne Idee wo mein Fehler 
liegt. Der Code ist übrigens aus dem UART Tutorial von hier. Meine ISR 
sieht im moment so aus.
1
#define UART_MAXSTRLEN 2
2
volatile uint8_t uart_str_complete = 0;
3
volatile uint8_t uart_str_cnt = 0;
4
volatile char uart_string[UART_MAXSTRLEN] = "";
5

6
ISR(USART_RX_vect){
7

8
unsigned char nextChar;
9

10
nextChar = UDR;
11

12
if (uart_str_complete == 0)
13
{
14
  if (uart_str_cnt < UART_MAXSTRLEN)
15
  {
16
    uart_string[uart_str_cnt] = nextChar;
17
    uart_str_cnt++;
18
  } 
19
  else
20
  {
21
    uart_str_cnt = 0;
22
    uart_str_complete = 1;
23
  }
24
}
25
  
26
}
OP #2161521
Lesenswert?

Stimmen denke ich mal schon. Am Arduino stell ich ja nix rum, und am 
at90 hab ich das setbaud.h genommen. beide auf 9600 eingestellt, und 
sollte auch klappen. Der Logicanalyzer ist auf async seriell eingestellt 
(8n1), und spuckt keine Timingfehler aus.

Ich Empfange ja die Daten und zeitweise Stimmts ja auch, aber immer 
wieder mit einbrüchen, das die ganze cpu lahm gelegt ist. HAbe noch ein 
bild angehängt.


Die oberen 3 Zeilen sind das PWM-signal, mit Aussetzern wenn der 
Empfangene array verhauen wird. Im 2. Bild habe ich mal reingezoomt, da 
sieht man das der Datensatz verschoben ist. Die 99 im ersten Byte gehört 
nicht dazu, das wird als Anfrage gesendet.
Angehängte Dateien:

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