Hallo! Ich versuche die ganze Zeit schon wenn nach einem framing error das nächste byte die Zahl 1 ist ein bit zu setzten irgendwie will es aber nicht ganze. Hier der Code: if ((1<<FE)&UCSRA) { if (UDR==1) { prgm=1; } } Ich arbeite mit Codevision. Danke Gruß
Philip Graf wrote:
> Hier der Code:
Ne, das ist vielleicht alles mögliche, aber auf keinen Fall Code!
Code ist ein File, das ein Compiler ohne Warnungen und Error übersetzen
kann.
Also alle benötigten Header, Funktionen, Variablendeklarationen und das
Main enthaltend.
Erfahrene Programmierer packen auch noch das Makefile hinzu.
Peter
#include <mega32.h> #include <delay.h> eeprom int adresse_fix; int adresse,adresse_start; char dmx[512],mac1,mac2,mac3; int prgm; unsigned int count0,pwm0,count1,pwm1,count2,pwm2; char e[9]; #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<OVR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC) interrupt [USART_RXC] void usart_rx_isr(void) { if ((UCSRA & (1<<OVR))|(adresse>512)) { adresse=515; } if ((1<<FE)&UCSRA) { //if (dmx[1]==1) { } else { PORTB.4=0; } if (UDR==0) { adresse=0; } else if (UDR==1) { prgm=1; } else if (UDR==2) { prgm=2; PORTB.4=1; } else { adresse=515; } } else { dmx[adresse++]=UDR; } }
mit deiner Routine liest du auch nicht das 1. nächste Byte nach dem FE sondern den Wert des Bytes mit FE und der ist eh ungültig. Sascha
ok danke. wie kann ich dass nun am einfachsten realisieren dass er das erste Byte ausliest?
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.