-
-
hallo
also für die pinbelegung an einem Pollin Evaluations board kann ich nur das hier anbieten
da pollin neuerdings das board schon mit integriertem rfm01 bzw rfm02 bzw RFM12 platz anbietet haben die ein datenblatt zur verfügung gestellt wo direkt die pin-verbindungen zu sehen sind
so hab ich das jetzt gerade auch verbunden:
http://www.pollin.de/shop/downloads/D810046B.PDF
meine frage zu dem ist jetzt jedoch....wie sieht das mit registern aus bzw wie initialisiere ich das und wie sende bzw empfange ich.
ich hab 2evaluationsboards mit jeweils einem RFM12 und einem ATmega16
und will einfach nur einen buchstaben von einem zum anderen board schicken
duch die programmcodes die ich bisher gefunden habe find ich mich nicht zurecht da die meist immer nur mit hexzahlen um sich schmeißen.
könnte mir mal einer erklären wie das geht
vllt so ne kleine init-routine oder so
danke schon mal
-
hallo Grandalf
Sowei mir bekannt funktioniert die Initalisierung des RFM12 /01 /02
nur in HEX-zahlen ich habe noch keine andere Initalisierung gesehen.
-
Erfahrener Benutzer
Roboter Experte
Jo, das Datenblatt kenn ich auch...
Wollte aber wissen, was wirklich nötig, was überflüssig und was vonwegen Interrupts wichtig ist!
-
wenn du wissen willst was von den pins notwendig ist und was nicht so kannst du dir das in dem datenblatt zum RFM01/02/12 anschauen
da steht genau drin welcher pin für was steht
interupts zb sind alle auf aktiv low und davon sind es 2 stück ein input interupt und ein output interrupt
ja das mit den hexzahlen weiß ich schon nur kann man ja die ports auch anders einstellen
statt 0xff
kann man ja auch &B11111111
oder PORTx |= (1<<Px0)|(1<<Px1)......|(1<<Px7)
schreiben, wobei ich mit der langen angabe (PORTx |=....) am besten klar komme. da ich bei der methode vorher sagen kann #define MOSI PD5 //SDI
und schon kann ich direkt mit den pinfunktionen arbeiten (1<<MOSI)
ist zwar mehr schreib arbeit aber extrem übersichlicher als nur hexzahlen rein zu kloppen
mfg Grandalf
-
Erfahrener Benutzer
Roboter Experte
Die Datenblätter sind leider Schrott, finde ich. Die Funktion der Pins wird da nicht wirklich brauchbar erklärt.
Die hier habe ich bisher gefunden:
http://www.hoperf.com/pdf/rfm01.pdf
http://www.hoperf.com/pdf/RF01_code.pdf
http://www.hoperf.com/pdf/RF0102TOOLS.pdf
http://www.pollin.de/shop/downloads/D810047D.PDF
Gibts da was brauchbares? Irgendwie bin ich von Linear und Konsorten verwöhnt...
Ich muss wie gesagt nur wissen, ob SDI, SDO, SCK reichen, oder ob ich noch nIRQ auf nen INTx legen muss.
Das würde Sinn machen, weil das Modul nur sporadisch Daten empfangen wird - das aber im Interrupt.
Oder läuftdas über den SPI Interrupt des AVR?
DCLK und CLK brauche ich glaubich nicht - oder täusche ich mich? Der AVR hat nen 16MHz Quarz.
nRES gehört wohl auch zu den CLKs
Und an VDI kann ich ne LED anklemmen, ja?
Grüße
Stefan
-
Hallo hier mal die Befehle RFM12 usw
Ich weiß nicht ob ihr das schonmal gelesen habt
http://www.mikrocontroller.net/articles/RFM12
Gruß raggy
-
Hallo
nein ich habe es vorher noch nicht gesehen...also erstmal danke
nur verstehe ich ehrlich gesagt die angaben dort garnicht
die absätze "RFM empfängt nur müll" und "RFM hängt sich auf" sind zwar noch nachvollziehbar aber was ich wirklich zur zeit brauche steht (wenn ich das gerad richtig interpretiere in dem abschnitt Register)
und genau das versteh ich nicht.
denn: was bitte bedeuten die ganzen abkürzungen
(x0 x1 x2 x3 b0 b1 e1 ef b... x... xx und so weiter)
das ganze sagt mir nichts
ich bin kein profi oder so sondern beschäftige mich erst seit kurzem mit Controllerprogrammierung habe jetzt die RS232 schnittstelle und ein LCD Display am laufen bekommen sowie kleinere spielereien mit taktgebern und LEDs sowie tastern. nun will ich mich halt dem RFM12 zuwenden und hab halt die pinbelegung gefunden (wobei auch dort 2 verschiedene die beide funktionieren sollten wenn man weiß wie).
Ich Suche halt nun eine beschreibung wie ich den RFM initialisiere und dann benutzen kann.
Mit register angaben wie
DDRx oder PORTx oder UCSRA kann ich was anfangen aber sowas in der art hab ich noch nicht gefunden
also hier nochmal meine derzeitige pinbelegung
(laut dieser seite im ersten absatz unter Treiber: http://www.mikrocontroller.net/articles/AVR_RFM12 ):
DDRB |= (1<<PB4)|(1<<PB6)|(1<<PB7); //SS; MISO; SCK;
DDRB & ~(1<<PB5); //MOSI
//FSK liegt mit 1kohm auf VCC
Meine zweite Variante für die Pinbelegung ist so wie in diesem Datenblatt:
http://www.pollin.de/shop/downloads/D810046B.PDF
schonmal danke für weitere infos
gruß Grandalf
-
Erfahrener Benutzer
Roboter Experte
Moin Grandalf,
die Manuals der RF-Serien bieten - um es mal positiv zu formulieren - in der Tat noch Potenzial zur Optimierung ihrer Verständlichkeit.
Dabei ist es eigentlich ziemlich einfach: Um das Modul zu konfigurieren, muss man ihm Steuerkommandos (seriell) zuschicken, die i.d.R. 2 bytes lang sind.
Als Beispiel mal das Power Management Command:
1 0 0 0 0 0 1 0 er ebb et es ex ebew dc
An den ersten 8 bits erkennt der Chip, dass es sich eben um dieses Power-Management-Kommando handelt. Die Sequenz am Anfang ist nämlich bei jedem Kommando unterschiedlich - kannste ja mal überprüfen.
Die dann folgenden, mit Buchstaben bezeichneten Bits legen dann die gewünschten Einstellungen fest. Soll das Teil senden, muss Bit Nr.5 (et = Enable Transmitter) 1 sein, wenn der Empfänger aktiviert werden soll, muss Bit Nr. 7 (er = Enable Receiver) 1 sein usw.
Der kryptische Abschluss "POR" in der oberen Zeile heißt "Power-On-Reset", und die darunter stehende Zahl im Hexadezimal-Code gibt an, wie diese bits gesetzt sind, wenn der Chip "aufwacht" und noch nicht speziell konfiguriert wurde. Für das Power-Management-Kommando wäre das &H8208 oder binär 1000 0010 0000 1000. Also die korrekten 8 Anfangs-bits (klar), und alle Funktionen außer dem Quarzoszillator deaktiviert.
Man muss beileibe nicht alle Kommandos ausführen, wenn ein Chip initialisiert wird. Dafür ist es ganz gut zu sehen, wie die Ausgangskonfiguration bei Power on ist. Je nach Anwendung kann das eine oder andere Steuer-bit genau so bleiben.
Mit dem Befehl Spiout lassen ich diese 2-Byte-Blöcke superbequem an den Chip senden. Details hat auch hier die Bascom-Hilfe parat. Das schwierigste dabei (so ging es zumindesten mir) war in der Tat, das Prinzip der RFM-Chips zu verstehen.
Und ich kann nur empfehlen, mit "leichten" Aufgaben anzufangen, z.B. einen unmodulierten Träger zu senden und zu empfangen, und nicht gleich FIFO-gepufferte Datenpakete zu übertragen oder sowas. Sonst weiß man schon gleich am Anfang nicht, weshalb es klemmt...
-
@Sauerbruch
Vielen Dank
jetzt komm ich echt weiter, super
werd gleich anfangen
@einfache sachen schicken: ich informiere mich lieber immer erst so weit das ich sofort das programm schreiben kann was ich will so das es sofort läuft (oder nach kleineren Korrekturen)
Nur hatte ich gedacht das der unterschied zwischen senden und register select durch den PIN "nSEL" eingestellt wird und nicht durch ein bit in dem an den rf übergebenen word
Danke!
-
aehm ok hab mir gerad alles angeschaut
ich verstehe zwar jetzt wie ich den RFM12 einstelle nur merk ich gerad das ich nicht weiß was ich wie einzustellen habe
auf dem pollin datenblatt steht hinten eine beispiel-Initialisierung drauf nur bin ich 1. mir nicht sicher ob die Fehlerfrei ist
und 2. glaube ich auch das dort viel mehr eingestellt wird als für mich notwendig ist
da ich nur nSEL CLK SDO und SDI angeschlossen hab und FSK mit 1kohm auf VCC liegt (im gegensatz zu pollin wo fast jeder pin am ATmega16 angeschlossen ist)
desweiteren hab ich noch fragen wie ich die einstellungs-words an den RFM12 sende:
- der CLK wird ja getaktet und muss ich nun ein komplettes word pro takt an den SDI schicken oder nur ein bit? und wie schnell soll ich den CLK takten?
- muss ich nachdem ich das komplette word drin hab noch etwas machen damit er das word ausführt (zb den nSEL = 1 oder ist das automatisch sobald der FIFO voll ist)
sorry wegen der ganzen fragen
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen