Hi,
bei meinem Asuro-Roboter (http://de.wikipedia.org/wiki/ASURO) gibt es
eine Übertragung vom Atmega8L zum PC über Infrarot (Baudrate 2400) und
einen USB-Infrarot-Empfänger. Dabei ist die IR-Diode mit einem
Widerstand an PB3(MOSI/OC2) und an PD1(TXD).
Der Code dazu ist dieser:
1 | void SerWrite(unsigned char *data,unsigned char length)
|
2 | {
|
3 | unsigned char i = 0;
|
4 | UCSRB = 0x08; // enable transmitter
|
5 | while (length > 0) {
|
6 | if (UCSRA & 0x20) { // wait for empty transmit buffer
|
7 | UDR = data[i++];
|
8 | length --;
|
9 | }
|
10 | }
|
11 | while (!(UCSRA & 0x40));
|
12 | for (i = 0; i < 0xFE; i++)
|
13 | for(length = 0; length < 0xFE; length++);
|
14 | }
|
Jetzt nöchte ich von einem Atmega32 Daten zum PC übertragen, wieder über
IR-Diode und -empfänger.
Wo muss ich denn nun die IR-Diode am Atmega32 anschließen? Muss ich an
der Übertragungsmethode etwas ändern?
Bisher habe ich schon versucht, die unveränderte Methode zu benutzen und
die Diode an PB5(MOSI) und PD1(TXD) anzuschließen, aber so hat der
IR-Empfänger leider nichts gemeldet.