RFM12 Funkmodul

macGyver

Neues Mitglied
20. Apr. 2012
61
0
0
29
-
Sprachen
  1. BascomAVR
  2. ANSI C
hallo allerseits!

hab mich gerade hier angemeldet ;)

ich bin 17 Jahre alt und beschäftige mich mittlerweile seit etwa 4 monaten mit microcontrollern :)

ich möchte in meinem derzeitigen Projekt eine Funkverbindung mittels RFM12 zwischen 2 µC realisieren (UART)...
hat jemand von euch einen beispielcode (basic) für sowas? bin trotz langer suche nicht fündig geworden :S

bin für jede Hilfe Dankbar! :D

lg macGyver
 
Hallo,

erstmal Wilkommen im Forum!:flowers:

also sorry wenn ich dich falsch einschätze, aber ich halte
eine Funkverbindung für einen Anfänger eher für ungeeignet.
...was auf dich zuzutreffen scheint, da du sonst nicht nach einem
fertigen Programm fragen würdest!

Ich bin recht sicher dass du hier gute Hilfe bekommst, wenn du dein
Programm entwickelts, aber keiner dir gratis nen Prog schreibt.

Meine Emfehlung: Sammle erstmal alle nötigen Grundkenntnisse,
die Ansteuerung der Funkmodule steht nähmlich im Datenblatt!

Gruß:
AVRuser
 
Hallo,

auch von mir ein herzlich willkommen :flowers:

also sorry wenn ich dich falsch einschätze, aber ich halte
eine Funkverbindung für einen Anfänger eher für ungeeignet.
das sehe ich auch so.
ich bin 17 Jahre alt und beschäftige mich mittlerweile seit etwa 4 monaten mit microcontrollern :)
und 4 Monate würde ich noch als "Anfänger" einstufen.

Für das Funkmodul mußt den SPI-Bus programmieren, das Funkmodul über den SPI-Bus mit den entsprechenden Sende/Empfangsparametern einstellen und dann die zu sendenden Daten zum Funkmodul übertragen oder die empfangenen abholen. Da ist nichts mit Plug and Play und das dir die Daten auf dem Silbertablett (wie bei einem Kabel) präsentiert werden.

hat jemand von euch einen beispielcode (basic) für sowas? bin trotz langer suche nicht fündig geworden :S
Schau mal (ich glaube) in den Projekte-Bereich. Da hat entweder Knickohr oder Markus eine Fernbedienung für eine Spiegelreflexkamera mit den Funkmodulen gebaut. Da könntest du dich dran orientieren. Der Quellcode von den beiden ist eigentlich immer gut genug kommentiert um mit Teilen daraus was neues aufzubauen.

Meine Emfehlung: Sammle erstmal alle nötigen Grundkenntnisse,
die Ansteuerung der Funkmodule steht nähmlich im Datenblatt!
würde ich auch sagen. Versuch doch erstmal zwei Controller mit dem SPI direkt (ohne eine Funkmodul) gegeneinander zu schalten und damit Daten von einem zum anderen zu übertragen. Da wirst du auch schon genug mit zu tun haben. Ohne alle Probleme die dir das Funkmodul einbringt.

Ne Frage ...
Warum versuchen eigentlich alle Anfänger zuerst mal Grafik-LCDs (möglichst mit Touch) und Funkmodule oder Ethernet oder was weiß ich für "coole" Sachen zu programmieren :hmmmm: um dann frustriert alles in die Ecke zu feuern weil es nicht in einer Woche zum laufen zu bekommen ist ? :vollkommenauf: Rom wurde auch nicht an einem Tag erbaut und da wurde auch ein Haus nach dem anderen gebaut und nicht "schwups" und alles ist da. :stupido2:


So ... und nun laß dich nicht entmutigen und leg los :cool:

Gruß
Dino
 
Im Prinzip stimme ich meinen "Vorrednern" durchaus zu, bin aber doch der Meinung, daß zunächst ein funktionierendes Beispiel in den meisten Fällen mehr wert ist als tausend(e) Worte - das spart Zeit und führt schneller zu einem ersten "Aha"-Effekt.

