Ich habe ein Problem mit dem o.g. ADC. Ich versuche das Blockdiagramm zu verstehen, den englischen Text verstehe ich nur sehr schlecht, weil mein Englisch miserabel ist. Es gibt dort die Kontakte CS_quer WR_quer RD_quer INTR_quer CLK IN CLK R INTR_quer scheint kein Eingang zu sein, sondern ein Ausgang, wo ich z.B. eine Diode anschließen könnte. INTR_quer leuchtet also theoretisch auf, wenn ein Zyklus abgelaufen ist, der ADC die Spannung gemessen hat und die entsprechenden Datenleitungen D0-D7 dann den Wert low/high annehmen. CS_quer interpretiere ich als eine Art Ein- und Ausschalter. Es gibt die beiden Kombinationen CS+WR und CS+RD in dem Funktionaldiagramm, einmal unten, einmal oben jeweils auf der linken Seite, die dann in die Und-Verknüpfung reingehen. Die ersten vier Signalkontakte haben ja das _quer dabei, also einen Strich darüber. Dass heisst doch, dass das Signal umgepolt zu verstehen ist - wenn CS_quer an Masse anliegt, also auf LOW, dann heisst es, der Eingang ist aktiv? Schalte ich CS_quer und WR_quer gegen Masse, dann führt der ADC eine Spannungsmessung aus und speichert das Ergebnis in dem Shift-Register. Wenn ich jetzt CS_quer und RD_quer gegen Masse schalte, dann bekommen die Datenausgänge D0-D7 das Ergebnis der Spannungsmessung zugewiesen, vorher kann ich keine Signale auswerten (also der Inhalt des Shift-Registers wird auf D0-D7 zum Auslesen gelegt). Jetzt kommt oben in dem Funktionsdiagramm nach dem ersten UND von CS_quer und WR_quer noch ein UND-Gatter, wo ein CLK A noch eine Rolle spielt. In dem Funk.-Diagramm kommt auch noch ein CLK B drinnen vor, leider habe ich aber an dem ADC nur CLK R und CLK IN, sind die beiden equivalent, also CLK A entspricht CLK R??? Irgendwie ist das noch komisch und ich kapiere es einfach nicht :-(
The_Beginner schrieb: > Ich habe ein Problem mit dem o.g. ADC. > > Ich versuche das Blockdiagramm zu verstehen, den englischen Text > verstehe ich nur sehr schlecht, weil mein Englisch miserabel ist. > > Es gibt dort die Kontakte > > CS_quer > WR_quer > RD_quer > INTR_quer > > CLK IN > CLK R Der Querstrich bedeutet, dass der Anschluss invertiert ist. Das bedeutet, normalerweise wird eine logische 1 mit High-Pegel signalisiert, z.B. 5V. Bei invertierten Signalen ist es dann die 0, also 0-Volt bzw. Low-Pegel der das Signal gibt. > > INTR_quer scheint kein Eingang zu sein, sondern ein Ausgang, wo ich z.B. > eine Diode anschließen könnte. INTR_quer leuchtet also theoretisch auf, > wenn ein Zyklus abgelaufen ist, der ADC die Spannung gemessen hat und > die entsprechenden Datenleitungen D0-D7 dann den Wert low/high annehmen. Ne LED wird da eher selten angeschlossen. Normalerweise hängt man diesen Pin bei seinem Mikrocontroller an einen Pin, evtl. sogar an einen Interrupt-Pin, damit dieser mitgeteilt bekommt, dass ein neuer Messwert abrufbar ist. > CS_quer interpretiere ich als eine Art Ein- und Ausschalter. Es gibt die > beiden Kombinationen CS+WR und CS+RD in dem Funktionaldiagramm, einmal > unten, einmal oben jeweils auf der linken Seite, die dann in die > Und-Verknüpfung reingehen. CS ist Chip Select. Man kann hier eben diesen Chip auswählen für eine Aktion. > Die ersten vier Signalkontakte haben ja das _quer dabei, also einen > Strich darüber. Dass heisst doch, dass das Signal umgepolt zu verstehen > ist - wenn CS_quer an Masse anliegt, also auf LOW, dann heisst es, der > Eingang ist aktiv? siehe obig. > Schalte ich CS_quer und WR_quer gegen Masse, dann führt der ADC eine > Spannungsmessung aus und speichert das Ergebnis in dem Shift-Register. Ja, er sampled dann einmal und dann bleibt er hängen in einem Resetstatus, erst wenn WR High und wieder Low wird wird wieder gesampled > Wenn ich jetzt CS_quer und RD_quer gegen Masse schalte, dann bekommen > die Datenausgänge D0-D7 das Ergebnis der Spannungsmessung zugewiesen, > vorher kann ich keine Signale auswerten (also der Inhalt des > Shift-Registers wird auf D0-D7 zum Auslesen gelegt). Wenn ich das Datenblatt richtig interpretiere dann muss dazu der WR kurz gezogen werden. RD > Jetzt kommt oben in dem Funktionsdiagramm nach dem ersten UND von > CS_quer und WR_quer noch ein UND-Gatter, wo ein CLK A noch eine Rolle > spielt. In dem Funk.-Diagramm kommt auch noch ein CLK B drinnen vor, > leider habe ich aber an dem ADC nur CLK R und CLK IN, sind die beiden > equivalent, also CLK A entspricht CLK R??? Der AD-Wandler braucht einen Takt um zu laufen. Der kann entweder extern von nem Oszillator kommen oder per RC-Glied an CLR_In und CLR_R. > Irgendwie ist das noch komisch und ich kapiere es einfach nicht :-( also ... zusammengefasst: Um eine Messung zu starten: CS -> low WR -> low kurz warten WR -> high CS -> high Wenn Int low ist (Messung fertig) CS -> low RD -> low kurz warten Port einlesen (die 8 Datenleitungen eben) RD -> high CS -> high
schade, es klappt irgendwie noch nicht :-( Weinbauer schrieb: > Der AD-Wandler braucht einen Takt um zu laufen. Der kann entweder > extern von nem Oszillator kommen oder per RC-Glied an CLR_In und CLR_R. Ich habe jetzt zwischen CLK IN und CLK R einen Widerstand von 10K gesetzt und von CLK IN zu Masse einen Kondensator mit 47nF. Reicht das als RC-Glied aus? Wenn ich am PIN Vcc/2 gegen Masse ein Voltmeter dranhänge, dann kann ich eine Spannung von über 3 Volt messen, dass erscheint mir komisch :-(, ich hatte mir einen Spannungsteiler mit zwei gleichen Widerständen gebastelt, um 2,50 Volt von der 5 Volt-Spannungsquelle zu bekommen, aber wenn am Pin Vcc/2 ja schon eine Spannung liegt, wie soll ich dort dann eine Spannung einspiesen? Oder kann ich Vcc/2 einfach tot lassen - keinen Kontakt am Pin? Die Datenkanäle D0-D7 - liefern die bei HIGH ein 5Volt-Signal? Angenommen, cih messe irgendwas dazwischen - zB. 2,5 Volt an D0, 3,3 Volt an D2 ... ist das normal oder müssten nicht alle Datenkanaele sauber 0V oder 5 Volt anzeigen, je nachdem ob LOW oder HIGH? Ich habe an den 8 Kanälen ein 8-Kanal-Oszi dranhängen, da schwirrt es halt als zwischen LOW- und HIGH unsauber hin- und her, wie ein Gebirge. Weinbauer schrieb: > Wenn Int low ist (Messung fertig) An INTR messe ich gegenüber Masse immer 5 Volt, also HIGH, Weinbauer schrieb: > CS -> low > WR -> low > kurz warten > WR -> high > CS -> high Die Reihenfolge hab ich eingehalten - ich habe noch RD an 5 Volt geschaltet, damit RD_quer sauber auf HIGH liegt. Aber INTR bleibt immer auf +5 Volt, was koennte der Fehler sein :-( ?
Aaalso ... der ADC0804 hat Tristate-Ausgänge, was bedeutet, wenn er nicht aktiv Daten ausgibt, dann ist der Pegel nicht definiert, ist praktisch offene Leitung. Dementsprechend nur Müll auf den Leitungen. Erst durch ziehen von RD auf Low wird der Datenausgang aktiviert. Wenn der RD permanent auf High liegt kann das Ding nie irgendwas ausgeben. ergänzt: Um eine Messung zu starten: RD -> high CS -> low WR -> low kurz warten WR -> high CS -> high RD -> high Auslesen der Daten Wenn Int low ist (Messung fertig): WR -> high CS -> low RD -> low kurz warten Port einlesen (die 8 Datenleitungen eben) RD -> high CS -> high WR -> high Im Datenblatt steht für das RC-Glied 10KOhm 150pF Vcc/2 kann unbenutzt bleiben oder per Spannungsteiler gesetzt sein. Wenn benutzt ist zu beachten, dass laut Schema intern n Pullup in dem Ding ist und der in den Spannungsteiler mit ein geht.
Also, ich habe das jetzt in dieser neuen Reihenfolge ausprobiert. RD an Masse, also HIGH CS, WR an 5 Volt, also LOW kurz gewartet CS, WR an Masse, also HIGH (da immer _quer mit dabei), RD bleibt an Masse. INTR_quer = 5 Volt gegenüber Masse - also LOW, dann kann ich mit der Auswertung beginnen. WR bleibt an Masse (high), CS+RD gehen dann an 5Volt (low) INTR_quer springt plötzlich auf 0Volt, also HIGH. Das was ich an den Datenausgängen messe, ist immer noch komisch :-( D0 = 2,3-2,6 V D1 = 1,9-2,1 V D2 = 1,8-2,0 V D3 = 0,35 V D4 = 0,6 V ... also es bleibt immern och etwas komisch, keiner der Ausglänge kommt annähernd an die 5 Volt dran. Oder könnte ich ein Signal an den Ausgängen, dass über 2 Volt liegt auch schon als "gesetzt" interpretieren? Aber leite ich 2 Volt z.B. zur Auswertung an einen uC weiter, so reichen die 2 Volt aber nicht aus. Schade :-(, was mache ich falsch? M. H. schrieb: > Um eine Messung zu starten: > RD -> high > CS -> low > WR -> low > kurz warten > WR -> high > CS -> high > RD -> high > > > > Auslesen der Daten Wenn Int low ist (Messung fertig): > WR -> high > CS -> low > RD -> low > kurz warten > Port einlesen (die 8 Datenleitungen eben) > RD -> high > CS -> high > WR -> high
The_Beginner schrieb: > M. H. schrieb: Um eine Messung zu starten: RD -> high = 5V CS -> low = 0V WR -> low = 0V kurz warten WR -> high = 5V CS -> high = 5V RD -> high = 5V Auslesen der Daten Wenn Int low ist (Messung fertig): WR -> high = 5V CS -> low = 0V RD -> low = 0V kurz warten Port einlesen (die 8 Datenleitungen eben) RD -> high = 5V CS -> high = 5V WR -> high = 5V
Ich habe nun noch eine Frage zu Clock. Was genau macht Clock - es gibt einen Takt vor. Muss ich mir das in der Theorie auch vorstellen wie ein Signal, dass immer zwischen LOW und HIGH pendelt und ein Wechsel von LOW nach HIGH ist ein Takt? Die CLK-Eingänge sind ja in dem Funktionsdiagramm auch immer mit an die UND-Verknüpfungen geschaltet. Angenommen, ein Arbeitszyklus sei 5 Sekunden, dann würde also der ADC 5 Sekunden für einen Schritt brauche? Fhutdhb Ufzjjuz schrieb: > Um eine Messung zu starten: > RD -> high = 5V > CS -> low = 0V > WR -> low = 0V > kurz warten RD, CS, WR werden geschaltet. Kurz warten - damit der Clockzyklus diesen Schritt ausführt? Oder kann ich Clock z.B. mit einem Zylinder in einem Auto vergleichen? Der Zylinder im Auto verdichtet und verbrennt etc., insgesamt ein Zyklus eben.
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.