Forum: Compiler & IDEs atmega16 stk500 adc


von Der Frager (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

es gibt zwar hier viele Threads zu ADC aber dennoch habe ich einige 
Fragen.

Und zwar möchte ich Spannungen analysieren mit Hilfe des ADC des 
ATMega16.
Die Spannungen werden erzeugt durch ein Mikro dass an den PORT C  PIN7 
des STK500 angeschlossen ist.
Hier gleich meine erste Frage: In den Datenblättern des ATMega16 steht 
das der PORTA des Mikrokontrollers der ADC Eingang ist. Aber das 
bedeutet nicht, dass ich das Mikro am PORT A des STK500 anschließen 
soll? Ich gehe aus, dass die Sachen nicht minteinander zusammenhängen, 
ich frage zur Sicherheit trotzdem nach.

In dem Avr-GCC-Tutorial auf dieser Webseite ist ein ADC Beispiel. Wieso 
werden nirgends die Eingangsports des ADC Wandlers definiert?


Ich habe ein kleines Programm geschrieben, dass die Register ADCL und 
ADCH ausliest und den Wert auf den Leds des STK500 ausgeben soll. Das 
Problem ist es leuchten immer dieselben LEDs während der gesamten 
Laufzeit des Programms. Das Programm analysiert im free running mode 
dauernd die Eingaben und deshalb sollten die LEDS dauernd umschalten, 
was sie aber nicht tun. Wie gesagt es leuchten immer dieselben LEDs. 
Meine erste Vermutung war, dass nichts gemessen wird. Dem widerspricht 
aber, dass beim jeden Einschalten des STK500 Boards (=neustarten des 
Programms) immer andere LEDS leuchten. Das heißt es wird was gemessen.

Das Mikrofon ist funktionsfähig, mittels eines Oszilloskops wurde des 
überpüft. Ein Defekt des Eingabegerätes kann also ausgeschlossen werden.

Trotz Studium des Datenblatts des Atmega16 und des Tutorials bin ich im 
Moment ziemlich ratlos.

Bin für jeden Tipp dankbar.


Gruß

von Jürgen E. (sid)


Lesenswert?

Hmmmmmmmmm wie fang ich an ;)

Annahme: du meinst mit STK500 das Entwicklungsboard von Atmel und nicht 
das dazu gehörende Protokoll.


1)
Ich hab zwar keine Ahnung von der Beschaltung des Baordes, aber wie 
kommst du auf die Idee den PIN PC7 zu verwenden, wenn im Datenblatt 
steht das nur der Port A ADC Eingänge besitzt?!
Es ist so das allg. der AVR nur einen ADC besitzt. Aber er besitzt des 
weiteren einen MUX, einen analog Switch, mit dem man den ADC auf 
verschieden Pins "mappen" kann. In diesem Fall Pin PA0-7. UND NIRGENDS 
ANDERS HIN! Es macht keinen Sinn wenn du analoge Werte messen willst und 
diese wo anders anlegst. Deswegen kannst du auch mit ADMUX = kanal (oder 
so ähnlich) einen Pin an Port A auswählen. (Siehe Datenblatt)

2)
Die willst ein Mic messen. Wie schauen den die Pegel aus?! Ich meine 
hast du nen Vorverstärker dran oder so was?! Dir ist hollfentlich klar 
das deine ADC Spannungen nur im Vergleich zu deiner Referenzspannung 
messen kann. Und wenn du jetzt Spanungen zwischen 0 und 10mV hast und 
deine Referenzspannung 5Volt beträgt, dann kannst du (fast) nichst 
messen. (Vorsicht, die Referenz Spannung ist auch nicht beliebig 
wählbar....)
-> Thema: Pegel-Anpassung.

So Far
Jürgen

von Der Frager (Gast)


Lesenswert?

Hi,

Annahme: richtig, das Board.

1). Werde das Mikro an PORT A anschließen. Das hat mich schon stutzig 
gemacht.
Danke.
Also jetzt ergibt alles einen Sinn. Also wenn mein Mirofoeingang an PA7 
ist muß ich

ADMUX = 7;

setzen?!

2) Also die Eingangswerte vom Mikro liegen im Bereich bis 2V. Also das 
wurde mit Hilfe des Oszilloskops ermittelt. Vorverstärker habe ich 
keinen.
Das mit der Referenzspannung ist klar, die liegt ja bei 2,56Volt und da 
sollten sich Werte im Bereich zwischen
0..2V messen lassen können.

Gibt es eine empfohlene Referenzspannung wenn man Werte im Bereich von 
0..2V messen will?

Danke Du hast mich weitergebracht.

Gruß

von Jürgen E. (sid)


Lesenswert?

Moin,

ADMUX = 7 ist fast richtig.

Du willst ja eine Vref von 2,56Volt haben, dann musst du mehr in dem 
Register setzen.

ADMUX = (3<<REFS0) | 7 ;
also
ADMUX =  0xC7;

Sonst hat du die intere Vref mit 2,56V nicht.

Tja wenn du 0..2V messen willst, das ist eine Vref von 2Volt ganz gut, 
aber 2,56Volt sind auch ok ;) Da verliehrst du nur 25% an Auflösung, 
aber das ist ok, denke ich mal.

n8
Jürgen

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
Noch kein Account? Hier anmelden.