Hallo,
Ich hoffe ich bin hier im richtigen Forum gelandet.
Ich möchte in meiner Schaltung gerne das Funk-Modul "ISM BAND FSK
TRANSMITTER MODULE RFM02" nutzen. Die Anleitung hierzu findet man unter:
https://www.it-wns.de/data/datenblatt_0000019_1.pdf
Die Anleitung ansich ist bereits sehr hilfreich! Allerdings gibt es
weiter unten in dem C-Beispiel zu AVR-Controllern eine Stelle die ich
nicht ganz nachvollziehen kann.
Code Auszug:
1 | ...
|
2 |
|
3 | void RF02B_SEND(unsigned char aByte)
|
4 | {
|
5 | unsigned char i;
|
6 |
|
7 | for (i=0; i<8; i++)
|
8 | {
|
9 | while (PINB&(1<<RFXX_SDO)); //polling nIRQ, RFXX_SDO = 4
|
10 | while (!(PINB&(1<<RFXX_SDO)));
|
11 |
|
12 | if (aByte&0x80) {
|
13 | PORTB |= (1<<RFXX_DATA); // RFXX_DATA = 1
|
14 | } else {
|
15 | PORTB &= ~(1<<RFXX_DATA);
|
16 | }
|
17 | aByte<<=1;
|
18 | }
|
19 | }
|
In dieser Funktion werden zu Anfang zwei Schleifen durchlaufen. Erst
solange Bit 4 an PortB gesetzt ist, und dann solange Bit 4 an PortB
nicht gesetzt ist. Ich vermute Mal diese Vorgehensweise soll immer erst
das nächste Bit senden/setzen wenn das vorherige abgesendet wurde.
Was ich nicht verstehe ist warum dafür 2 Schleifen benötigt werden und
wann und an welcher Stelle dieses Bit gesetzt wird. Wird das von dem
Funkmodul gesetzt über den Interrupt? Wenn ja, wann wird dieser
ausgelöst. Und wenn nicht, an welcher Stelle wird dieses Bit gesetzt??