Hi, ich brauch Eure Hilfe. Ich versuche schon den ganzen Tag diese RFM12 Module zum laufen zu bekommen. Aber überall gibts anderen Code, andere Anschlussbelegungen und da ich Neuling bei Bascom bin, seh ich nicht wirklich durch bei den Beispielcodes. Ein wenig zu mir: Ich habe mich früher viel mit den Pics rumgeschlagen, aber wurde nie richtig warm mit ihnen. Zu mehr als ein wenig Leds blinken lassen, hat nie gereicht. Jetzt bin ich auf die AVRs und Bascom umgestiegen und siehe da, mit dem ganzen komme ich nun gar richtig klar. Kleine Lochraster-Experimentierplatine existiert mit Atmega8 und 4 Mhz extern, an dem inzwischen ein 2x16 Display, Max232+Schnittstelle und DCF77 Empfänger hängt. Das erste Projekt, die DCF Uhr mittels der Bascom eigenen Routine lief recht schnell und ohne große Probleme. Nun will ich Daten per Funk senden. Conrad hat ja für 16 Euro etwa ein Set 433 MHZ AM im Angebot. Sender und Empfänger. Wäre schön einfach da hier der Atmega8 selbst alles machen müsste. Pollin hatte aber auch die RFM Module von denen ich nun 2 RFM12 und je ein 01 und 02 Modul hier habe. Und an diesen RFM Modulen verzweifle ich langsam. Ein RFM12 Modul ist bereits auf der Experimentierplatine verbaut, ein zweites auf einer neuen Platine. Ebenfalls Atmega8 4Mhz. Pins: Pd5 = SDO ; PD6 = NSEL ; PD7 = SCK und PB0 = SDI. Pins bei Sender und Empfänger sind gleich. VDD an +5V und GND natürlich an - der 5V Spannungsquelle. Die restlichen Pins der RFM12 Module sind offen. Die Cods für Sender und Empfänger habe ich angehangen. Wäre cool wenn mir da jemand weiter helfen könnte. Die Cods habe ich bei meiner langen Suche im Netz aufgeschnappt und soweit modifiziert das die empfangenen Daten aufs Display ausgegeben werden. Wenn ich damit garnicht klar komme, nehm ich echt die AM Module und zerleg die Bytes einfach in 0 und 1 Impulse die der Empfänger dann eben wieder zusammen addiert und weiter verarbeitet.
>Wenn ich damit garnicht klar komme, nehm ich echt die AM Module und >zerleg die Bytes einfach in 0 und 1 Impulse die der Empfänger dann eben >wieder zusammen addiert und weiter verarbeitet. So einfach wird das mit den billigen Modulen aber nicht. Die Empfänger geben eine Art Rauschen aus wenn kein Träger da ist. Das machen sie auch wenn der Träger zu lange steht. Das wird noch viel komplizierter als mit den RFM12.
Ok, dann muss ich mich da wohl durchfuchsen ;). Hab mal ne nette Seite gefunden die mir echt was weiter helfen könnte, weil dort auch die Hardware-Spi von den Anschlüssen her aufgezeigt ist. http://comwebnet.co.funpic.de/seite48.html Aber heute nicht mehr. Morgen ist auch wieder viel Zeit. Gut das ich noch krank geschrieben bin :D.
>>>Die restlichen Pins der RFM12 Module sind offen.
FSK muss noch mit ca. 10k an VCC.
Ob die Kommunikation zum RFM12 grundsätzlich passt kann man durch
umschalten der CLK Frequenz von 1 auf 10Mhz feststellen bzw. auschalten,
sofern man das messen/anzeigen kann.
Holger
Moin, erstmal Danke für die Tipps. Ich bin jetzt erstmal beim grundsätzlichen Studium des SPI-Ports. http://www.uni-koblenz.de/~physik/informatik/MCU/SPI.pdf Sehr interessantes Dokument. Klärt erstmal über die verwendeten Pins, deren Bedeutung und wie SPi allgemein funktioniert auf was mir erstmal beim Verständnis des SPI sehr hilft.
Juti, erstmal alles auf Hardware-Spi umgelötet. Damit fällt aber der Code von gestern weg, weil der auf die Pins per Alias zugreift. Schmeiß ich die Deklaration dafür raus weil ja nun Hardware-Spi, jammert der natürlich rum das er mit NSEL und Co nix anfangen kann. Was ich suche ist irgendein Code für Sender --- und --- Empfänger. Irgendwas der Art: SPI = HardwareSPI Quarz = 4 Mhz Baud = 4800 dim senden as byte dim empfangen as byte senderoutine: print "Wert eingeben" inkey(senden) rfm12_sende(senden) print "Wert gesendet" empfangsroutine if empfangen <> 0 then print "empfangen: " , empfangen end if Bisher hab ich die RFM Module so verstanden das die ihren eigenen Controller gleich auf der Platine mitbringen und daher auch in der Lage sind ganze Bytes zu senden. Also Zahlen bis 255 statt nur Bits wie es die analogen AM Module tun. Vielleicht hat jemand einen Code wo gut ersichtlich ist welche Variable die Daten zum Senden aufnimmt und welche Variable die empfangenen Daten enthält... Weil ich seh da nicht ernsthaft durch bei den bisher gefundenen Codes.
Der Code von Benedikt hier im Forum ist gut, aber in C. Den hab ich für PIC umgesetzt. Ob es was fertiges für Bascom gibt, k.A. Oszi ist für die Fehlersuche zu empfehlen. Hardware SPI würde ich nicht empfehlen. Mit Software hat man die Bits besser unter Kontrolle. Wie schon gesagt, versuch die Kommunikation zum RFM12 hinzubekommen und schalte den Takt an CLK ein aus um (was du messen müsstest), damit weisst du ob das erstmal läuft. Holger
Holger, ich Danke Dir. Ich werde es mal probieren. Das mit dem Takt, ich hab zwar kein Oszi hier, aber theoretisch müsste wenn der Takt da ist mein Spannungsmessgerät eine Wechselspannung anzeigen und wenn kein Takt da ist, logisch 0V.
Hier ein Auszug aus dem Header, welchen ich damals als Grundlage benutzt habe: 'info about using RF12 with Bascom: www.comwebnet.de 'Version: v0.01 'Author: Kurzschluss Da gibt es Routinen zum Senden und Empfangen. Bei mir hat die Konfiguration der Module nicht richtig hingehauen, da musste ich was anpassen. Hier meine Sub:
1 | Sub Rfm12_init |
2 | Waitms 150 |
3 | Temp = Rfm12_trans(&H0000) 'Status auslesen |
4 | Print "init Status: " ; Bin(temp) 'Status ausgeben |
5 | Temp = Rfm12_trans(&Hc0e0) ' CLK divider by 10, but not used |
6 | Temp = Rfm12_trans(&H80e7) ' El , Ef , 12pf, 868 MHz band |
7 | ' Temp = Rfm12_trans(&Ha67c) ' 868,3 MHz (F=1660) |
8 | Temp = Rfm12_trans(&Ha743) ' 869,3 MHz (F=1860) |
9 | Temp = Rfm12_trans(&Hca81) ' Fifo8 , Sync , !ff , Dr => clear FIFO |
10 | Temp = Rfm12_trans(&He000) ' wakeup off |
11 | ' Temp = Rfm12_trans(&Hc2e9) ' Clock recover fast mode, digital filter (00) |
12 | Temp = Rfm12_trans(&Hc2ab) ' Clock recover fast mode, digital filter (10) |
13 | Temp = Rfm12_trans(&Hc800) ' low duty cycle off |
14 | Temp = Rfm12_trans(&Hc4f7) ' AFC on, +3/-4 fres deviation |
15 | ' Temp = Rfm12_trans(&Hc4c7) ' AFC on, no restriction |
16 | Temp = Rfm12_trans(&H9455) ' RX bandwidth 340kHz |
17 | ' Temp = Rfm12_trans(&Hc622) ' 9600 baud |
18 | Temp = Rfm12_trans(&Hc611) ' 19200 baud |
19 | Temp = Rfm12_trans(&H9865) ' power 0db, 120kHz TX deviation |
20 | End Sub |
Gruß, avrGerd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.