Forum: Mikrocontroller und Digitale Elektronik FRM12-Funkmodule in BASCOM benutzen


von Lukas D. (doberslu)


Lesenswert?

Hallo,

habe mir 2 FRM12-Funkmodule gekauft und möchte nun Daten zwischen Zwei 
MC austauschen. Im Netz gibt es jede menge Beiträge in C, nur versteh 
ich davon kein Word da ich mit Bascom programmiere.

Gibt es jemanden der mir das Initialisieren + Senden/Empfangen erklären 
kann ?

Bzw.  hat jemand ein verständliches/funktionierendes Programm in Bascom 
?

Allgemeines:
Frequenz 868
MC 2x Attiny2313/8MHz
zu versendende Daten sind nur einzelne Bytes

Bis jetzt hab ich es mit der Soft-SPI (=>SCK/SDI/SDO/nSEL) probiert aber 
ich glaub es ist einfacher von Null anzufangen ( daher kein Programm 
angehängt)

Ich zähle auf eure Unterstützung


Mfg

Lukas

von Cyblord -. (cyblord)


Lesenswert?

Vielleicht erstmal rausfinden wie das Modul WIRKLICH heißt.

Die Programmierbeispiele in den PDF Datenblättern (namentlich RFM12 
Programming Guide z.B. auf der Pollin Webseite zu bekommen) sind zwar 
etwas dürftig aber trotzdem ausreichend. Damit hab ich die Dinger auch 
zum laufen bekommen (in C) habe zwar eine ganze Woche gebastelt bis es 
ging, aber dann gings und ich hatte es verstanden. Und einen Code in C 
zu verstehen auf dem Niveau wie er dort vorkommt ist doch kein Problem, 
selbst wenn man Basic Dialekte gewöhnt ist. Dein Problem ist das du in 
Wirklichkeit zu faul bist, dir das selbst du erarbeiten. Wie du schon 
sagst es gibt tausende Dokumente zu den Dingern, hier auch eine Wiki 
Seite.
Falls du in diesen Beispiel auf C Code stößt welchen du nicht verstehst, 
dann poste doch diesen einfach und jemand wird dir schon erklären was da 
passiert.

Warum du allerdings auf einen Soft-SPI zurückgreifen willst, wenn du 
doch einen HW-SPI zur Hand hast, bleibt schleierhaft. Der HW-SPI lässt 
dir alle Freiheiten. SEL kannst/musst du komplett manuell bedienen, 
lediglich das raustackern und zurücklesen von Bits wird dir abgenommen. 
Da die RFM12 immer 16 Bits erwarten, musst du den halt 2x hintereinander 
anwerfen, dabei aber SEL schön auf low lassen.
Also da weißt du dann schonmal dass der SPI funktioniert, wenn du das 
selber bastelst weißt du nie obs nun am SPI liegt oder an deinen 
Befehlen selbst.

Verstehe nicht genau was du erwartest, soll dir jetzt jemand in Prosa 
alle Funktionen und Register und Befehle des RFM12 erläutern oder wie?

gruß cyblord

von google (Gast)


Lesenswert?

Zu faul um RFM12 und Bascom in google zu tippen?

Schon der 2. Treffer bietet alle Infos, im Bascom Forum wurde das auch 
schon zu Tode durchgekaut.

Ein HM-TRS433 des gleichen Herstellers hätte Deine Faulheit unterstützt.

von Lukas D. (doberslu)


Lesenswert?

Hallo,

danke für die ehrlichen Antworten.

Hab noch mal in Google gesucht (@ google (Gast)) und wie befürchtet 
riesige Programme gefunden.

Probeweise versucht zu flashen => 180% des Attiny2313 Speichers währen 
belegt .....

Brauch ich den wirklich so viel an Programm bzw. wie haben das andere 
gemacht, die die Verbindung mit einem Attiny13 geschafft haben ?????

@ cyblord : Soft-SPI einfach um flexibel zu bleiben

Mein Problem ist, dass ich nicht weiß ob die Module überhaupt 
funktionieren ( befürchte, dass min. eins nicht mehr geht ) daher:

=> schritt für schritt : was brauch ich mindestens um eine Verbindung 
aufzubauen ohne das so ein Monstrum an Programm entsteht

=> der Post hier um sicher sagen zu können das ich ein Funktionsfähiges 
Programm erstelle ( wenn es dann nicht geht liegts wohl an den Modulen 
...)

Wenn ich hier die falsche Vorstellung von so einem Programm hab und es 
sowieso nicht in einen Attiny2313 passt bitte sagen

Danke im Voraus

Lukas

