ISM BAND FSK TRANSMITTER MODULE RFM02 - C Problem

OP #1913201
Lesenswert?
• ▲
▼
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??
#1913687
Lesenswert?
• ▲
▼
Hallo,

im Datenblatt sollten die Timingdiagramme sein.

Als Kurzfassung: das RFM02 will die seriellen Bits alle einzeln angelegt 
haben, den Takt für die Baudrate zum Senden erzeugt es aber selbst.
Damit der Controller weiß, wann das nächste Bit angelegt werden muß, 
gibt das RFM auf nIRQ eine Low-Impuls aus.

Damit steht der Ablauf fest: warte bis nIRQ auf H ist (das ist der 
Grundzustand von nIRQ).
Dann warte bis nIRQ auf Low ist und damit der RFM anzeigt, daß er ein 
Bit haben will.
Bit an die Leitung anlegen.
Wenn noch nicht alle 8 Bit raus -> wieder von vorn.
Und hier kommt die Bedeutung der Abfrage auf nIRQ High ins Spiel:
der Schleifendurchlauf der for-Schleife kann schneller sein als die 
maximale Länge des Impulses vom RFM. Da würde dann also im nächsten 
Durchlauf immernoch Low anliegen und sofort das nächste Bit angelegt 
werden.
Darf aber nicht, darf es erst nach der nächsten H/L Flanke.

Gruß aus Berlin
Michael

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.