Hallo, ich muss mich leider an die Community wenden, weil ich keine Idee mehr habe wo mein Problem liegt. Ich möchte mittels externen ADC (AD7495) eine Spannung messen. Der Ad Wandler ist Hardwaremaessig am SPI Bus des ATmega16. Die ADC Routine laeuft folgend ab: Ich setze CS (SS) auf Low danach schiebe ich ueber MOSI 2* 8Bit raus, nachdem 16 Clocksignal (SCLK) setze ich CS (SS) wieder auf High. Eigentlich sollte ich jetzt alle Daten ueber MISO empfangen haben. Gebe ich mir den 16Bit Wert aus erhalte ich immer 0. Ich hab im Anhang meine Routinen und hoffe jemand hat nen Tipp fuer mich wo mein Problem liegen koennte. µC: AVR ATMEGA16 @4Mhz Gruß, Dirk
Hallo Dirk, >Ich setze CS (SS) auf Low danach schiebe ich ueber MOSI 2* 8Bit raus, >nachdem 16 Clocksignal (SCLK) setze ich CS (SS) wieder auf High. Überprüfe bitte zuerst die Hardware, mit einer einfachen LED oder einem Oszi folgendes prüfen: - geht CS wirklich auf LOW ? - werden wirklich an MOSI Daten gesendet? wenn das funktioniert, kannst Du MOSI und MISO miteinander verbinden, d.h. der Master empfängt seine eigenen Daten, somit kannst Du Deine Software Master-Seitig schonmal testen. Bernhard
Hi, /CS habe ich geprüft indem ich einige Warteschleifen >1Sek beim /CS Wechsel eingefuegt habe. MOSI und MISO werde ich heute abend mal miteinander verbinden und prüfen. Leider besitze ich hier kein DSO sonst würde ich einmal kurz die Daten sampeln, falls jemand ncoh einen Tipp hat wuerde ich mich ueber eine Antwort freuen. Ich werde heute abend nochmal Bericht erstatten. Gruß, Dirk
Hi, so habe mal MISO und MOSI verbunden und ich erhalte die Sendewerte. Der AD Wandler gibt mir immer noch 0 zurueck. Ich hab keine Idee mehr und kann mir das nicht erklaeren. Gruß, Dirk
Hallo Dirk, Welchen Wert haben die Pull-Up-Widerstände ? Clock Polarity und Clock Phase geprüft ? Nicht dass Dein AD7495 die Signale nicht versteht ;) Könntest Du uns Deine Schaltung zur Verfügung stellen? Bernhard
Hallo,
>Welchen Wert haben die Pull-Up-Widerstände ?
Der Pullup am /CS Pin betraegt 10k. Für MISO hab ich keinen bzw. auch
keinen internen aktiviert. Ein Test mit aktivierten internen Pullup
blieb leider auch ohne Erfolg.CPOL habe ich in der Init beachtet (CPOL
= 1). Eine Test mit CPHA 1 und 0 blieb leider ohne Erfolg.
Eine kleine selbst geschriebene Funktion zur Ausgabe des Clocks und des
Samplen der Daten auf Miso brachte auch nix.
Ein Screenshot befindet sich im Anhang. Vin geht auf ein Spgteiler zum
Schutz des ADC's.
Langsam bestaerkt sich das Gefuehl das der Chip aus irgendwelchen
Gruenden defekt ist.
Gruß,
Dirk
Hab mir gerade mal das Datenblatt angeschaut. Ist ja interessant, der AD7495 kann nur über MISO Daten an den µC senden. Demzufolge ist MOSI bei Dir am µC nicht beschaltet? Wenn ich es jetzt richtig überschaut habe, dann sendet der AD7495 sofort Daten, wenn CS auf LOW gezpgen wird und SCK einen Takt sendet. Aber welche Bedeutung hat VDrive ?
Hi, >Wenn ich es jetzt richtig überschaut habe, dann sendet der AD7495 >sofort Daten, wenn CS auf LOW gezpgen wird und SCK einen Takt sendet. Richtig, lowpegel liegt bei 0,3V an /SS. VDrive ist fuer die SPI I/O's (5V/3,3V Systeme). >Demzufolge ist MOSI bei Dir am µC nicht beschaltet? MOSI haengt offen, weil ich nur die Clockimpulse benoetige und das samplen auf MISO. Der AD Wandler besitzt auch keine Register fuer Commando's / Einstellungen. Ich hab mir jetzt nochmal ganz genau die PCB angeschaut und so wie es aussieht hat der Bestueckungsautomat nen Kondensator verloren. Der Kondensator ist zwischen MISO und /SS verloetet. Leider kann ich erst morgen diesen entfernen und testen. Ich gebe morgen abend bescheid, ob die Entfernung zum Erfolg fuehrte. Ich bedanke mich recht herzlich fuer deine Beteilung @Bernhard Gruß, Dirk
>Der Kondensator ist zwischen MISO und /SS verloetet. Das könnte natürlich die Ursache sein >Ich bedanke mich recht herzlich fuer deine Beteilung gern geschehen Bernhard
Hallo, ich wollte nur kurz bescheid geben. Der AD Wandler funktioniert jetzt einwandfrei. Es war kein Softwarefehler sondern es lag am Kondensator zwischen /SS und SCLK, durch diesen Kondensator hat sich die Rise und Fall Time des Clocksignals so stark veraendert. Gruß, Dirk
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.