Datum:
Angehängte Dateien:Guten Tag. Ich muß mich wiedermal an Euch Experten wenden. Ich verwende in meinem Programm die Software Uart und Entprellung von Peter Dannegger (Vielen Dank dafür an Peter). Leider funktioniert die Entprellung nur dann wenn auch die Kommunikation läuft. Der betreffende Teil ist dieser
for(;;) { RxProt(ugetchar()); if (protoflag &(1<<RxComp)) { //Proto.output= PINA; Proto.analog[0]=analog[0]; Proto.analog[1]=analog[1]; Proto.analog[2]=analog[2]; Proto.analog[3]=analog[3]; Proto.crc = CalcCRC16(&Proto,sizeof(Proto)-1); Transmit(&Proto,sizeof(Proto)); protoflag &= ~(1<<RxComp); } if( get_key_short( 1<<KEY1 )) { PORTA ^= 1<<PA0; } if( get_key_long( 1<<KEY1 )) { PORTA ^= 1<<PA1; } } } |
Nochmal zur Erklärung die Led an PA0 und PA1 lassen sich nur Toggeln wenn zuvor ein korrektes Datenpaket empfangen wurde und somit das RxComp Flag auf 1 gesetzt wurde.Der Timer 0 mit der Entprellroutine läuft immer durch Ich begreife einfach nicht was ich falsch mache. Ich wäre Dankbar wenn mir jemand helfen könnte Gruß Peter
Datum:
habe 3mal das Programm angehängt Bitte entfernt es 2 mal! Gruß Peter
Datum:
ugetchar() wartet, bis ein Zeichen empfangen wurde. Deshalb geht es ohne empfangene Zeichen nicht weiter.
Datum:
Danke für die Schnelle Antwort. Ich war der Meinung das die Funktion nachschaut ob etwas Empfangen wurde und dann die Daten aus der Fifo holt. So kann man sich täuschen. Hat jemand eine Idee wie ich das am Besten löse Gruß Peter
Datum:
u8 kbhit( void ) // check, if rx buffer not empty |
Peter
Datum:
Peter Dannegger schrieb: > u8 kbhit( void ) // check, if rx buffer not empty > > > Peter Ich kann Deinen Hinweis nicht verstehen wärst Du so nett und hilfst mir auf die Sprünge! Peter
Datum:
Der Aufruf von kbhit() liefert 0 zurück, wenn der Puffer leer ist. Wenn Du also nicht warten willst, dann vorher kbhit() aufrufen.
int nowait_getchar() { int i = -1; // -1 = no byte received if( kbhit()) i = ugetchar(); return i; } |
Peter
Datum:
Vielen Dank für die schnelle Hilfe jetzt läuft das Programm. Trotz der guten Kommentierung des Codes falle ich immer wieder auf meine Schnauze. Danke Peter