Ne Frage ...
Warum versuchen eigentlich alle Anfänger zuerst mal Grafik-LCDs (möglichst mit Touch) und Funkmodule oder Ethernet oder was weiß ich für "coole" Sachen zu programmieren um dann frustriert alles in die Ecke zu feuern weil es nicht in einer Woche zum laufen zu bekommen ist ? Rom wurde auch nicht an einem Tag erbaut und da wurde auch ein Haus nach dem anderen gebaut und nicht "schwups" und alles ist da
Absolute Zustimmung, da gibt es viele - aber dazu würde ich erstmal "mcGyver" nicht zählen - wenn man nach 4 Monaten noch nicht aufgegeben hat, dann sind die erforderlichen Tugenden wahrscheinlich schon vorhanden.

Und warum nicht das Projekt mit den Funkmodulen - "er" muß selbst wissen bzw. erfahren, ob er es wagen kann bzw. soll - schließlich ist man mit 17 kein Kind mehr ;)

@mcGyver: Also immer ran - notfalls halt dann auch ohne Vorlagen - Du wirst ne Menge dabei lernen.
 
Hallo,

Im Prinzip stimme ich meinen "Vorrednern" durchaus zu, bin aber doch der Meinung, daß zunächst ein funktionierendes Beispiel in den meisten Fällen mehr wert ist als tausend(e) Worte - das spart Zeit und führt schneller zu einem ersten "Aha"-Effekt.
Ein funktionierendes Beispiel muß dabei aber nicht zwangsweise ein auf die eigene Anwendung zugeschnittenes Programm sein. Wenn ein wenig Erfahrung vorhanden ist und man aus den "Kinderschuhen" entstiegen ist dann sollte es möglich sein aus einem anderen Programm die benötigten Teile rauszuholen. Ich habe mit den Funkmodulen noch nichts gemacht. Ich habe damals aber mal ein paar für eventuelle Experimente besorgt und im Internet nach Programmen und Schaltungen gesucht. Es gibt eigentlich genug Informationen und Beispiele.

Also einfach für ein Beispiel mal hier reinsehen ...
Funk-Fernauslöser für DSLRs
Das ist die besagte Fernbedienung über Funk.
Ich hab mir den Quellcode mal kurz angesehen und er ist eigentlich recht gut dokumentiert. Wenn man da die für die Funkmodule benötigten Teile rausschneidet sollte was eigenes auf die Reihe zu bekommen sein.

Gruß
Dino
 
hi leute!

danke für die schnellen Antworten!

was das thema Anfänger betrifft... klar bin ich nach 4 monaten noch kein Profi in dem Gebiet aber ich habe doch schon einiges Programmiert, und lerne sehr schnell :) ich hab nun mit bascom bei knappen 11 seiten code "dezent" die 4k grenze überschritten und mir gestern die Vollversion gekauft :D

Mir ist schon klar dass ich keine Programme auf dem silbertablett serviert bekomme ;)
Ich wollte eig nur ein Beispiel sehen wie man eben so ein Funkmodul ansteuert, habe nämlich im Internet nichts näheres dazu gefunden :p

genaueres zu meinem Projekt:

Es geht dabei um eine Art "Bordcomputer" für mein Auto :) die idee entstand als mir ein Freund voller Stolz seine beleuchteten 10A kippschalter demonstrierte mit denen er seine supercoolen LED´s einschalten konnte :D da dachte ich mir das bekomm ich doch mindestens 10 mal edler hin :D

daraus entstand ein microcontroller mit 8 ausgängen für "unrelevantes bling bling" ;) einer RTC , digitalen Temperatursensoren, etc etc

nun würde ich gerne mit einem zweiten Controller darauf zugreifen können und z.B Temperatur abfragen, Ausgänge Fernsteuern... (-> im winter zum beispiel: Heizlüfter einschalten)

Ich habe mich für das RFM12 entschieden. Oder kennt vielleicht jemand ein anderes Funkmodul? sollte halt bidirektional Funktionieren ;)

Bin für jede Hilfe dankbar :)

lg Macgyver
 
Ich habe mich für das RFM12 entschieden. Oder kennt vielleicht jemand ein anderes Funkmodul? sollte halt bidirektional Funktionieren ;)
Die Funkmodule die du verwenden willst gibt es mit 434MHz, 868MHz und 2,4GHz (nein! Kein WLAN sondern nur die Frequenz)

Cassio hat ein Bluetooth-Modul im Einsatz. Da könnte man zusätzlich sogar noch über nen PC oder Handy oder... drangehen.
Problem ist allerdings der Preis. Normalerweise sind die nicht grade günstig. Er hat da wohl vor einiger Zeit mal nen Glücksgriff getätigt ;)

Gruß
Dino
 
