mehrere Bytes senden

OP #964686
Lesenswert?

hi,
ich möchte gerne mehr als 2 Bytes über UART an die Visaschnittstelle 
übertragen. Es kommen aber immer nur 2Bytes an.
Kann mir jemand sagen warum?


1
putTemp:
2

3
  lds  r16,UCSR0A
4
  sbrs  r16,5  ; Senderegister nicht leer?
5
  ret    ; ... dann Rücksprung
6
  ;rjmp  putTemp    ;anstatt ret
7
  sts  UDR0,r18
8

9
  ;lds  r16,UCSR0A
10
  ;sbrs  r16,5  ; Senderegister nicht leer?
11
  ;ret    ; ... dann Rücksprung
12
  sts  UDR0,r19
13

14
  ;lds  r16,UCSR0A
15
  ;sbrs  r16,5  ; Senderegister nicht leer?
16
  ;ret    ; ... dann Rücksprung
17
  sts  UDR0,r20
Gast #965380
Lesenswert?

Die Befehlsfolge

  lds  r16,UCSR0A
  sbrs  r16,5  ; Senderegister nicht leer?
  ret

überspringt den ret-Befehl, wenn der Puffer geleert ist.

Du musst das ändern in eine Schleife, die so lange loopt, bis das 
Senderegister frei geworden ist.

  repeatUntilReady:
  lds  r16,UCSR0A
  sbrs  r16,5  ; Senderegister nicht leer?
  jmp repeatUntilReady
  sts  UDR0,r18

Oder andersrum, ich kanns gerade nicht ausprobieren.
Schau halt in anderen Programmen nach, wie es dort gemacht wird.

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