Ruppi
04.07.2007, 18:50
Hallo!
Ich habe Schwierigkeiten bei der Kommunikation zweier AVR's über SPI. Folgenden Code verwende ich für den Master:
$regfile = "m8def.dat"
$crystal = 16000000
Config Portb.5 = Output
Config Portb.4 = Input
Config Portb.3 = Output
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 64 , Noss = 1
Spiinit
Dim B As Byte
B = 80
Do
Spiout B , 1
Wait 2
Loop
End
Und folgenden Code für den Empfang:
$regfile = "m8def.dat"
$crystal = 18432000
Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = No , Polarity = High , Phase = 0 , Clockrate = 64 , Noss = 1
Spiinit
'Enable Spi
On Spi Spi_isr
'Interrupt's global aktivieren
Enable Interrupts
Config Portd = Output
Dim B As Byte , Status As Byte
Status = 0
Do
If Status = 1 Then
Portd.5 = 1
Waitms 500
Portd.5 = 0
Status = 0
End If
Loop
End
Spi_isr:
Spiin B , 1
Status = 1
Return
Leider funktioniert rein gar nichts. Es scheint, als wird vom Master gar nichts gesendet. Der Slave hingegen scheint zu funktionieren, d.h. beim flashen des Codes für den Master wird der Interrupt des Slaves ordnungsgemäß ausgeführt.
Woran könnte das liegen?
Ich habe Schwierigkeiten bei der Kommunikation zweier AVR's über SPI. Folgenden Code verwende ich für den Master:
$regfile = "m8def.dat"
$crystal = 16000000
Config Portb.5 = Output
Config Portb.4 = Input
Config Portb.3 = Output
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 64 , Noss = 1
Spiinit
Dim B As Byte
B = 80
Do
Spiout B , 1
Wait 2
Loop
End
Und folgenden Code für den Empfang:
$regfile = "m8def.dat"
$crystal = 18432000
Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = No , Polarity = High , Phase = 0 , Clockrate = 64 , Noss = 1
Spiinit
'Enable Spi
On Spi Spi_isr
'Interrupt's global aktivieren
Enable Interrupts
Config Portd = Output
Dim B As Byte , Status As Byte
Status = 0
Do
If Status = 1 Then
Portd.5 = 1
Waitms 500
Portd.5 = 0
Status = 0
End If
Loop
End
Spi_isr:
Spiin B , 1
Status = 1
Return
Leider funktioniert rein gar nichts. Es scheint, als wird vom Master gar nichts gesendet. Der Slave hingegen scheint zu funktionieren, d.h. beim flashen des Codes für den Master wird der Interrupt des Slaves ordnungsgemäß ausgeführt.
Woran könnte das liegen?