Hi Ich hab hier ne anfängerfrage aber hoffentlich kann mir jemand helfen. Wie funktioniert der A/D Wandler eines AT90S4433 ? und wie aktviert man ihn. Mfg. Merle
Ich weiß nicht, wie sehr Du Anfänger bist. C? Assembler? Schon mal was von Registern und Steuerwörtern gehört? Wenn nicht, sag was. :-) mz
OK Ist nicht ganz einfach, aber ich versuche Dich mal wenigstens auf den Weg zu bringen. Da Du Assembler kennst, weißt Du ja wenigstens schon, was Register sind. Port's an einem µC werden quasi durch Register innerhalb des Prozessors abgebildet. Man greift also nie auf die Port's an sich zu, sondern auf deren Register (8-Bit Register, jedes Bit steht für einen Pin). Das zum einen. Jetzt hast Du sicher mal mitbekommen, das es I/O Ports gibt. Input UND Output. Aber wie das in der Welt der Bits so ist : 0 oder 1, entweder oder. Um also festzulegen, ob ein Port(PIN) Ein- oder Ausgang ist, existiert ein weiteres Register, in dem das festgelegt wird: bei AVR's ist das das DDRx, wobei x für den entsprechenden Port steht. (Data Direction Register X) Damit kann man also festlegen, ob Ein oder Ausgang. A/D Channel liegen auf so einem I/O Port. Da dieser Port aber auch als digitaler Port (o oder 1, respektive 0 Volt oder 5 Volt) verwendet werden kann, ,uß es noch eine weitere Einstellungsmöglichkeit geben. Im einem sogenannten Special Function Register wird genau das eingestellt Also ob der Port als A/D Wandler betrieben werden soll oder nicht. Dazu dient das ADCSRA Register und da ist Bit 7 das ADEN (A/D enable). Das alles hilft Dir jetzt nicht konrket weiter. Aber eine ausführliche Beschreibung kann man in einem solchen Forum nicht liefern. Merke Dir einfach: jeder Port hat viele Funktionen, eine muß ausgewählt werden A/D Wandler, Analog Comparatoren und Interrupts können an und ausgeschaltet werden das alles passiert über spezielle Register, die werden in den Dokus super beschrieben (bei Atmel wirklich super, ich kenne echt beschissene Dokus, z.B. die von Siemens für ihre 80C51 etc) Und dann: Zeit spielt eine große Rolle. Nicht immer ist es möglich, alle Einstellungen für einen Port in einem Abwasch zu erledigen, auch wenn alle Bits in ein und demselben Register gesetzt werden sollen. Interrupt-Enables sollte man erst setzen, wenn die Modi eingestellt sind. Denn wenn enabled, dann gehts ooch gleich ab. Das kann Probleme bringen (siehe meinen Beitrag "Analog Comparator löst keine IRQ aus") Die Ergebnisse der Conversions werden wieder in eigenen Registern abgelegt usw. und so fort.... Es ist NICHT einfach. Sinnvoll ist sicherlich der Kauf eines Buches, einige Beiträge hier haben sich damit beschäftigt. Hol Dir da einen Tipp... Ich habe A/D noch nicht genutzt beim AVR, aber ich versuche mal eine Liste aller für Dich relevanten Register anzugeben. Wenn Dein Programm im Ablauf irgendwie mal mit allen zu tun hatte, dann haste was richtig gemacht: DDRA SFIOR ADCSRA ADCL ADCH (kein absoluter Anspruch auf Vollständigkeit, aber ein Versuch) Sooo, alles ziemlich wirr, aber ich hoffe hilfreich. Ist nicht so ganz einfach. Weil man nicht weiß, wie man das zusammenfassen soll. In meinem Studium gab es zu diesem Thema im weitesten Sinne folgende Fächer: Digitale Systeme 1 Digitale Systeme 2 Microcontroller Prog. Maschinenorientierte Programmierung Labor für Mikrocontroller Programmierung 5 Semester, wie soll man die so schnell zusammenfassen?! Ich hoffe, ich konnte Dir ein bißchen helfen
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.