'10 bytes empfangen und über COM ausgeben. $regfile = "m32def.dat" 'oder was auch immer $hwstack = 32 'Standardwerte übernommen $swstack = 10 $framesize = 40 $crystal = 1000000 'getestet mit 1-16MHz $baud = 4800 Dim X As Byte 'Zählervariablen Dim I As Byte Dim D As Word 'hier den Wert reinschreiben, 'der mit SPI16 übertragen werden soll. 'Nach dem ausführen von SPI16 steht der gelesene 'Wert in D Dim Data_in(10) As Byte 'Speicher für die 10 zu lesenden bytes Declare Sub Spi16 Nsel Alias Portc.1 '4 beliebige Pins am AVR, da kein Hardware SPI verwendet wird Sdi Alias Portc.3 Sdo Alias Pinc.7 Sck Alias Portc.2 Config Nsel = Output Config Sdi = Output Config Sck = Output Print "init" 'Kontrolle, ob serieller Empfang funktioniert Do 'Init RFM12 (für Sender und Empfänger gleich) Nsel = 1 Waitms 100 Restore Rfm12_init For I = 1 To 12 Read D Spi16 Next I 'Init Empfang (RFM12 auf empfang schalten) Restore Rfm12_receive For I = 1 To 2 Read D Spi16 Next I 'receive 10bytes of data For I = 1 To 10 Nsel = 0 Do Loop Until Sdo = 1 D = &HB000 Spi16 Data_in(i) = D Next I D = &H8208 Spi16 For I = 1 To 10 Print Data_in(i) Next I Loop Sub Spi16 Nsel = 0 For X = 1 To 16 Sdi = D.15 Shift D , Left D.0 = Sdo Set Sck Reset Sck Next X Nsel = 1 End Sub Rfm12_init: Data &H80D7% ' El , Ef , 11.5pf, 433 MHz band / für 868MHz Band: &H80e7 Data &H82D9% '!er , !ebb , Et , Es , Ex , !eb , !ew , Dc Data &HA67C% ' 434,15 MHz / 868,3 MHz Data &HC647% ' 4.8kbps Data &H94A4% ' Vdi , Fast , 134 kHz , 0db , -79dbm Data &HC2AC% ' Al , !ml , Dig , Dqd4 Data &HCA81% ' Fifo8 , Sync , !ff , Dr Data &HC483% ' @pwr , No Rstric , !st , !fi , Oe , En Data &H9850% ' 90 kHz , power - 0 dB Data &HE000% ' Data &HC800% ' Data &HC000% Rfm12_receive: 'Emfang einschalten Data &H82C8% Data &HCA83% ' Rfm12_send: 'Sender einschalten Data &H8238% Data &HB8AA% Data &HB8AA% Data &HB8AA% Data &HB82D% Data &HB8D4% Rfm12_send_over: 'Sender ausschalten Data &HB8AA% Data &HB8AA% Data &H8208%