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
Ja, das ist leider so. Habe selbst einen MAX1270, der laut Datenblatt praktisch das gleiche Protokol benutzt.
"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
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
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
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
Danke, sieht recht interessant aus. Werde ich heute abend bei nem Bier mal unter die Lupe nehmen.... ;-) Uwe Seidel
Hallo Uwe, die restlichen Dateien (HC11 Assembler und TXT) erklärt vorab einiges. Falls Du Fragen hast melde Dich. MfG Manfred Glahe
@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
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
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.