Forum: Mikrocontroller und Digitale Elektronik RFM01 / RFM02 und bascom


von Steve B. (stevensen)


Lesenswert?

Hi,

der Krampf geht weiter. ich habe mal versucht die Software in Bascom für 
ein Rfm01 und Rfm02 mit Mega8 zu schreiben. Funktioniert aber leider 
nicht. Momentan teste ich den Rfm02 (Sender). Mit meiner 
selbstgeschriebenen Routine kann ich über SPI z.B. die Frequenz am Clk 
in verschiedene Werte ändern. Aber das Senden will nicht. Hier mein 
Code:
vorallem die Bascom-Experten können mir vielleicht Tipps geben.

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600


Declare Sub My_trans2(byval Mylowbyte2 As Word)
Declare Sub Rf02_shiftout(byval Senddata As Byte)
Declare Sub My_spi(byval Mylowbyte As Byte)


Ddrc = &B11111000
Ddrd = &B00101111
Ddrb = &B11111110
Spi_cs Alias Portb.2                                        ' SS-Pin
Spi_sdi Alias Portb.3
Spi_sdo Alias Pinb.4


Dim Temp As Word
Dim Temp_byte As Byte
Dim A(8) As Byte
Dim L As Byte
Dim Test As Byte
Dim Lauf As Byte


 Set Spi_cs

 Waitms 150

  Call My_trans2(&Hc0e0)
  Call My_trans2(&H8f80)
  Call My_trans2(&Hc2a0)
  Call My_trans2(&Ha620)                                    '433,92 MHz 
Freq Setting
  Call My_trans2(&Hb400)                                    '  &Hb420
  Call My_trans2(&H8f80)                                    ' 10 Mhz
  Call My_trans2(&Hd2c0)
  Call My_trans2(&Hc823)                                    'c823 =9600 
c811 =19200
  Call My_trans2(&Hc038)
  'Call My_trans2(&H8a80)                                    ' 1,8A80 
6666 Mhz
  Call My_trans2(&H8f80)

Portc.3 = 0
Test = &HCC
   Portb.3 = 0

Do


Call My_spi(&Hc6)

 'Call My_trans2(&H8a80)
Loop


End

Sub My_trans2(byval Mylowbyte2 As Word)
    Local I As Byte
    'Local Mylowbyte2 As Word


    Reset Spi_cs
 '   While Pinb.0 = 0

    For I = 15 To 0 Step -1
        If Mylowbyte2.i = 1 Then
                                Portb.3 = 1
                                 Else
                                Portb.3 = 0

                            End If
            Portb.5 = 1
                      'SCK
            Waitus 1
            Portb.5 = 0

    Next I



    Waitus 40

    Set Spi_cs

End Sub



Sub My_spi(byval Mylowbyte As Byte)
    Local I As Byte

    Reset Spi_cs

    For I = 7 To 0 Step -1

        If Mylowbyte.i = 1 Then
                                Portb.3 = 1                 'sdi High
                                Else
                                Portb.3 = 0                 'sdi low

                            End If
            Portb.5 = 1
                      'SCK   nächsten Takt erzeugen
            Waitus 1
         '  $asm
         '     nop
         '     nop
         '     nop
         '  $end Asm

            Portb.5 = 0

    Next I
             'sck low
      'Portb.5 = 0
    Waitus 40


    Call Rf02_shiftout(&Haa)
    Call Rf02_shiftout(&Haa)
    Call Rf02_shiftout(&Haa)
    Call Rf02_shiftout(&H2d)
    Call Rf02_shiftout(&Hd4)

    Call Rf02_shiftout(&H41)                                'paar daten
    Call Rf02_shiftout(&H42)
    Call Rf02_shiftout(&H43)
    Call Rf02_shiftout(&H44)
    Call Rf02_shiftout(&H45)
    Call Rf02_shiftout(&H46)
    Call Rf02_shiftout(&H41)                                'paar daten

      Set Spi_cs

    While Pinb.0 = 1
    Wend


    Call My_trans2(&Hc464)


  End Sub

Sub Rf02_shiftout(byval Senddata As Byte)
 Local J As Byte

 Portc.3 = 1



 For J = 7 To 0 Step -1


          While Pinb.0 = 1
          Wend
          While Pinb.0 = 0
          Wend

            If Senddata.j = 1 Then
                                Portb.3 = 1

           '
                                Else
                                Portb.3 = 0
           '
                          End If

 Next J

End Sub

von Nixda (Gast)


Lesenswert?

Pollin Funkmodule Bascom - Code soll funktionieren !!
da sollteste fündig werden.
da gibts 3 versionen .

http://bascom-forum.de/index.php/topic,25.msg45.html#msg45

von Steve B. (stevensen)


Lesenswert?

@ Nixda

immer die schei... Werbung für dises Forum

von HUHU (Gast)


Lesenswert?

@Steve Bennet wieso werbung mir hats geholfen.

von Steve B. (stevensen)


Lesenswert?

@huhu (nixda)

kann dir nicht geholfen haben, weil Rfm12 und Rfm01/Rfm02 nicht das 
gleiche ist und der RFM02 anders zu händeln ist

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.