Hallo, mit den Datenblatt Angaben zur Konfiguration von MISO für den SPI-Slave Modus eines Mega128 komme ich nicht ganz klar. Der Pin sei erstens als Ausgang zu initialisieren: Damit würde doch aber eine bereits laufende Kommunikation mit mehreren Busteilnehmern gestört! Nun folgt SPI-Enable: Alle Pins (so auch MISO) seien nun Eingang bis "When /SS is held low... MISO becomes an output if configured so by the user" Meine Frage: Wo wird das konfiguriert und erinnert? Im zu MISO zugehörigen DDR Bit? Mit /SS high wird am Ende die SPI Logik zurückgesetzt und MISO wieder Eingang. Muss MISO für die nächste Übertragung nun manuell erneut als Ausgang konfiguriert werden? Es sollen permanent Daten vom Mega128 angefordert werden können. Gerd
Zu diesem Thema gibt es hier massig Informationen.
Gerd schrieb: > MISO becomes an output if configured so by the user" Meine Frage: Wo > wird das konfiguriert und erinnert? Im zu MISO zugehörigen DDR Bit? Ja. > Mit /SS high wird am Ende die SPI Logik zurückgesetzt und MISO wieder > Eingang. Muss MISO für die nächste Übertragung nun manuell erneut als > Ausgang konfiguriert werden? Nein.
MISO bleibt SPI-enabled also stets unter Kontrolle des SPI? Ich frage deshalb weil der Direction-Zustand laut Tabelle "SPI Pin Overrides" fälschlicherweise User—Defined angibt! Die Erst-Initialisierung als Ausgang mit ihrer Auswirkung auf laufende Kommunikationen bleibt weiter schleierhaft und nein, OldMan schrieb: > Zu diesem Thema gibt es hier massig Informationen. die halfen auch nicht weiter, deshalb fragt man ja...
Gerd schrieb: > Die Erst-Initialisierung als Ausgang mit ihrer Auswirkung auf laufende > Kommunikationen bleibt weiter schleierhaft Auf welche laufende Kommunikation? Wenn der Master einfach drauflos sendet, und der Slave irgendwann mitten drin eingeschaltet wird, dann solltest du mit der Initialisierung das Ende der laufenden Kommunikation abwarten (SS geht high). Ansonsten gibt es eh nur Datensalat. Ausserdem steht nirgends, daß man erst das DataDirectionBit setzen muß, bevor SPI enabled wird. Oliver
:
Bearbeitet durch User
Oliver S. schrieb: > Auf welche laufende Kommunikation? Wenn der Master einfach drauflos > sendet, und der Slave irgendwann mitten drin eingeschaltet wird, dann > solltest du mit der Initialisierung das Ende der laufenden Kommunikation > abwarten (SS geht high). Ok wäre eine Möglichkeit, aber nur wenn man es bei intensiver Kommunikation zeitmäßig auf dem Slave schafft die Lücke auszunutzen. Das Problem entschärft sich dadurch, daß man meist alles zusammen am Bus nach Reset initialisiert, trotzdem bleibt es irgendwie unsauber gelöst. Denn > Ausserdem steht nirgends, daß man erst das DataDirectionBit setzen muß, > bevor SPI enabled wird. ist nicht richtig. VOR dem SPI Einschalten ist im SLAVE Modus MISO auf Ausgang zu schalten. Das findet sich auch in den Initialisierungen im Datenblatt wieder. Womit meine Frage > MISO bleibt SPI-enabled also stets unter Kontrolle des SPI? > Ich frage deshalb weil der Direction-Zustand laut Tabelle "SPI Pin > Overrides" fälschlicherweise User—Defined angibt! weiter unbeantwortet bleibt.
Gerd schrieb: > ist nicht richtig. VOR dem SPI Einschalten ist im SLAVE Modus MISO auf > Ausgang zu schalten. Und das steht wo zum Nachlesen? Die Programmbeispiele zählen nicht, das sind eben nur Beispiele. Oliver
Wenn der Slave keine Daten zum Master senden muß, also nur Befehlsempfänger ist, kann doch MISO im Slave ein Input bleiben.
Oliver S. schrieb: > Gerd schrieb: >> ist nicht richtig. VOR dem SPI Einschalten ist im SLAVE Modus MISO auf >> Ausgang zu schalten. > > Und das steht wo zum Nachlesen? Die Programmbeispiele zählen nicht, das > sind eben nur Beispiele. Nur Beispiele? Die Vorgehensweise findet sich in jedem Beispiel. Auch die Initialisierungsanläufe in der AVR151 App Note "Setup and Use of the SPI" zeigen nichts anderes.
grüner schrieb: > Wenn der Slave keine Daten zum Master senden muß, also nur > Befehlsempfänger ist, kann doch MISO im Slave ein Input bleiben. Der Mega128 sendet gleichzeitig Daten zurück.
Gerd schrieb: > grüner schrieb: >> Wenn der Slave keine Daten zum Master senden muß, also nur >> Befehlsempfänger ist, kann doch MISO im Slave ein Input bleiben. > > Der Mega128 sendet gleichzeitig Daten zurück. Wenn der Master die Daten vom Slave nicht braucht, kann er sie ignorieren. Dann ist es auch egal ob vom Slave-Mega128 was ankommt. Deshalb kann der MISO am Slave-Mega128 ein Input sein.
Gerd schrieb: > Nur Beispiele? Die Vorgehensweise findet sich in jedem Beispiel. > Auch die Initialisierungsanläufe in der AVR151 App Note "Setup and Use > of the SPI" zeigen nichts anderes. Das sind Beispiele, da werden nicht alle möglichen Varianten aufgelistet. Oliver
grüner schrieb: > Wenn der Master die Daten vom Slave nicht braucht Doch der braucht sie auch. Oliver S. schrieb: > Das sind Beispiele, da werden nicht alle möglichen Varianten > aufgelistet. Andere Varianten fand ich bislang nirgens. Im Zweifelsfall hätte ich mich dann doch lieber aufs Datenblatt verlassen. Aber Du meinst man könnte MISO auch noch nach SPI-Enable auf Ausgang schalten? Was würde dann passieren? Der Pin ginge dann wirklich auf Ausgang oder wird er durch /SS high noch dran gehindert?
Gerd schrieb: > Im Zweifelsfall hätte ich mich dann doch lieber aufs Datenblatt > verlassen. Ich auch, aber nicht auf die Beispiele da drin, denn sie sind a) wie schon gesagt, nur Beipiele und b) manchmal auch noch falsch. Verlassen kann man sich (meistens) auf den Text, und die dazugehörigen Tabellen. Und da gibt es keine Hinweise darauf, daß das DDR vor Aktivierung des SPI gesetzt werden muß. Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.