Glücksgriff?
Ich hab mir grad 2 Stück für je 10,95€ geordert gehabt. War das jetzt teuer?
 
Er hat da wohl vor einiger Zeit mal nen Glücksgriff getätigt ;)


Hallo zusammen!

Nun ja, ein Glücksgriff war das wohl nicht.
Die 12 Euro pro BT-Modul sind eigentlich ganz marktüblich..... und kein China-Export. :wink:

Ich denke auch, dass die BT-Module für den "Taschenmesserfanatiker".... oder generell für Anfänger .....die beste Lösung sind, um problemlos eine serielle Verbindung via Funk zu realisieren.

Bei der Entwicklung muss man sich dann nicht mehr um Störsicherheit und Checksummen kümmern, sondern kann sich auf das eigentliche Programm konzentrieren.

Sollte Interesse bestehen, dann schau doch mal in meinen BLOG !
Ich habe dort etwas zu den Modulen geschrieben und auch Bilder eingestellt.

Grüße,
Cassio
 
hallo cassio!

bluetooth hört sich interessant an!
wie siehts mit reichweite aus? da der controller in meinem auto verbaut ist währen 200m schon angemessen :D

werd mir deinen blog gleich mal ansehn ;)

lg macgyver
 
hi :) ich bins nochmal!

wo hast du das modul denn gekauft?

lg macgyver
 
wie siehts mit reichweite aus? da der controller in meinem auto verbaut ist währen 200m schon angemessen :D
Bluetooth ist normalerweise für den "Nahbereich" gedacht. Darum wird es ja auch für Headsets, Tastaturen, Mäuse, ... verwendet. Bei den Modulen steht normalerweise "bis 100m" bei. Die Angaben sind aber dann meißt schon bei Freifeldverbindung ohne Hindernisse. 200m würde ich bei normalen Antennen und ohne Tuning als sehr grenzwertig ansehen. Eher als "geht nicht".

Es gibt mit Richtantennen die Möglichkeit die Reichweite zu erhöhen. Das ist dann aber eine ziemliche Bastelei und eventuell außerhalb der maximal genehmigten Sendeleistung für solche Module. Außerdem wirst du alleine schon wegen dem Einbau im Auto (Faradayscher Käfig) eine ganze Menge an Verlust haben. Das wird aber auch bei anderen Funkmodulen der Fall sein. Alternativ könntest du ja noch nen Loch ins Blech bohren und die Antenne durchstecken ;)

Gruß
Dino
 
Ich habe hier noch 4 x 2,4 Ghz NRF24L01 Module "rum(f)liegen" - natürlich gezielt (in Shanghai) gekauft, mit Versandkosten ca. 5,- € das Stück. Die Teile haben eine Firmware und sind dadurch von Haus aus recht intelligent:

1: interface: 4 wire SPI
2: on 2Mbit/s speed max input current for receiving: 12.5mA
3: on 2Mbit/s speed @ 0dBm max input current for transmit: 11mA
4: current use in power-down mode: 400nA
5: current use in stand-by mode: 32uA
6: from stand-by to power up: 130us
7: with on-chip voltage regulator
8: working voltage: 1,9 - 3,6 V
9: 5V tolerant input
10: MultiCeiverMT hardware to receive 6 streams of 2Mbit/s with high quality

Kleines TX/RX-Protokoll (Retries, falls erforderlich) und somit auswertbare Empfangsbestätigung.

Verarbeitung macht einen sehr guten Eindruck. Leider bin ich noch nicht zum Testen gekommen. :(
Vorgesehen habe ich einen atmega mit wlan-Modul als Zentrale, der dann diverse Peripherie mit diesen Teilen über Funk steuern soll, also sowas Richtung Hausautomatisierung. Ist aber alles noch Zukunftsmusik, erstmal sehen, ob sich die Teile im gleichen Frequenzberich wie WLAN überhaupt behaupten können.

Zu den Reichweiten kann man aber immer nur sagen: Eine gute externe Antenne ist der beste Verstärker !
Soll heissen: Mit einer gut ausgekoppelten Richtantenne im Freien lassen sich nicht nur einige Meter, sondern locker auch km überbrücken (Sichtverbindung und gleicher Aufwand bei der Gegenstelle vorausgesetzt). Theoretisch könnte dann durch den Antennengewinn die max. zulässige Leistung überschritten werden, aber meistens geht über das Koaxkabel zur Antenne wieder genügend verloren (Dämpfung). Darauf achten muss man aber schon. ;)

