Hier, das ist die Empfangsroutine vom Asuro:
Musst halt noch auf deinen Mega32 umschreiben. Prinzip sollte aber das gleiche sein.Code:void SerRead(unsigned char *data, unsigned char length, unsigned int timeout){ unsigned char i = 0; unsigned int time = 0; UCSRB = (1<<RXEN); // Empfaenger einschalten if (timeout != 0) { /* Die Funktion wird auf alle Faelle, auch ohne empfangene Daten, wieder verlassen. --> nonblocking mode */ while (i < length && time++ < timeout) { if (UCSRA & (1<<RXC)) { data [i++] = UDR; time = 0; } } if (time > timeout) data [0] = 'T'; } else { /* Die Funktion wird auf alle Faelle erst nach dem Empfang von der vorgegebenen Anzahl Zeichen verlassen. blocking mode */ while (i < length) { if (UCSRA & (1<<RXC)) data [i++] = UDR; } } }
mfg






					
					
					
						
Zitieren

Lesezeichen