mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC beim mega64?


Autor: Harry (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat keiner eine Idee woran das liegen könnte?

Harry

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ A.K
Genau. Wie gesagt Nur 16 oder 32

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.