Hallo! Habe eine Frage zum Mega16. Beim Anpassen des Programms von UART --> USART muessen nun ein/einige Register gelesen werden bevor man UDR einliest. Beim 1. Byte (Adresse - 9bit) geht das ja auch noch, aber die restlichen Byte (Daten - 8bit) unterscheiden sich nicht vom ersten Byte, sprich es wird immer nur das Adressebyte angezeigt. Meine Initialisierung sieht folgend aus: uart_init: sbi UCSRB,RXEN ldi temp1, quartz/(baud*16)-1 out UBRR, temp1 sbi UCR, RXCIE ;enable receive sbi UCSRB,UCSZ2 ;mit 9. bit empfangen ldi temp1, 0b10000110 ;lt. DB auch einzustellen out UCSRC, temp1 sei ret das ist die dazugehoerige ISR: rs485_recv: in temp2, SREG push temp2 in temp1, UCSRA ;vor UDR 9. bit einlesen lt. Datenbl. in temp2, UDR pop temp2 out SREG, temp2 reti Das Ganze wird in einer Schleife, momentan endlos, ausgewertet. endlos: sbis UCSRA, RXC rcall speichern rjmp endlos1 Muss ich in den Statusregistern was zuruecksetzen, oder was habe ich uebersehen/falsch uebersetzt? Stehe mit englisch auf`n Kriegsfuss. Muss ich die Fehlerbehandlung machen? mfg. flo
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.