Zwischen ADC & uC über SPI kommunizieren

Gast #2417886
Lesenswert?

Hey,

ich möchte mittels ADC081S021CIMF Analog-Digital Konverter (8bit) mit 
einem Atmel at90usb162 über SPI kommunizieren.

Habe ein Programm geschrieben, in dem ich einen Timer verwende, der alle 
0.5sec einen Interrupt auslöst, indem ich das CS# auf 0 ziehe, um eine 
Konversion zu starten. (Im SPI Transmition Complete Interrupt ziehe ich 
CS# wieder auf 1) Wie an angehängten Bildern zu sehen ist, klappt alles, 
bis auf die Ausgabe/Konversion der Daten. Aber der ADC ist nagelneu, 
also glaube ich nicht, dass der kaput ist?! Man beachte vor allem den 
Spannungspegel des Datensignals!.

Habt ihr eine Idee woran das liegen könnte?

Mit freundlichen Grüßen
Peter
Angehängte Dateien:
Gast #2418097
Lesenswert?

Hey,

also im Anhang nun der relevante Teil der Schaltung und der Code.

@Schaltung.png
PB0...SS# (general purpose output bei mir)
PB1...SCLK
PB3...MISO

Bezüglich 16bit auslesen:
Ich verwende wie gesagt die SPI Einheit des at90usb162 und die erzeugt 
automatisch ein SCLK Signal wie in erstem Post, das 8 Flanken hat (weil 
ja auch das Datenregister nur 8 Bit hat) Um wirklich 16 Bit auszulesen 
müsste ich das SCLK Signal softwaremäßig erzeugen, oder?

Mit freundlichen Grüßen
Peter
Angehängte Dateien:
Gast #2418968
Lesenswert?

Hey,

die ist Konstant auf 5V. Hab natürlich nen 1uF Kondensator wie im 
Datenblatt drinnen, den man auf der Schaltung nicht sieht, weil ich den 
vergessen hatte, aber er ist da und Spannung ist auch konstant.

MfG. peter
#2418976
Lesenswert?

Der Datenausgang des ADC haengt seinerseits an einem Ausgang des 
Controllers. Fehlt ein Pullup ? Allenfalls das Timing verlangsamen, zB 
1us pro Bit. Meist muss man den ADC auch noch konfigurieren, das waere 
auch ueber den Daten-Pin ? Dann koennte es sein, dass der ADC noch gar 
nicht im Auslese-Zustand ist.
Gast #2419006
Lesenswert?

@Stefan Ernst
Das habe ich bereits ebenfalls versucht, doch leider ist die 
Interruptbehandlung nicht schnell genug, dass das komplett ohne Pause 
geht, auch wenn ich im Transmit Complete Interrupt sofort wieder eine 
Übertragung starte entsteht eine Pause (siehe Bild Anhang). Aba danke 
für den Tipp.

MfG. peter
Angehängte Dateien:
Gast #2419794
Lesenswert?

Hey,

@Stefan Ernst
Ja so klappt es! Vielen vielen Dank! Man, dass ich da nicht slebst drauf 
gekommen bin, nachdem der Auslesevorgang ja sogar so im Atmel Datenblatt 
gezeigt wird facepalm. Naja Hauptsache es geht.

Danke!

MfG. peter

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