' === SPI Slave AVR128DA28 - Bascom Test ===
$regfile = "avrx128da28.dat"
$crystal = 24000000
$hwstack = 32
$swstack = 32
$framesize = 16
Config Base = 0
' Oscillatore e UART
Config Osc = Enabled , Frequency = 24mhz
Config Sysclock = Int_osc , Prescale = 1
Config Com1 = 115200 , Mode = Asynchroneous , Parity = None , Databits = 8 , Stopbits = 1
' Variabili
Dim Bsend As Byte
Dim B As Byte
Dim Rbit As Byte
' SPI0 config in slave mode
Config Spi0 = Hard , Clockdiv = Clk2 , Data_order = Msb , Master = No ',Ss = PORTA.7 << Ss setting produce error .. why ?
Config PortA.5 = Output ' PA5 = MISO
Spiinit
' Abilita interrupt SPI0
Enable Spi0_Int , Lo
On Spi0_Int Spi0_isr Nosave
Enable Interrupts
' Dati SPI iniziali
Print "SPI slave start"
SPI0_DATA = 1
' Loop principale
Do
If Rbit <> 0 Then
Incr Bsend
Print "TX to master = " ; Bsend ; " RX from master = " ; B
Rbit = 0
End If
Loop
End
' ISR per SPI0
Spi0_isr:
! push r24
! in r24,sreg
! push r24
B = SPI0_DATA
SPI0_DATA = Bsend
Rbit = 1
SPI0_INTFLAGS = &H80 ' SPI_IF_bm (bit 7)
! pop r24
! out sreg,r24
! pop r24
Return
|