$regfile = "m8def.dat"                                      'Atmega8
$hwstack = 32
$swstack = 10
$framesize = 40
$crystal = 16000000                                         'Quarzfrequenz an den eigenen Quarz anpassen
$baud = 19200
Baud = 19200                                                'Ausgabe auf RS232 mit 19.200 Baud


Config Portd.2 = Input
Nirq Alias Pind.2

Sdo Alias Pinb.4
Sdi Alias Portb.3
Nsel Alias Portb.2

Config Portd.3 = Input
Ffit Alias Pind.3

Led Alias Portd.5
Config Portd.5 = Output                                     'LED zur Kontrolle, wird vor dem Senden ein und nach erfolgreichem senden, wieder aus geschaltet

Dim Count As Byte
Dim Temp As Byte
Dim Rx(32) As Byte
Dim Cmd(2) As Byte
Dim Fifo(4) As Byte
Dim Rx_low As Byte
Dim Rx_high As Byte


Declare Sub Rf_cmd(byval Wert As Word)


'config SPI !!! SPIIN = 0xB0 - Receiver read command !!!
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 64 , Noss = 0 , Spiin = &HB0
'Config Spi = Soft , Din = Pinb.4 , Dout = Portb.3 , Ss = Portb.2 , Clock = Portb.5 , Spiin = &HB0
'# Es wird der Hardware SPI verwendet, was weniger Resourcen in Anspruch nimmt und den AVR damit schneller macht.

Spiinit                                                     'init the spi

Waitms 100

Toggle Led

Call Rf_cmd(&H0000)                                         'read status
Call Rf_cmd(&Hc0e0)                                         'low battery, clock 10 MHz
Call Rf_cmd(&H80e7)                                         'Configuration: 868MHzband, 12pf
'Call Rf_cmd(&H80d7)                             'Configuration: 433MHzband, 12pf
Call Rf_cmd(&H82d8)                                         'power management: enable receiver, enable clock output
Call Rf_cmd(&Hc2ac)                                         'data filter command
Call Rf_cmd(&Ha686)                                         'Frequency: 868,35MHz
'Call Rf_cmd(&Hc603)                              'Datarate: 86,2 kbit
'Call Rf_cmd(&Hc605)                              'Datarate: 57,4 kbit
'Call Rf_cmd(&Hc608)                              'Datarate: 38,4 kbit
Call Rf_cmd(&Hc611)                                         'Datarate: 19,2 kbit
'Call Rf_cmd(&Hc623)                              'Datarate: 9,6 kbit
'Call Rf_cmd(&Hc646)                              'Datarate: 4,8 kbit
'Call Rf_cmd(&Hc691)                              'Datarate: 2,4 kbit
Call Rf_cmd(&H94a1)                                         'receiver setting: 134kHz, -97dbm
Call Rf_cmd(&Hc2ac)                                         'data filter:
Call Rf_cmd(&Hc483)                                         'AFC:
Call Rf_cmd(&H9850)                                         'TX control
Call Rf_cmd(&He000)                                         'wake-up
Call Rf_cmd(&Hc800)                                         'low duty-cycle
Call Rf_cmd(&Hca81)                                         'Reset FIFO
Call Rf_cmd(&Hca83)                                         'enable FIFO
Call Rf_cmd(&H0000)                                         'read status

Do

Toggle Led

For Count = 1 To 3

   Reset Nsel
   Bitwait Sdo , Set                                        'wait for SDO
   Spiin Fifo(1) , 2
   Rx(count) = Fifo(2)

Next

Call Rf_cmd(&H0000)                                         'check status
Call Rf_cmd(&Hca81)                                         'Reset FIFO
Call Rf_cmd(&Hca83)                                         'enable FIFO


Print Rx(1) + " " + Rx(2) + " " + Rx(3)                     'Ausgabe aller 3 empfangen Bytes direkt nacheinander


Loop

End



Sub Rf_cmd(byval Wert As Word) As Word
Cmd(2) = Wert And 255
Shift Wert , Right , 8
Cmd(1) = Wert
Spiout Cmd(1) , 2
End Sub