Verständnisfrage ATmega128 + SPI + SPOL-Bit

Gast #1263994
Lesenswert?
• ▲
▼
Hallo,

ich habe hier einen 16-Bit-ADC, der laut Datenblatt folgendermaßen 
ausgelesen werden will (während der Wandlung sollen SS und SCK beide 
high sein).

* SS auf low
* SCK auf low (soll High wenn inaktiv sein). Dann legt der ADC sein Bit 
15 auf MISO.
* SCK auf high und dabei Bit 15 samplen
* SCK auf low, damit gibt der ADC Bit 14 aus.
* SCK auf high und dabei Bit 14 samplen
usw.
* anschließend SCK und SS auf high "parken"

Programmier ich das Ganze per Bitgewackel, funktionierts, sprich ich 
bekomme sinnvolle Werte raus.

Nutze ich die Hardware-SPI vom ATmega128, ist nach meinem Verständnis 
des Datenblatts CPOL = 1 und CPHA = 0 die richtige Einstellung für das 
oben beschriebene Timing. Damit funktionierts aber nicht: Werte bis 32k 
kommen halbiert raus, Werte ab 32k halbiert aber dafür +32k. Anscheinend 
wird das MSB doppelt gesampelt und das LSB gar nicht.

Was kann das sein? Sampelt der ATmega evtl. schon direkt nach dem 
Beschreiben von SPDR, also vor dem ersten Clockzyklus? Wie muß ich die 
SPI konfigurieren?

Grüße, Sebastian
Gast #1264389
Lesenswert?
• ▲
▼
Ah ich bin mittlerweile auch drauf gekommen nach nochmaligem Studieren 
des ATmega-Datenblatts.

CPOL = 1 und CPHA = 0 ergibt Leading Edge = Sample (Falling), Trailing 
Edge = Setup (Rising). Das ist natürlich genau falschrum...

Werds demnächst nochmal probieren...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren