www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ext. 16bit - ADC über SPI einlesen


Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute.
Nachdem ich hier schon oft geholfen wurde.....

Ich würde gern über SPI nen MAX186 (12bit) oder gar nen 16-bitter über
SPI betreiben, aber irgendwie hakt bei mir ne Hirnwindung.
Sehe ich das richtig, dass der AVR nur nen SCK ausgibt, wenn ich was in
SPDR schreib?
Das heißt also , ich sende dem Maxim-ADC ein Befehlswort und dann 2mal
8bit(irgendwas) damit der SCK den Maxim-ADC veranlasst, mir die Daten
zu senden !?
Scheint mir "komisch". grübel
Oder hat da jemand ne bessere Idee ???

Danke

Autor: Rockhound (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist leider so.
Habe selbst einen MAX1270, der laut Datenblatt praktisch das gleiche
Protokol benutzt.

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmmm. na gut , dann werd ich das wohl auch so machen.

Danke

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Ja, das ist leider so."

Nein, das ist gut so, sonst könnte es nämlich überhaupt nicht
funktionieren.

Der Takt muß stehenbleiben, sonst sind die Daten ja sofort wieder
rausgeschoben, ehe Du den Latchimpuls gesetzt hast.


Peter

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uwe,

ich benutze zwar den MAX1284 aber das funktioniert doch etwas anders
als beschrieben. Der ADW wird über CS\ aktiviert, damit startet er!
Allerdings muß ihm von außen der Takt dazu bereitgestellt werden. Die
16 Bit Takt ergeben also sofort 2 Byte Daten. Mit der pos Flanke des CS
ist der Vorgang abgeschlossen.
Lediglich die dazu passenden DAW (wie hier der MAX5712) müssen nach
StromEIN einmalig konfiguriert werden.
Falls Dich eine Schaltung dazu interessiert melde Dich bitte.

MfG  Manfred Glahe

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Manfred,

das Protokoll für den ADC ist mir schon klar. Das was du beschreibst,
ist die Option External-Clk-Conversion, kommt aber
prinzipiell auf das gleiche raus. Bei Internal-Clk-Conversion steht
das Ergebnis halt schon bereit , wenn die 16 Takte kommen.

Mein Problem , wenn man das überhaupt so nennen kann, war die Erzeugung
des Taktes im AVR , wenn man nichts zu senden hat.
Deswegen "unfug" senden (damit SCK erzeugen) und gleichzeitig
die beiden Datenbyte nacheinander empfangen. Der Punkt steht ja
immernoch im Raum. Ich dachte halt nur , man kann ein Register setzen,
wonach der Takt weiter ausgegeben wird um externe Daten lesen zu
können.

Aber ich bin trotzdem an deinem Projekt interessiert, man lernt ja nie
aus, und vielleicht kann ich mein Projekt ja "anlehnen" ;-)

Danke
Uwe

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uwe,

den AVR kenne ich nicht. Da habe ich dann wohl etwas mißverstanden.
Ansonsten ist der Übertragungsvorgang SPI schon sinnvoll, denn einem
ADW mit MISO und MOSI kann man dann z.B. mit einer Übertragung eine
neue Kanalnummer zuweisen und gleichzeitig den aktuellen Kanal
auslesen. Die Redundanz im anderen Fall ist akzeptabel.
Im Anhang mal das Datalogger Projekt mit einem HC811E2 als Steuer- µP
an der Schnittstelle (dort könnte auch ein anderer µP eingreifen).

MfG  Manfred Glahe

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Der steuerteil.

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die Frontplatte.

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

sieht recht interessant aus. Werde ich heute abend bei nem Bier mal
unter die Lupe nehmen.... ;-)

Uwe Seidel

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uwe,

die restlichen Dateien (HC11 Assembler und TXT) erklärt vorab einiges.
Falls Du Fragen hast melde Dich.

MfG  Manfred Glahe

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und nochmal:

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Uwe

> Mein Problem , wenn man das überhaupt so nennen kann, war die
> Erzeugung
> des Taktes im AVR , wenn man nichts zu senden hat.
> Deswegen "unfug" senden (damit SCK erzeugen) und gleichzeitig
> die beiden Datenbyte nacheinander empfangen. Der Punkt steht ja
> immernoch im Raum. Ich dachte halt nur , man kann ein Register
> setzen,
> wonach der Takt weiter ausgegeben wird um externe Daten lesen zu
> können."


Richtig, das ist "unfug".

Wenn der Takt freilaufen würde, wüßte das SPI ja nicht wann denn
überhaupt die Daten anfangen. Und es würden auch schon die nächsten
Bits rausgeschoben, wärend Du noch nicht das 1. Byte gelesen hast.
Damit wäre spätestens das 2. Byte voll fürn Arsch.

Sei also froh, daß das SPI nur exakt 8 Pulse pro Byte macht und dann
schön geduldig wartet, bis Du das Byte ausgewertet hast.

Ich benutze auch den MAX1270 und setze ihn auf internen
Konversionstakt. Damit ist ein externer Takt völlig überflüssig.

Für 12 Bit liest man einfach 2*8 Bit aus und schmeißt die letzten 4
Bits weg (siehe das 16 Cycle Taktdiagramm).


Peter

Autor: Rockhound (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig Peter.

Autor: Uwe Seidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs ja verstanden, ist mir auch vorher schon klar gewesen, ich hab
nur nach ner eventl. vorhandenen anderen Möglichkeit gesucht.

Hätte ja auch sein können, dass ne Antwort kommt á la :
"Mach es doch so, oder hast du das nicht gewusst?"

Trotzdem danke für eure Antworten.

Uwe

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.