- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 62

Thema: ASM für SPI .. ist das richtig so?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.02.2005
    Ort
    Erfurt
    Alter
    60
    Beiträge
    134
    @Magnetus

    Danke für Deine sehr fleißige Zuarbeit

    Ich habe mich in den letzten Stunden etwas reingelesen in diese interessante Materie.

    Grundsätzlich muss man ersteinmal festlegen, in welcher Bertriebsart der Master und der Slave arbeiten soll.

    Ich denke, für die meisten Anwendungsfälle (1Master 1Slave) genügt es wenn man ohne Chip-Selct arbeitet.


    SS-PIN beim Master und beim Slave.

    MASTER:
    Wird als Ausgang konfiguriert.
    Wird LOW, wenn Master was senden möchte.

    SLAVE:
    SS ist als Eingang definiert.
    Slave bleibt so lange inaktiv, bis SS low wird

    Diese Betriebsart wird im
    "SPI Control Register – SPCR" festgelegt.

    Bei der Grund -Initialisierung des Masters und des Slaves sind / können o.g. Einstellungen vorzunehmen. s.Datenblatt:

    SPI_MasterInit:
    ; Set MOSI and SCK output, all others input
    ldi r17,(1<<DD_MOSI)|(1<<DD_SCK)
    out DDR_SPI,r17
    ; Enable SPI, Master, set clock rate fck/16
    ldi r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)
    out SPCR,r17
    ret

    SPI_SlaveInit:
    ; Set MISO output, all others input
    ldi r17,(1<<DD_MISO)
    out DDR_SPI,r17
    ; Enable SPI
    ldi r17,(1<<SPE)
    out SPCR,r17
    ret



    Überprüfe mal bitte Dein Programmcode, ob die Initialisierung genauso vorgenommen wurde? Ob die gleichen Bits in dem Register SPCR gesetzt wurden sind?

    Wenn ich alles jetzt richtig vertstanden habe, dann kein ein Master immer Daten senden !!!, auch wenn kein Slave vorhanden ist, d.h. werden pausenlos Daten vom Master gesendet, dann hat man immer Pegeländerungen an: SCK MOSI und SS oder?


    >Grundsätzlich wird der Slave immer mit auf Low-gehaltener /SS Leitung >aktiviert.

    Ja das sehe ich auch so, dass der Slave immer mit einem LOW an SS aktiviert wird.


    Ich habe etwas im Internet dazu gefunden, ich stell es Dir / Euch mal zur Verfügung.

    Ich werde mir als nächstes einen MASTER programmieren,

    ich denke, wir bekommen SPI schon zum laufen


    PS:

    in Deinem Programm steht:

    ldi temp, 0b01010001 ; SPIEnabled, MasterMode, SPI .....
    out SPCR, temp


    besser wäre:

    ldi temp, ,(1<<SPE)|(1<<MSTR)|(1<<SPR0); SPIEnabled.....
    out SPCR, temp

    Denn Durch die Schreibweise "0b01010001" muss man erst auwändig im Datenblatt nachschauen, welches Bit gesetzt ist.

    und

    durch "0b01010001" kann man sich schnell mal verzählen, oder vertippen, gel ?



    Gruß

    Bernhard
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

Solar Speicher und Akkus Tests