von Verwirrter Anfänger (Gast)


Lesenswert?

In einen tiny2313 passt das schon rein, aber vielleicht nicht mehr in 
BASCOM. Der Code für das Modul selbst ist nicht besonders groß, aber 
wenn dann noch ein kleines Protokoll mit Fehlerkorrektur dazu soll, 
wirds auch in C bald eng.
Das größere Problem seh ich aber dadrin, dass du für die ersten Tests 
auch möglichst viele Debug Informationen haben willst. Z.B. was das 
Modul auf verschiedene Behfehle antwortet. Dazu wäre eine serielle 
Schnittstelle nicht schlecht, und dann wirds richtig eng!

Grundsätzlich würd ich empfehlen die ersten Tests immer mit einen 
überdimensionierten Controller machen, und erst wenns darauf ankommt den 
Code zu optimieren. Für nen RFM12 finde ich ein ATMega8 oder besser 
schon notwendig.

von Lukas D. (doberslu)


Lesenswert?

Ok, habe einen Ausschnitt in c gefunden ...

"

FRM_on;
Rx_on;

FRM_send x0AA;
FRM_send x0AA;
FRM_send x0AA;
FRM_send x02D;
FRM_send x0D4;

FRM_send (daten);

Rx_off;
FRM_off;

"

ist  das die Initialiesierungs-Seqenz bzw. lässt sich das mit SPIOUT auf 
Bascom übertragen ?

Verschlüsselungen und Co. sind noch nicht notwendig, Hauptsache es steht 
mal was anderes als 0 in dem Empfänger-Modul-Register.

Falls sich das direkt so übertragen lässt, wie würde die 
Empfänger-Sequenz aussehen ???

Danke im voraus,

Lukas

von Bastler (Gast)


Lesenswert?

Elektor hatte mal ein Projekt mit en RFM12 Modulen in BASCOM.
Ich glaube die Software kanst du dir dort kostenlos herunterladen.
Ich selber bin ganz zufrieden mit den Teilen.
Du musst vorher erst noch eine 16bit Soft. SPI Schreiben.

von Lukas D. (doberslu)


Lesenswert?

Da ich nach wie vor vermute, dass die Module defekt sind hab ich mal 
folgendes Programm ausprobiert:

$regfile = "attiny2313.dat"
$crystal = 8000000
$baud = 19200

Config Spi=Soft , Din=Pind.5 , Dout=Portd.4 , Ss=None , Clock=Portd.3

Config Lcdpin=Pin, Db4=Portb.5, Db5=Portb.1, Db6=Portb.0, Db7=Portd.6, 
E=Portb.6, Rs=Portb.7

Config Lcd = 16 * 2

Config Portd.2 = Output

Nsel Alias Portd.2

Dim A(2) As Byte
Dim I As Byte
Dim Value As Byte

Nsel = 1
Value = &H0000                              'Status Read Command

Spiinit


Do
   Nsel = 0
   Spiout Value , 1                           'die 16 status-bit 
einlesen
   Spiin A(1) , 2

   For I = 1 To 2
      Lcd A(i)                                 'wert anzeigen
   Next

   Nsel = 1

   Waitms 500

   Cls
Loop

End


Ich bekomme aber nur " 00 " raus!!

Heißt das, dass das Modul kaputt ist oder ist das Programm falsch ??

Mfg. Lukas

von Bastler (Gast)


Lesenswert?

Ich würde eher sagen das Program ist defekt.

Du musst die Module erst Initialisieren, Frequenz einstellen, usw.
Und ne 16bit SPI selbst programmieren die wo du benutzt ist eine 8bit.

Schau dir da mal die Software an.
http://www.elektor.de/jahrgang/2009/januar/funk-fur-den-controller.769008.lynkx

von Lukas D. (doberslu)


Lesenswert?

Hallo Bastler,

=> erst Initialisieren ..... irgend eine Voreinstellung sollte doch auch 
ohne schon Initi. drin stehen oder ?

=> 16-Bit-SPI .... ist das nicht der " Spiin A(1) , 2 " Befehl ?
   (da: Dim A(2) as Byte ja genügend Platz für die 16-Bit bereitstellen)

Bascom Hilfe: .....
              Dim B As Byte
              Dim A(10) As Byte

              Spiinit
              B = 5

              Spiin A(1) , B
=> sollte ja auch 5 Byte empfangen und in A(1) bis A(5) schreiben....


Bin leider nicht allzu bewandert mit SPI (was dem ein oder anderen schon 
aufgefallen sein wird ), also Bitte helft mir !!!

Danke im Vorraus

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
Noch kein Account? Hier anmelden.