' ######################################################################## ' # RF12 - S E N D E R ATMega8, interner Takt 8 Mhz, Fuse 0100 Ckopt = 1 ' # by Holli, mod jr 05/2013 Stand 05.06.2013 ' # Eigenbau auf Laborplatine - RFM12 Modul on board ' # TX FIFO enabled ' # NIRQ Polling ' # V2 mit geänderte Datenübergabe für DS1820 stand 29.05.2013 sc(1) und sc(2) ' # V3 mit geänderter Datenübergabe für DS 1820 Stand 05.06.2013 zusätzlich sc(7) und 8 ' ######################################################################## $regfile = "m8def.dat" $hwstack = 32 $swstack = 10 $framesize = 40 $crystal = 8000000 '$baud = 19200 'Baud = 19200 Config Portd.2 = Input Nirq Alias Pind.2 Led Alias Portd.4 Config Portd.4 = Output 'LED zur Kontrolle Config 1wire = Portd.5 ' Pin für 1wire Schnittstelle festlegen, Dim T1 As Byte Dim T2 As Byte Dim T7 As Byte Dim T8 As Byte Dim Sc(9) As Byte 'neun register vom ds1820 Dim Count As Byte Dim Temp As Byte Dim Cmd(2) As Byte Dim Sdi(2) As Byte Sdi(1) = &HB8 'SPI TX command high byte Declare Sub Sdi_send_ref(sdi_byte_ref As Byte) Declare Sub Sdi_send(byval Sdi_byte As Byte) Declare Sub Rf_cmd(byval Tmp As Word) 'config SPI Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 0 , Spiin = 0 Spiinit Waitms 300 Toggle Led ' init Sender Call Rf_cmd(&H0000) 'read Call Rf_cmd(&Hc080) 'low battery, clock 10 MHz Call Rf_cmd(&H80d7) 'Configuration: 433MHzband, 12pf, enable FIFO Call Rf_cmd(&H8200) 'power management: es, ex, et off; enable clock output Call Rf_cmd(&Hc2ac) 'data filter command Call Rf_cmd(&Ha620) 'Frequency 'Call Rf_cmd(&Hc611) 'Datarate 19.2 kbit 'Call Rf_cmd(&Hc623) 'Datenrate 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(&Hc22c) 'data filter: Call Rf_cmd(&Hca81) 'FIFO: 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(&H0000) Do '################## DS1820 init ################# 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 500 'DS read 1wreset ' Initialisierung 1wwrite &HCC ' überspringe ROM-Befehl 1wwrite &HBE ' Temperatur auslesen Sc(1) = 1wread(9) '################### Ende DS ############################### Set Led Call Rf_cmd(&H8238) 'et,es,ex ON 'preamble Call Sdi_send(&Haa) Call Sdi_send(&Haa) 'Sync Pattern Call Sdi_send(&H2d) Call Sdi_send(&Hd4) '4 Bytes Data vom DS1820 'Call Sdi_send(&H61) Call Sdi_send_ref(sc(1)) Call Sdi_send_ref(sc(2)) Call Sdi_send_ref(sc(3)) Call Sdi_send_ref(sc(4)) Call Sdi_send_ref(sc(5)) Call Sdi_send_ref(sc(6)) Call Sdi_send_ref(sc(7)) Call Sdi_send_ref(sc(8)) Call Sdi_send_ref(sc(9)) 'Call Sdi_send(&H48) byval zur Übertragung von Hex Daten 'Dummy Bytes Call Sdi_send(&Haa) 'send 2 dummy bytes to empty TX FIFO Call Sdi_send(&Haa) Spiinit Call Rf_cmd(&H8200) 'et,es,ex OFF Call Rf_cmd(&H0000) 'read status Reset Led Wait 5 Loop End Sub Sdi_send(byval Sdi_byte As Byte) Bitwait Nirq , Reset Sdi(2) = Sdi_byte Spiout Sdi(1) , 2 End Sub 'NEU Sub Sdi_send_ref(sdi_byte_ref As Byte) 'byval gelöscht Bitwait Nirq , Reset Sdi(2) = Sdi_byte_ref Spiout Sdi(1) , 2 End Sub Sub Rf_cmd(byval Tmp As Word) Cmd(2) = Tmp And 255 Shift Tmp , Right , 8 Cmd(1) = Tmp Spiout Cmd(1) , 2 End Sub