PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega 8: Selektion der ADC-Kanäle



Torsten_G
22.01.2006, 23:14
Hallo Leute,

am Mega 8 sind ja die Pins C.0 bis C.5 als Analog-Eingänge konfigurierbar.

Das funktioniert soweit auch prima, allerdings erlaubt die Konfiguration in Bascom keine Selektion, welche dieser PIN´s als Analogeingang genutzt werden sollen und welche nicht.

Jedenfalls habe ich nichts derartiges gefunden.

Gibt es einen Weg, diese Pin´s einzeln als ADC oder digitalen In-Out zu konfigurieren?

Beim Lesen des Datenblatts sprang mir zwar das Mux-Register ins Auge, aber mir blieb leider unklar, ob das damit machbar wäre, und wenn, dann wie...

Vielen Dank für eure Hilfe!

Torsten

linux_80
23.01.2006, 00:55
Hallo,
so wie ich das sehe, kann man alle Pins erstmal ganz normal als Ein-/Ausgang verwenden mit DDRC, bzw. Config In-/Output usw.

Erst wenn man den ADC startet und dem MUX einen bestimmten Kanal angibt, ist dieser eine Pin mit dem ADC verbunden.
Also wenn man in Bascom getadc(1) aufruft, wird, solange gemessen wird, der zugehörige Pin als Analogeingang verwendet.

Ich hab auch nirgends gelesen, das man extra auf Eingang stellen muss bei den Analogen Pins, es lässt sich auf jeden Fall nur was richtiges messen wenn der Pin auf Eingang gestellt wird.

Man muss als Boarddesigner und Programmierer selber drauf achten, das die Analogpins nicht als Ausgang und auf 1 gesetzt werden, wenn das dem analogen Sensor nicht gut tut. Die Pullups können auch noch aktiviert werden, womit das Messergebnis beeinflusst wird.

Es liegt nicht an Bascom, das man hier nicht genauer angeben kann welches Pin analoger Eingang ist, sondern am AVR. Erst die Verwendung im Programm macht das Pin zu dem zu was er gedacht ist (analog oder digital, ein-/ausgang).

Ratber
23.01.2006, 11:34
2. Meinung gefällig ?
_________________






Nö,dem AD-Wandler ist das ziemlich egal ob der Pin als Ein oder ausgang genutzt wird.

Nehmen wir mal an ich nutze einen Pin als Ausgang und der steht auf 1 oder 0.
Dann willl ich damit messen,der Mux schaltet den Pin auf den AD und der misst ..........5V oder 0V.

Hat ihm also nicht weh getan.

Selbst wenn ich ne Referenz unter 5V nehme dann juckt ihn das Elektrisch auch nur wenig.
Bis zum erlaubten Elektrischen Maximum (ca. 6V oder Vcc+0.3V) ist alles "Safe".
Nur der AD klebt eben sehr früh bei 1023 fest.

Also vom Controller aus passiert da nix.

Andsers siehts aus wenn man an dem entsprechenden Pin eine zu messende Spannung hat und dann einfach auf Ausgang schaltet.
Je nach Quelle und beschaltung könnte es da zu komplikationen kommen aber ich denke mal das man sowas schon bei der Beschaltung berücksichtigen sollte ne ? :wink:


Dh. Solange man nnicht messen möchte kann man den Pin auch ganz normal als Digitalen Ein doer ausgang nutzen.

Wenn man nur 2 Pinne als AD-Eingänge nutzen will dann sind die anderen ohne Probleme für andere aufgaben nutzbar.

Torsten_G
23.01.2006, 11:37
Hallo Linux,

vielen Dank für Deine Antwort.

Das bedeutet also, der jeweilige Pin wird nur zum Analogeingang, wenn man mit getadc(Nr) drauf zugreift und somit der Messzyklus aktiviert wird.

Das MUX-Register bekommt dann wohl die entsprechende Adresse des zu lesenden Kanals aufgebrummt und verbindet diesen für die Dauer der Messung mit dem AD-Konverter.

Generell nicht als Analogeingang genutzte Pin´s lassen sich somit wie gewohnt über das DDR-Register abhandeln.

Du hast mir wirklich weitergeholfen, viele Grüße

Torsten


Auch Dir ein Dankeschön, Ratber, ich denke mal, zwischen euren Aussagen besteht eigentlich kein Widerspruch...

Ratber
23.01.2006, 11:54
Yo,war als bestätigung gedacht.