Hallo zusammen. Erstmal zu Anfang muss ich sagen: Ich bin noch blutiger Anfänger was die C-Programmierung angeht, deshalb auch eine ganz einfache stumpfe Frage. Also bitte nicht gleich mit dem Knüppel kommen :/ Hat jemand mal ein Skript oder eine Anleitung wo die Programmierung eines A/D-Wandlers erklärt ist? Am besten an einem Beispielprogramm, welches auch logische Schlüsse erlaubt? Ich habe nämlich bald meine Abitur-Prüfung in Elektrotechnik und muss daher einige Grundlagen können. Hierzu gehört u.a. der A/D-Wandler, den ich leider nie in der Schule hatte... Ich habe schon pausenlos im Internet gesucht, ein Buch durchforstet aber erst eine nützliche Erklärung gefunden, die relativ logisch war und das Prinzip erklärt hat. Allerdings wurde das ganze an einem Beispiel in Assembler erklärt und ich muss dies in C-Programmierung können. Vielleicht kann es mir auch hier jemand erklären, falls es nicht so schwierig ist ! Danke schonmal im Voraus! MfG
gehts dir um eine rein theoretische betrachtung der funktion oder um eine praktische anwendung in einem µC? google doch mal nach "sukzessive approximation" dann weißt du wie so ein ding funktioniert.
Hallo und erstmal vielen Dank für die fixe Antwort! ;) Ja mit dem Thema der sukzessiven Approximation haben wir uns schon öfters in Elektrotechnik auseinander gesetzt. Wir haben uns u.a. den Schaltungsaufbau angeguckt und eine Approximation auf dem Papier "durchgeführt". Also von Hand. Das ist mir komplett einleuchtend. Es geht mir um die Anwendung im C-Programm. Wie ich das teil initlaisiere und richtig anwende. Also wie die Befehle lauten, was ich dem Teil alles sagen muss etc... Also in kurz nochmal: Arbeitsweise des AD-Wandlers ist mir mehr als bekannt - mir geht es nur um die Anwendung im C-Programm. Hoffe ihr könnt mir helfen!
Das nicht so sehr was mit "C" zu tun, als viel mehr mit der Hardware des verwendeten A/D-Wandlers. Allgemein beschreiben kann man das eigentlich nicht... Gruß Dietrich
Nun ja... ich weiß nicht wie ich's besser sagen soll, aber: In den Richtlinien für das Abitur stehen als Voraussetzungen einfachste Grundlagen der Mikrocontrollertechnik. U.a. Timer, Interrupts und A/D-Wandler. Und mit dem AD-Wandler muss ich halt insofern was anfangen können, als das ich im Quellcode lesen kann, was dort passiert und eventuell einen Teil selbst schreiben / ergänzen muss. Ich weiß nicht was ich da genauer sagen oder eingränzen soll. Ich kann höchstens noch hinzufügen, dass der im Abitur genutzte, sogenannte "Papiercontroller", auf dem 8051 beruht. Aber mal ein bisschen Offtopic: Meiner Meinung nach hat unser tolles Schulministerium da auch wieder super nachgedacht (Achtung: Ironie!). Denn wir müssen im Abitur analoge Schaltungstechnik, Reglungstechnik und elektrische Maschinen, als auch Digital- und Mikrocontrollertechnik können. Und das ist in dem Sinne schwachsinnig, dass man sich besser hätte auf einen Bereich speziallisieren können, als alle ein bisschen anzukraten. Außerdem habe ich, auf Deutsch gesagt, wirklich kein Bock auf Programmieren bzw. Mikrocontrollertechnik. Da gibts meiner Meinung nach Informatiker für - und den Job wollen zur heutigen Zeit ja wohl genug machen.... Aber das mal nur am Rande.
Also, beim 80c535 siehts in ASM so aus:
1 | GET_ADC: CLR MX0 ; Multiplexer: Eingang auswählen |
2 | CLR MX1 |
3 | CLR MX2 |
4 | |
5 | CLR ADM ; Nach einer Wandlung wieder stoppen |
6 | |
7 | MOV DAPR, #0xA6 ; Wandlung mit Auswahl der Referenzspannungen starten |
8 | |
9 | GET_ADC_wait: JB BSY, GET_ADC_wait ; Warten, bis Wandlung fertig |
10 | MOV data, ADDAT ; Wert des ADCs aus ADDAT übernehmen |
11 | RET |
Wenn Du keine vorgefertigten Libs hast, wird es in C ähnlich gehen ... Gruß Jobst
Danke Jobst. Aber ich habe absolut keine Ahnung was ich damit anfangen soll. Wenn ich mich nicht irre ist dies Assembler, oder? Sah zumidnest so ähnlich aus, als ich es das letzte mal irgendwo gesehn habe. Ich kann damit leider nichts anfange, weil ich von Assembler wirklich absolut garnichts weiß.
Azurox schrieb: > Wenn ich mich nicht irre ist dies Assembler, oder? So habe ich es drüber geschrieben ;-) Naja, Du hast zum beschreiben die Bits MX0, MX1, MX2, ADM und das Register DAPR und zum auslesen das Busy-Bit - ob fertig BSY und das Ergebnis-Register ADDAT Die Register und Bits kannst Du in C genau so ansprechen. Der eigentliche Witz dabei ist jedoch, daß Du über die tatsächliche Wandlung gar nichts wissen musst - wie Du siehst. Du schreibst ein paar Bits in ein Register und bekommst das Ergebnis aus einem anderen. Es könnte genau so gut eine serielle Schnittstelle sein ... Edit: Bei einem anderen uC heißen die Register natürlich wieder anders. Gruß Jobst
Jobst M. schrieb: > So habe ich es drüber geschrieben ;-) Oh, das habe ich wohl missachtet! Aber das klingt ja erstmal ganz simpel. Danke erstmal! Habe mir das schwieriger vorgestellt :)
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.