Aber auch schon eine halbwegs brauchbare Wendelantenne bringt gegenüber den auf der Platine aufgebrachten "Leiterbahnantennen" erhebliche Vorteile - wobei die einfachsten, oft skurril erscheinenden Bauvorschläge gegenüber kommerziellen Angeboten viel besser sein können.

@mcGyver: Zu dem von Dir ins Auge gefassten Board will ich mal mangels Erfahrung lieber nix sagen - es macht auf den ersten Blick keinen schlechten Eindruck, was dann wirklich fehlt, merkt man meistens erst während der Projektrealisierung.
 
Hallo zusammen,

hallo macGyver!

Das kleine Board, welches du dir ins Auge gefasst hast ist ja schon sicherlich gut und bestimmt auch für dein Vorhaben geeignet, du benötigst hier allerdings noch ein Funkmodul, einen Programmer und ggf. eine Verbingung zum PC (zum Beispiel mit USB-UART von Silabs oder FTDI). Bei dem kleinen Board hast du den Vorteil, dass du direkt das RFM12 Funk-Modul verlöten kannst (hierzu werden wir sicherlich auch noch eine Lösung bringen).

Alternativ (!) schaue dir vielleicht auch mal das Mikrocontrollermodul Mega128-USB an. Damit hättest du schon mal eine Minimalumgebung mit ATmega128A Mikrocontroller (etwas größer: Mega2560-USB). RFM12 ISM Funkmodule findest du ebenfalls im mikrocontroller-praxis.de Shop (vergleiche hier auch mal die Preise mit anderen Shops!).

Ich habe jetzt den Thread nicht komplett verfolgt, falls du noch keine Programmiermöglichkeit hast, empfehle ich den originalen Atmel AVRISPmkII Programmer. Der ist in der 2. Version sehr robust und programmiert auch zuverlässig ISP und PDI und wird auch oft von anderen Usern im Forum empfohlen. Ich habe selber noch den AVRONE, JTAGICEII und III, nehme aber meistens den AVRISPmkII, wenn ich nicht unbedingt debuggen muss :). Den kannst du auch direkt auf das Mega128-USB Mikrocontrollermodul aufstecken, Spannungsversorgung zum Beispiel über USB ... und loslegen.

Jetzt aber nochmal zum eigentlichen Thema:
Wegen Codebeispielen für RFM12 und Bascom, hier müsste es bestimmt etwas geben. Leider programmiere ich nicht in Bascom und kenne mich hier nicht so aus. Ich würde vielleicht mal im www.bascom-forum.de oder bei www.mcselec.com direkt schauen.

Noch ein schönes Wochenende,
Dirk

EDIT:
Ich habe den Thread von Knickohr (Thomas) wieder gefunden, schaue hier mal rein:
Funk-Fernauslöser für DSLRs
(Bascom + RFM12)
 
Hallo macGyver

Ist das mit dem Funkmodul noch aktuell?:confused:
Wenn ja habe ich einen Tipp für dich.
Schau mal bei Elektor rein : Bei uns hat's gefunkt! RFM12-Funkmodule am ATM18.
Löte mir mein Funksender und Empfänger gerade auch zusammen.:hmmmm:
Das Programm von Elektor ist im Artikel auch gut erklärt.
Hier ist der Code von Elektor den ich ein wenig abgeädert habe:

Code:
'*******************************************************************************
'*                                                                             *
'* Dies ist das Listing von Elektor, RFM12 ATM18, aus Elektor Januar 2009      *
'* Atmega 168 16MHz                                                            *
'*                                                                             *
'* Ralf Neubert Dinslaken   ralfneubert@online.de                              *
'* Logger auf www.AVR-Praxis.de                                                *
'* Version vom 11.05.2012                                                      *
'*                                                                             *
'*******************************************************************************

'Das listing wurde von mir, auf meine Anwendungen angepasst.

