Nochmal Nachtrag:
Problem mit dem SPI-Slave habe ich zuerst nochmal mit dem BASCOM-eigenen Config SPI=Hard und Config SPI=Soft programmiert. Dabei hat es wunderbar funktioniert.
Dann eben noch den Code der Version mit Config SPI=Hard wieder Befehl für Befehl auf Registerzugriffe zurückreduziert. Es gieng auch in jedem Stadium. Zum Schluß blieb im Grunde mein AVR-Slave-Code übrig der seltsamerweise läuft! Der Code ist nun soweit identisch und ich steh echt auf dem Schlauch was da anders sein soll. Die Warteschleife auf SPSR.7 = 0 ist irrelevant, ohne giengs ja auch nicht, das hatte ich nur aus letzten Versuchen noch drin.
Code jetzt:
Code:
' SPI-Slave-Routine für SPI-Hub
' =============================
$RegFile = "m8def.dat"
$Crystal = 7372000
$Baud = 115200
On SPI SPI_Interrupt
LEDError Alias PortD.7
Dim TempSpi As Byte
Dim SpiDataRec As Byte
Dim Richtung As Byte
DDRD.7 = 1 ' LED auf Out
Init:
GoSub SPI_Init
Enable Interrupts
Main:
Do
LEDError = SpiDataRec.0
Loop
SPI_Init:
DDRB.3 = 0 ' MOSI input
DDRB.4 = 1 ' MISO output
DDRB.5 = 0 ' SCK input
SPCR = &B11000000 ' SPI-Slave einstellen
ReSet SPSR.SPI2X ' Double Speed aus
SPIDataRec = 0
Return
SPI_Interrupt:
SpiDataRec = SPDR
SPDR = 0
Return
Grüße (sprachloser) Wolfgang
P.S.: Und Strom hat doch ne Duftnote!!!
Lesezeichen