PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zur Senden-Funktion von RFM12



Spanky
17.03.2009, 14:17
Hiho,

ich beschäftige mich gerade mit dem RFM12 Funkmodul.

Der Beispiel Code ist in C.
In C bin ich noch relativ neu.
Ich kann Visual Basic (6), bin also kein totaler Programmieranfänger.

Im Moment hänge ich an der Senden-Funktion.



void RF12_SEND(unsigned char aByte){
while(PIND&(1<<2));//wait for previously TX over
RFXX_WRT_CMD(0xB800+aByte);
}


while(PIND&(1<<2));
Dieser Befehl führt eine Schleife aus, wenn das RFM12 noch Daten sendet.
Wenn das RFM12 fertig gesendet hat, wird die Schleife beendet und RFXX_WRT_CMD(0xB800+aByte); wird ausgeführt.
Richtig?

Jetzt meine Frage:
Was macht 1<<2 bzw. Wie Funktioniert die WhileSchleife?
Laut RN-Wissen erzeugt man mit << eine Maske.
Was mit Maske gemeint ist, bin ich mir nicht sicher.

Ist das sowas wie beim RP6 mit den Leds?
setLEDs(0b111111);

Gruß
Spanky

lowtzow
17.03.2009, 20:18
while(PIND&(1<<2));

du könntest auch auch while(PIND&(1<<PD2)); schreiben
überprüft wird ob es wahr ist, also PD2 gesetzt ist.

es wird im prinzip der "1" "geschiftet" also der 1er wird auf bitposition2 geschoben - was gleichwärtig mit PD2 ist. und dann wird überprüft ob die bedingung wahr ist. wenn wahr dann wird die bedingung ausgeführt.

schau dir mal das an sehr hilfreich!
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

mfg
low


ps hab auch so rfm12 herumliegen muss ich mal anwerfen und testen!
naja wie oft so immer mehr ideen als zeit ;-)