'Sollten angaben nicht stimmen, bitte um eine kurze email ( ralfneubert@online.de ) dann kann ich es ändern.
'
'   RFM12B 3,3V     | Atmega 32 | 168
'   ----------------+---------------------                     ------------
'   SDO             | MISO  PB6 | PB4                    SDO -|  -   ___   |- nSEL
'   nIRQ            | INT0  PD2 | PD2                   nIRQ -| | | |   |  |- SCK
'   FSK/DATA/nFFS   | VCC       |              FSK/DATA/nFFS -| | | |   |  |- SDI
'   DCLK/CFIL/FFIT  |  -        |             DCLK/CFIL/FFIT -| | |  ---   |- nINT/VDI
'   CLK             |  -        |                        CLK -| | |        |- GND
'   nRES            |  -        |                       nRES -|  -         |- VDD in diesem Fall 3,3V
'   GND             | GND       |                        GND -| RFM12B 3,3V|- Antenne 86 mm
'   ANT             |  -        |                              ------------
'   VDD +3,3V       | VCC  +5V  |
'   GND             | GND       |
'   nINT/VDI        | -         |
'   SDI             | MOSI PB5  | PB3
'   SCK             | SCK  PB7  | PB5
'   nSEL            | SS   PB4  | PB2   Slave select pin defined below
'____________________________________________________________________________________________________________________________________________
'Antennen Länge
'Diese Antennen längen sind Berechnet für die vorhandenen Frequenzbänder
'                                          Für 868 MHz
'433 1/4 Welle = 173.0mm                | Berchnung der Korrekten Antennen länge = Lambda = C/f
'433 1/2 Welle = 346.1mm                | C = Lichtgeschwindigkeit durch Luft  =  299711000 m/s
'433 ganze Welle = 692.2mm              | f = mittlere Frequenz =868 MHz       =  868000000 Hz
'                                       |
'868 1/4 Welle = 86.3mm                 | Lambda   = 299711000 m/s  /  868000000 Hz = 0.34528917 m = 345,289 mm
'868 1/2 Welle = 172.6mm                | Lambda   = 345,289 mm
'868 ganze Welle = 345.3mm              | Lambda/2 = 172,645 mm
'                                       | Lambda/4 =  86,322 mm
'915 1/4 Welle = 81.9mm                 |
'915 1/2 Welle = 163.8mm                |
'915 ganze Welle = 327.6mm              |
'-------------------------------------------------------------------------------------------------------------------------------------------


$regfile = "m168def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40

$crystal = 16000000
$baud = 19200


Nsel Alias Portb.2
Sdi Alias Portb.3
Sdo Alias Pinb.4
Sck Alias Portb.5

Dim D As Word
Dim Data_in(10) As Byte
Dim Data_out(10) As Byte
Dim N As Byte
Dim Timeout As Word
Dim T As Word
Dim Tt As Word
Dim Freq As Single
Dim Checksumme As Byte
Dim Dat As Word
Dim Hi As Byte
Dim Lo As Byte



Declare Sub Init_rfm12
Declare Sub Send_rfm12
Declare Sub Receive_rfm12
Declare Sub Freq_rfm12
Declare Sub Wait_rfm12
Declare Function Spi16(byval Dout As Word) As Word

Config Nsel = Output
Config Sdi = Output
Config Sck = Output
Config Portd = Output
Config Adc = Single , Prescaler = 64 , Reference = Off      ' Pre 8...32
Config Timer1 = Pwm , Prescale = 8 , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect
Config Portb.1 = Output
Start Timer1
Pwm1a = 500
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb.0 = Output

  Portd.0 = 1                                               'pullup RXD
  Portc = &HFF
  Servo(1) = 150
  Nsel = 1
  Portb.4 = 1

  Waitms 500

 Init_rfm12
 Freq = 868.3
 Freq_rfm12


 'Do                                                          'Servo-Test
 'For N = 100 To 200
 '  Servo(1) = N
 '  Waitms 100
 'Next N
 'Loop

 Do
    Data_out(1) = 27
    Checksumme = 27
    Data_out(2) = Pinc
    Checksumme = Checksumme + Data_out(2)
    Dat = Getadc(6)
    Hi = High(dat)
    Data_out(3) = Hi
    Checksumme = Checksumme + Hi
    Lo = Low(dat)
    Checksumme = Checksumme + Lo
    Data_out(4) = Lo
    Dat = Getadc(7)
    Hi = High(dat)
    Data_out(5) = Hi
    Checksumme = Checksumme + Hi
    Lo = Low(dat)
    Checksumme = Checksumme + Lo
    Data_out(6) = Lo
    Data_out(7) = Checksumme
    Send_rfm12
    Enable Interrupts                                       'Servo
    Waitms 500
    Disable Interrupts
    For N = 1 To 10
       Data_in(n) = 0
    Next N
    Timeout = 400 + Rnd(1000)
    Receive_rfm12
    If Data_in(1) = 27 Then
       Checksumme = 27
       For N = 2 To 6
         Checksumme = Checksumme + Data_in(n)
       Next N
       If Data_in(7) = Checksumme Then
        Checksumme = 27
        Portd = Data_in(2)
         'Print Data_in(2)        'no Print for 4 K using Bascom Demo
         Dat = 256 * Data_in(3)
         Dat = Dat + Data_in(4)
         Pwm1a = Dat
         'Print Dat
         Dat = 256 * Data_in(5)
         Dat = Dat + Data_in(6)
         'Print Dat
         Dat = Dat / 11
         Dat = Dat + 100
         Servo(1) = Dat
         'Print
       End If
    End If
    Enable Interrupts                                       'Servo
    Waitms 700
    Disable Interrupts
 Loop


