Forum: Mikrocontroller und Digitale Elektronik ADC beim mega64?


von Harry (Gast)


Angehängte Dateien:

Lesenswert?

Moin allseits,

habe hier ein Problem mit dem Mega64, bei dem mir die Ideen ausgehen.
Was ich machen will ist folgendes: einen Analogwert am ADC0 einlesen
und den übert USART0 rausschicken. Die Referenzspannung ist am AREF
angeschlossen = 5V. Am ADC0 ist eine Shutzschaltung in Form zweier
Zehner Dioden gen Masse und Vcc und eines Tiefpasses angeklemmt. Wenn
ich nun 5V oder Masse an den Eingang lege kommt es auch an dem
entsprechenden Pin des µC an, die Schutzschaltung funktioniert also.
Wenn ich allerdings den Conroller laufen lasse (mit internem 1MHz RC
und angeklemmten JTAG mkII), sagt mir der JTAG Debug im AVR Studio,
dass ich immer den Wert 1023 als Ergebnis der AD Wandlung erhalte, egal
ob ich nun 5V oder GND an den Eingang anlege.

Bei der Wandlung sind die Register folgendermaßen gesetzt:
ADCSRA: 11000111
ADCSRB: 000
ADMUX: 00000000

Habe den Code mal mit angehängt. Bin für jeden Tip dankbar, sitze schon
seit 1,5 Tagen an dem Problem und finde den Fehler einfach nicht.

Harry

von Harry (Gast)


Lesenswert?

Hat keiner eine Idee woran das liegen könnte?

Harry

von Jens (Gast)


Lesenswert?

Hi,
1.greif mal direkt auf "ADC" zu damit bekommst du gleichzeitig den
Wert vom ADC in eine Variable.

2. Hast du auch AVCC angeschlossen.

3. Las die Schuztschaltung mit der Z-Diode mal weg. Das ist unsinn.

von Jens (Gast)


Lesenswert?

void adc_init(void)
{
 ADCSRA = 0x00; //disable adc
 ADMUX = 0x00; //select adc input 0
 ACSR  = 0x80;
 ADCSRB = 0x00;
 ADCSRA = 0xC4;
}

Und probier das mal

Achtung presacaler nur 16 oder 32

von Jens (Gast)


Lesenswert?

Befor du die Finktion oben aufrufst must du aber die Interrupts
deaktievieren. Danach wieder aktivieren.
Dieser Quellcode startet den ADC im free running mode.
Nimm das einfach mal zum testen.

von A.K. (Gast)


Lesenswert?

1MHz/128 => 8KHz - bischen wenig Takt. Soll: 50-200KHz.

von Jens (Gast)


Lesenswert?

@ A.K
Genau. Wie gesagt Nur 16 oder 32

von Hubert.G (Gast)


Lesenswert?

Lass den Code nicht mit dem Code-Wizzard erstellen, da sind so viele
unnötige Zeilen die man sich durchsehen soll.
Wo und wann liest du ADCH und ADCL aus?
Clock / 128 ist 7kHz Sample Rate

So nur beim schnelle drüberschaun

von Harry (Gast)


Lesenswert?

Ok, erstmal danke für die Antworten, Habe nun beim dritten durchgehen
der Tips und Nachmessen der entsprechenden Pins gemerkt, dass der Aref
Pin nur Kontakt mit dem Pad hatte, wenn ich mit der Messspitze
draufgedrückt habe, ups :)

Harry

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.