Zwei µC per SPI verbinden (Bascom)

    Zwei µC per SPI verbinden (Bascom)

    Hallo zusammen,
    um das Verständnis für ein Bascom Programm mit SPI zu erlangen,
    sollen zwei Atmega 16 per SPI verbunden werden.
    Am Master wird ein Taster angeschlossen und am Slave eine LED, um die
    Funktionstüchtigkeit des Busses zu zeigen.

    Ich habe mich durch verschiedene Quellen und Suchen gequält, mit nur
    begrenztem Erfolg.
    Was mir fehlt, ist ein kleines Beispiel Programm um das Verständnis zu
    bekommen, wie ich per Bascom das Obere realisiere.

    Die Verdrahtung habe ich wie folgt vorgenommen:

    SCK: Master PD5 auf PB7 Slave
    MISO: Master PD4 auf PB6 Slave
    MOSI: Master PD3 auf PB5 Slave
    SS: Master PD2 auf PB4 Slave

    Taster ist am Master PB1
    LED ist am Slave PA0

    Muss sich aber keiner dranhalten.

    Vielleicht kann mir ja Jemand weiter helfen. Gruß
    Aus der Bascom Hilfe habe ich Folgendes zusammen gebastelt,
    was mir fürs Verständnis aber so nicht hilft.

    $regfile = "M16def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100

    Config Spi = Soft , Din =Pinb.0 , Dout =Portb.1 , Ss =Portb.2 , Clock =Portb.3

    Dim B As Byte
    Dim A(10) As Byte

    Spiinit
    B = 5

    Spiout A(1) , B
    Spiin A(1) , B

    A(1) = Spimove(a(2))
    End

    Für jede Hilfe bin ich dankbar. Gruß
    Ich habe mir nun folgendes überlegt per hard spi,
    muss ich die µC jeweils einzelnt brennen oder macht der Master das mit?
    Je nach dem, wie sollte ich den Master und Slave mit einander verbinden?
    $regfile = "M16def.dat" 'es handelt sich um einen ATmega16
    $crystal = 16000000 'der eingebauter RC-Oszillator läuft mit 16 Mhz
    $hwstack = 100 'im Speicher werden für den Hardware-Stack 100 Byte reserviert
    $swstack = 100 'im Speicher werden für den Software-Stack 100 Byte reserviert
    $framesize = 100


    Dim X As Bit
    Dim Y As Bit
    Dim X_send(8) As Byte

    Taster1 Alias Pind.0 'Taster1 an PD0
    Config Taster1 = Input

    Taster2 Alias Pind.1 'Taster2 an PD0
    Config Taster2 = Input

    Led0 Alias Portb.0 'LED0 an PB0
    Config Led0 = Output

    Led1 Alias Portb.1 'LED1 an PB1
    Config Led1 = Output


    Do

    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1



    If Taster1 = 0 Then X = 1 Else X = 0

    X = X_send(1)

    Spiout X_send(1) , 2

    Loop

    End

    Do

    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = No , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 0

    Spiin X_send(1) , 2

    Y = X_send(1)

    If Y = 1 Then Portb.0 = 1 Else Portb.0 = 0

    Loop

    End
    Hallo,


    ich kenn mich zwar auch nicht aus aber ich versuch mal zu helfen(demnächst muss ich mich wohl auch in die Materie reinlesen)

    wenn kein Grund dagegenspricht(Pins schon belegt oder so) würde ich auch erstmal Hard SPI nehmen.
    Ja du musst beide AVRs mit deinem Programm flashen
    Der Main Loop (Do[...]Loop) muss in 2 verschiedene Programme aufgeteilt werden.1 x Für den Master und 1 x für den Slave
    Bist du sicher dass der Mega16 einen 16MHz internen Takt hat? ich dachte nur 8MHz...

    SPI Verbinden, einfach SCK MOSI und MISU miteinander verbinden und ein CS Signal generieren das sollte es Hardwareseitig schon gewesen sein.
    lies das hier mal durch(Übrigens der 1. Link wenn man Google mit AVR und SPI füttert)

    EDIT: hier ist noch ein Link

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Snowfly“ ()