Hi, Goliath,
Zitat von
Goliath
kann ich damit nicht wirklich viel anfangen
wieso port C ??? nur port a kann analogeingänge abfragen
Ganz einfach, sloti hat (vermutlich, sicher) den Eingang ADC0 gemeinte, der ist am gleichen Pin wie der PA0, also am PIN40 !
Sieh mal her, vielleicht hilft das besser:
Code:
/* ============================================================================== */
/* === Initialisierung fuer ADC mega168 ========================================
ADC3/PC3 auf 8 Bit, Wandlung "auf Abruf", es wird kein Interrupt ausgelöst */
void ADC3_8_init(void) //
{
ADMUX |= (1<<ADLAR); // 8bit-left-adjusted (doc S256)
ADMUX |= (1<<MUX1)|(1<<MUX0); // Wandlung für Port ADC3
ADCSRA |= (1<<ADEN); // AD Enable
ADCSRA |= (1<<ADSC); // starte erste Wandlung
}
/* ============================================================================== */
Der Code ist zwar für den mega168, aber diese Sequenz wird am m16/m32 auch laufen (hab ich aber in der Eile nicht ausprobiert). Achtung: Das ist eine 8-Bit-Wandlung - für 10 bit guck halt ins doc2503. "Abgehört" wird hier der analoge Eingang auf Port ADC3 - das ist der Pin 37 bzw. Port-Pin PA3.
JETZT kannst Du irgendwo im main oder in einer Subroutine schreiben:
Code:
char wortadc[10];
ADC3_8_init(); // Initialisiere ADC3, 8 Bit, auf Abruf
ADCSRA |= (1<<ADSC); // starte Wandlung
waitms(500); //
adc3_dat = ADCH; // Hole ADCHighByte (ADLAR !)
utoa(adc3_dat, wortadc, 10);
sendUSART(" Momentaner ADC-Wert ");
sendUSART(wortadc);sendUSART("\r\n");
und dann kann sowas Ähnliches rauskommen (am Terminal):
Momentaner ADC-Wert 1
Momentaner ADC-Wert 0
Momentaner ADC-Wert 1
Momentaner ADC-Wert 62
Momentaner ADC-Wert 24
Momentaner ADC-Wert 60
Momentaner ADC-Wert 49
Momentaner ADC-Wert 63
Momentaner ADC-Wert 76
Momentaner ADC-Wert 88
Momentaner ADC-Wert 96
Lesezeichen