www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR-SPI-Master mit 16 Bit möglich?


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute, hätte eine Frage: Ich möchte einen Chip (AS1107) ansteuern 
und muss ihm dafür 16 Bit über SPI schicken. Ist das mit einem AVR 
möglich?
(Bin auf diesem Gebiet noch Anfänger)

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ohne weiteres.
Das CS-Signal ist unter der Kontrolle des AVR.
Nachdem man das 1. Byte geschickt hat, wird ein weiters geschickt, ohne 
CS nach oben zu ziehen.
Erst danach wird CS wieder auf 1 gesetzt.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Falser schrieb:
> Nachdem man das 1. Byte geschickt hat, wird ein weiters geschickt, ohne
> CS nach oben zu ziehen.
> Erst danach wird CS wieder auf 1 gesetzt.

Dann darfst du aber nicht das CS-Signal der SPI-Einheit nehmen, sondern 
musst einen anderen Pin als CS-Signal missbrauchen, den du dann zu Fuß 
bedienen musst.

Denn wie du richtig bemerkst:

Klaus Falser schrieb:
> Das CS-Signal ist unter der Kontrolle des AVR.

Und der setzt das CS-Signal der SPI-Einheit nach jedem Byte wieder auf 
High.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und der setzt das CS-Signal der SPI-Einheit nach jedem Byte wieder auf
>High.

Falls ihr das SS [slave select] Signal meint:

Wenn der AVR im Master-SPI-Modus läuft, setzt er das \SS-Signal nicht 
von allein. Es ist nur entscheidend, dass dieses Pin ein Ausgang ist, 
sonst schlaltet der Master zwischendrin mal auf SPI-Slave um.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Lipinsky schrieb:
> Falls ihr das SS [slave select] Signal meint:

Ja, gut, ob SS oder CS, gemeint ist das gleiche. Atmel nennt es SS, 
andere auch mal gerne CS.

Matthias Lipinsky schrieb:
> Wenn der AVR im Master-SPI-Modus läuft, setzt er das \SS-Signal nicht
> von allein.

Aus dem Datenblatt vom ATmega8:

"After each data packet, the Master will synchronize the Slave by 
pulling
high the Slave Select, SS, line."

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ja, gut, ob SS oder CS, gemeint ist das gleiche. Atmel nennt es SS,
> andere auch mal gerne CS.

Das ist Quatsch!

SS ist Slave-Select. Es schaltet die SPI-Einheit zwangsweise in den 
Slave-Mode, um Multimaster-Kommunikation zu ermöglichen. Es ist 
keinesfalls ein Signal zur Datenübernahme (wie z.B. Strobe) und auch 
kein Chip-Select zur Auswahl eines Busteilnehmers.

...

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... schrieb:
> Aus dem Datenblatt vom ATmega8:
>
> "After each data packet, the Master will synchronize the Slave by
> pulling
> high the Slave Select, SS, line."

Hast Du schon einmal das SPI Interface verwendet? Ich schon.
Also :
SS und CS sind 2 verschiedene Sachen.
- SS ist ein Pin der AVR SPI Einheit und dient dazu, den AVR als Slave 
zu selektieren.
Wenn man den AVR nur als Master verwendet, dann sollte man SS als 
Ausgang konfigurieren, damit die SPI Einheit sich nicht 
fälschlicherweise auf Slave umkonfiguriert. Damit wird der SS Pin zu 
einem beliebigen Ausgang, der natürlich als CS für den anzusprechenden 
SPI-Slave verwendet werden kann.
Aber das Löschen und Setzen des als CS-Signal verwendeten Pins muss der 
AVR per Software machen.
Ein 16 Bit transfer schaut deshalb so aus :
- AVR zieht CS nach unten und wartet ein paar µs, so wie es im 
Datenblatt des Slave angegeben ist.
- Der AVR startet den SPI 8 Bit Transfer und wartet bis er abgeschlossen 
ist.
- Der AVR started den 2. SPI 8-Bit Transfer und wartet wiederum bis zum 
Ende.
- Der AVR wartet noch ein paar µs laut Datenblatt und zieht CS wieder 
nach oben.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, ich glaube, das bekomme ich hin.

Vielen Dank für die raschen Antworten!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.