- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 2 von 2

Thema: SPI...aber wie?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2004
    Ort
    Ilmenau
    Alter
    45
    Beiträge
    16

    SPI...aber wie?

    Anzeige

    Praxistest und DIY Projekte
    Hallo Leute, ich hoffe einer von euch kann mir helfen.
    Ich will zwei Chips über SPI miteinander Kommunizieren lassen. Einer steckt auf einem STK500 und einer auf einer selbstgelöteten Platine. Beides Mega8.
    Der auf dem Stk500 ist der Slave und wenn er das Byte "0101_1010" erhalten hat, soll eine bestimmte LED blinken.
    Klappt irgendwie aber nicht.
    Diverse Messungen mit dem Oszi haben ergeben, dass die Signale an den Pins anliegen. Aber übernehmen tut er sie offensichtlich nicht. Vielleicht ist was am Quellcode falsch? Ich kann den fehler nicht finden. Bitte helft wenn ihr könnt. Habe ein ähnliches Problem mit I2C.

    Master
    Code:
    '------------------------------------------------------------------
    '                           SPI-Master-radbaugruppe-SS.BAS
    'Programm zum Nachweis der SPI-Funktiom des Masters mit selbstgewähltem SS-Pin
    'Master ist ein Mega8 auf dem Board der Radbaugruppe mit 16MHz Taktfrequenz
    'Es handelt sich um die angepasste Version von "spi-master-Stk500,bas"
    '/SS hier selbst gewählt (PC2)
    '----------------------------------------------------------------
    $regfile = "m8def.dat"
    $crystal = 16000000
    $baud = 19200
    
    Dim B As Byte
    'PB4(MISO) ist Eingang, Rest sind Ausgänge
    Ddrb = &B1110_1111
    'alle Pins von PortC= Ausgänge
    Ddrc = &B1111_1111
    
    'selbstgewählter /SS-Pin
    Ss Alias Portc.2
    'zur Übersicht
    Mosi Alias Portb.3
    Miso Alias Portb.4
    Sck Alias Portb.5
    '----------------
    
    Enable Interrupts
    
    Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16
    'zu sendendes Byte
    B = &B0101_1010
    
    'Datenregister initialisieren
    Spdr = 0                                                    ' start with sending 0 the first time
    
    'SPI pins initialisieren
    Spiinit
    
    Do
    
       Reset Ss                                                 '/SS auf log. "0" ziehen -> Start der Übertrag
         Spiout B , 1                                           'Sendebefehl, sendet 1 Byte
       Set Ss                                                   '/SS wieder log."1" -> beendet Übertrag.
    
    Loop
    
    
    End
    Slave
    Code:
    '------------------------------------------------------------------
    '                           SPI-slave_stk500-LED.BAS
    'Programm zum Nachweis der SPI-Funktiom des Masters
    'Master ist ein Mega8 auf dem STK500 mit 8MHz Taktfrequenz
    '+ LED 5 blimkt, wenn Datenregister SPDR = 0 (Startwert)
    '+ LED 4 blinkt, wenn Datenregister SPDR = B (B = vom Master gesendetes Byte)
    '----------------------------------------------------------------
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 19200
    
    
    
    Ddrb = &B0001_0000
    Config Portd = Output                                       'LEDs
    '\SS = Portb.2
    'MOSI = Portb.3
    'MISO = Portb.4
    'SCK = Portb.5
    
    'Hilfsvariable um Lesezugriff auf SPDR zu testen
    Dim Hilf As Byte
    Dim B As Byte
    
    Dim _ssspdr As Byte                                         ' dies ist das SPI SLAVE SPDR register
    Dim _ssspif As Bit                                          ' SPI interrupt revceive bit
    Dim _ssspsr As Byte                                         'SPI Statusregister Bit 7 muss gesetzt werden, wenn Übertragung beendet
    B = &B0101_1010
    
    'SPI konfigurieren
    Config Spi = Hard , Data Order = Msb , Master = No , Polarity = Low , Phase = 0
    
    'SPI pins initialisieren
    Spiinit
    _ssspdr = 0
    
    Do
       Hilf = _ssspdr
       If Hilf = 0 Then
        Portd.5 = Not Portd.5
        Waitms 400
       End If
       If Hilf = B Then
        Portd.4 = Not Portd.4
       'Portd = _ssspsr
        Waitms 400
       End If
    
    Loop
    
    End
    MfG
    Christian
    Angehängte Dateien Angehängte Dateien

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2004
    Ort
    Ilmenau
    Alter
    45
    Beiträge
    16
    Konnte jemand von den Downloadern schon was damit anfangen oder hat einen Fehler gefunden?
    Würde mich über Feedback freuen.

    Christian

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress