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