Zahl >1Byte über USART-Interrupt auswerten

Gast #1976769
Lesenswert?
• ▲
▼
Hallo,
ich sende aus meiner SW ein High- und LowByte und empfange es mit meinem 
ATmega32 via USART-Interrupt. Allerdings funktioniert das nicht mit 
Zahlen >1 Byte.
Wie stelle ich es an um Werte bis 512 auszuwerten?
Vielen Dank!

RESET_START:

LDI temp, LOW(RAMEND)
OUT SPL, temp
LDI temp, HIGH(RAMEND)
OUT SPH, temp

//outputs
LDI temp, 0xFF
OUT DDRA, temp
LDI temp, 0x0F
OUT DDRC, temp

// init Interrupts
LDI temp, (1<<ISC01) | (1<<ISC11)
OUT MCUCR, temp
LDI temp, (1<<INT0) | (1<<INT1)
OUT GICR, temp
//InitUSART
CLR temp
OUT UBRRH, temp
LDI temp, ((CLOCK/4000000)-1)
OUT UBRRL, temp

LDI temp, (1<<URSEL)|(3<<UCSZ0)|(1<<USBS)
OUT UCSRC, temp
IN temp, UDR
CLR temp
OUT UCSRA, temp
SBI UCSRB, RXCIE
SBI UCSRB, RXEN
      SEI
loop:    RJMP  loop
//Interrupt
USART_RXC:
    in R4, HIGH(udr)
    in R5, LOW(udr)

    //rcall  binBCD

    OUT    PORTA, R3
    OUT    PORTC, R2

    RETI
#1976809
Lesenswert?
• ▲
▼
1
USART_RXC:
2
    in R4, HIGH(udr)
3
    in R5, LOW(udr)
4

5
    //rcall  binBCD
6

7
    OUT    PORTA, R3
8
    OUT    PORTC, R2
9

10
    RETI

Du musst schon warten, bis beide Bytes da sind!
Wenn 2 Bytes daherkommen, werden auch 2 Interrupts ausgelöst. Für jedes 
einer. Das heißt du zählst mit, der wievielte Interrupt es ist und bei 
jeweils jedem 2.ten sind beide Bytes da. Das jeweils andere musst du 
eben in der Zwischenzeit irgendwo zwischenspeichern.



    in R4, HIGH(udr)
    in R5, LOW(udr)

darüber schweigen wir mal lieber.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.