hallo zusammen,
ich bin seit Tagen damit beschäfigt eine Funkbrücke zwischen zwei RFM12
aufzubauen.
Aufbau ist mit einem Atmega88 und RFM12 Modul realisiert. Clock ausgang
des RFM wird als Externe Clock für Atmega88 verwendet.
Kommunikation mit dem Modul klappt wunderbar. Kann es auch
konfigurieren. Modul sendet auch (Überprüft mit TV auf Kanal37,
periodisches knacken).
Empfangsmodul ist gleich aufgebaut, hiermit kann ich ebenfalls
erfolgreich senden.
Mein Problem ist nun das ich nichts empfange im Empfangsmodus. Ich denke
das er das Syncword nicht erkennt.
Sourcecode ist der Standartcode von Benedikt K.
Was mich sehr verwundert ist das nach dem Senden das Statusbit auf: A000
steht. Was ja bedeuten würde das
x2 = FFOV / RGUR (RGUR = Der Datenstrom beim Senden ist abgerissen, da
nicht schnell genug Daten nachgeladen wurden)
Habt ihr mir vielleicht ein Tip auf was das hindeuten kann?
Gruß Kappo
Und hier nun das Hauptprogramm allerdings nur ein Auszug mit den
relevanten Punkten
1
voidsend(void)
2
{
3
unsignedchartest[]="Dies ist ein 433MHz Test !!!\n ";
4
rf12_txdata(test,32);
5
6
}
7
8
charbuf[16];
9
10
InitDevices();
11
uint16_tresult=rf12_trans(0x00);
12
itoa(result,buf,16);
13
uart_puts("Antwort vor config");
14
uart_puts(buf);
15
16
while(1)
17
{
18
_delay_ms(1000);
19
result=rf12_trans(0x00);
20
21
uart_puts("Statusbits:");
22
itoa(result,buf,16);
23
uart_puts(buf);
24
uart_puts("\n");
25
26
send();
27
}
Folge vom Statusbit ist nun diese:
- Nach Init: 8000
- Nach dem Senden ist der Status: a000
Was bedeutet denn beim Status das RGUR Bit beim senden?
Gruß Kappo
Habe den Code von Benedikt K. als Einsteig auch verwendet.
Die Fuses des ATMEGA88 müssen korrekt gesetzt sein (ext. Clock, CLOCKDIV
off), dann sollte es problemlos laufen.
kappos schrieb:> - Nach Init: 8000
Sollte IMO 0x4000 sein: Bit 14 zeigt den "Power-On Reset" (POR) an, also
Kaltstart. Da ist noch was buggy, versuch erst mal das zu fixen...
> - Nach dem Senden ist der Status: a000
Also Bit 15 und 13 gesetzt, FFIT und RGUR. Die Daten sind raus, aber du
lieferst nicht schnell genug nach. Der Datenstrom ist beim Senden
abgebrochen. Läuft dein mega noch mit int. Takt 1Mhz?
> Was bedeutet denn beim Status das RGUR Bit beim senden?
Das Bit 13 ist doppelt belegt. Wenn das Modul im Sendebetrieb arbeitet,
zeigt es einen buffer underrun an (RGUR), wenn es im Empfangsbetrieb
ist, einen FIFO Overflow (FFOV).
> rf12_trans(0xC0E0); // AVR CLK: 10MHz
Ich hab gelesen, dass das einige Module nicht mitmachen, direkt von 1Mhz
auf 10Mhz springen. Versuch mal den Takt langsam raufzuschrauben, etwa
so:
1
rf12_trans(0xC060);// AVR CLK: 2MHz
2
_delay_ms(0.2);
3
rf12_trans(0xC0C0);// AVR CLK: 5MHz
4
_delay_ms(0.2);
5
rf12_trans(0xC0E0);// AVR CLK: 10MHz
Kontrolle: Häng noch ne LED an den mega und lass sie im Sekundentakt
blinken.
HIPPIE, endlich funktioniert es.
Habe lediglich die Baudrate extrem runtergesetzt. Auf eine Baudrate von
1000. Was mich aber trotzdem sehr verwundert das ich nur so kleine
Baudraten hinbekomm. Woran kann das liegen?
@Tom
Am Mega liegt es nicht.
Mega läuft mit dem Takt was das rfm12 Modul ausgibt, also mit 10mhz.
> Mega läuft mit 10Mhz, sonst würde mein Uart nicht funktionieren....
UART kann man auch passend konfigurieren trotz CKDIV8 - absichtlich oder
versehentlich. Oder auf PC-Seite adäquat anpassen - ebenso absichtlich
oder versehentlich :-)
Wenns das nicht iss isses was anderes.
HF
kappos schrieb:> Habe lediglich die Baudrate extrem runtergesetzt...
Du meinst die Sende/Empfangs-Baudrate vom rfm12?
Evtl. Empfang zu schwach, wegen falscher oder keiner Antenne?
Das würde erklären, warum das Runtersetzen der Baudrate hilft (steigert
die wahrscheinlichkeit, dass genug Signal im Rauschen drin ist).
Tom M. schrieb:> Ich hab gelesen, dass das einige Module nicht mitmachen, direkt von 1Mhz> auf 10Mhz springen. Versuch mal den Takt langsam raufzuschrauben, etwa> so:
die Änderung der Frequenz kann auf dem Atmega Probleme machen. Laut
Datenblatt sind hinsichtlich Frequenzänderung nur eine ganz minimale
Variation zulässig. Wird der externe Clock vom RFM12 abgegriffen, so ist
kein mit dem Datenblatt konformer Betrieb möglich.
Gruß
Stephan
Fehlende Antenne kann durchaus sein. Mal weiter experimentieren. Muss
jetzt mal ein sauberers Datenpacket definieren.
Nur zur Info, also die Frequenz des Megas läuft bei 10MHZ das ist alles
wunderbar...