Sub Init_rfm12
  Nsel = 1
  Sck = 0
 'D = Spi16(&H80d7)                                         ' El , Ef , 11.5pf, 433 MHz band
  D = Spi16(&H80e7)                                         ' El , Ef , 11.5pf, 868 MHz band
  D = Spi16(&H82d9)                                         ' !er , !ebb , Et , Es , Ex , !eb , !ew , Dc
  D = Spi16(&Ha67c)                                         ' 434,15 MHz / 868,3 MHz
 'D = Spi16(&Hc67f)                                         ' 2.4kbps ok
  D = Spi16(&Hc647)                                         ' 4.8kbps ok
 'D = Spi16(&Hc623)                                         ' 9.6kbps ok
 'D = Spi16(&Hc617)                                         ' 14.4kbps ok
 'D = Spi16(&Hc611)                                         ' 19.2kbps ok
 'D = Spi16(&Hc60b)                                         ' 28.8kbps kein Daten Empfangen
 'D = Spi16(&Hc608)                                         ' 38.4kbps kein Daten Empfangen
 'D = Spi16(&Hc602)                                         ' 115.2kbps kein Daten Empfangen
  D = Spi16(&H94a4)                                         ' Vdi , Fast , 134 kHz , 0db , -79dbm
  D = Spi16(&Hc2ac)                                         ' Al , !ml , Dig , Dqd4
  D = Spi16(&Hca81)                                         ' Fifo8 , Sync , !ff , Dr
  D = Spi16(&Hc483)                                         ' @pwr , No Rstric , !st , !fi , Oe , En
  D = Spi16(&H9850)                                         ' 90 kHz , power - 0 dB
  D = Spi16(&He000)                                         '
  D = Spi16(&Hc800)                                         '
  D = Spi16(&Hc000)                                         ' 1 MHz , 2.2V
End Sub


Sub Freq_rfm12
  If Freq < 800 Then Freq = Freq * 2                        'für 434 MHz-Band
  Freq = Freq - 860
  D = Freq / 0.0050
  If D < 96 Then D = 96
  If D > 3903 Then D = 3903
  D = D + &HA000
  D = Spi16(d)
End Sub


Sub Send_rfm12
  D = Spi16(&H8238)
 ' Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb82d)
  Wait_rfm12
  D = Spi16(&Hb8d4)
  For N = 1 To 10
    Wait_rfm12
    D = &HB800 + Data_out(n)
    D = Spi16(d)
  Next N
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&H8208)
End Sub

Sub Wait_rfm12
  Nsel = 0
  Waitus 10
  Do
  Loop Until Sdo = 1
End Sub


Sub Receive_rfm12
  Tt = Timeout * 10
  D = Spi16(&H82c8)
  D = Spi16(&Hca83)
  For N = 1 To 10
    Nsel = 0
    T = 0
    Do
      T = T + 1
      Waitus 100
      If T > Tt Then Goto Nosignal
    Loop Until Sdo = 1
    D = Spi16(&Hb000)
    Data_in(n) = D
  Next N
Nosignal:
  D = Spi16(&H8208)
End Sub


Function Spi16(byval Dout As Word) As Word
Local Nspi As Integer
Local Dspi As Integer
Local Dsdo As Word
  Nsel = 0
  Dsdo = 0
  For Nspi = 1 To 16
    Dspi = Dout And &H8000
    If Dspi = 0 Then
       Sdi = 0
    Else
       Sdi = 1
    End If
    Dout = Dout * 2
    Dsdo = Dsdo * 2
    Dsdo = Dsdo + Sdo
    Sck = 1
    Waitus 5
    Sck = 0
  Next Nspi
  Nsel = 1
  Spi16 = Dsdo
End Function
Wenn ich bei mir weiter gekommen bin schreibe ich hier etwas dazu.:stupido:

Gruß Ralf
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)