µC ATMEGA168P - Analogwerte Einlesen

OP #3676987
Lesenswert?
• ▲
▼
Hey Leute ich bin hier fast am Verzweifeln, weiß absolut nicht wieso 
mein code nicht funktioniert.
Also ich hab ein ATmega168P und folgendes geschrieben:
Mein Eingang ist PC2 (ADC2)
1
//AD-Wandler konfigurieren
2

3
DDRC  &= ~(1<<PC2); // Analogpin als EINGANG
4

5
ADMUX  |=  ((1<<MUX1) | (1<<REFS0) ); // Eingang wählen+AvCC
6
ADCSRA |=  ((1<<ADPS2) | (1<<ADPS1) | (1<<ADEN)); // ADC Prescaler
7

8
// AD-Wandlung aufruf
9
uint16_t ADC_Read(void)
10
{
11
  uint16_t temp_ADC=0;
12
  ADCSRA |= (1<<ADSC); // START_ADC
13
    while ((ADCSRA & (1<<ADSC))) {   // Messung abwarten
14
    }
15

16
  
17
  temp_ADC = ADCL;
18
  temp_ADC |= (ADCH<<8);
19
  
20
return ADCW; // hier auch return temp_ADC versucht
21
}

so und ich bekomme immer 1023 als Rückgabewert, ob nun 2,5V anliegt oder 
0V (GND)
mein VCC ist 5V.

vilt kann mir ja jmd helfen, wäre cool danke:)
OP #3677003
Lesenswert?
• ▲
▼
okay hat sich irgendwie erledigt, wenn ich direkt beim Aufruf alles 
konfiguriere gehts:
1
uint16_t ADC_Read(void)
2
{
3
  uint16_t temp_ADC=0;
4
  
5
  
6
    ADMUX  |=  ((1<<MUX1) | (1<<REFS0) ); //(1<<ADLAR)
7
        ADCSRA |=  ((1<<ADPS2) | (1<<ADPS1) | (1<<ADEN)); // ADC Prescaler
8
  
9
  
10
  ADCSRA |= (1<<ADSC); // START_ADC
11
    while ((ADCSRA & (1<<ADSC))) {   // Messung abwarten
12
    }
13

14
  
15
  temp_ADC = ADCL;
16
  temp_ADC |= (ADCH<<8);
17
  
18
return ADCW;
19
}
wieso ist das so :(
#3677097
Lesenswert?
• ▲
▼
Mathias K. schrieb:

> wieso ist das so :(


Weiß keiner, solange du nicht deinen richtigen Originalcode herzeigst, 
sondern nur Ausschnitte davon.
Entweder steht deine Konfiguration in irgend einer FUnktion, die du aus 
main() heraus nie aufgerufen hast. Oder, du hast dir irgendwo ADMUX 
zerschossen. Oder irgendwas ganz anders, an das ich momentan nicht 
denke.
Aber aus dem Codeschnipsel im Eröffnungsposting kann man das nun mal 
nicht ablesen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.