AVR ADC scheint nicht zu messen.

Gast #3633088
Lesenswert?
• ▲
▼
Hi zusammen,
ich versuche momentan mit einem Kumpel ein wenig mit einem ADC 
rumzuspielen..

Ich habe eine init_adc()-Fkt., die wiefolgt aussieht:
1
void init_adc( void )
2
{
3
  ADMUX = (1<<REFS0);
4

5
  ADCSRA = (1<<ADPS2) | (1<<ADPS1); // prescale 64
6
  ADCSRA |= (1<<ADEN);
7

8
  ADCSRA |= (1<<ADSC);
9
  while( ADCSRA & (1<<ADSC) ) {}
10

11
  (void) ADCW;
12
}

Zudem habe ich die Fkt. read_adc:
1
uint16_t read_adc( uint8_t channel )
2
{
3
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
4
  ADCSRA |= (1<<ADSC);
5

6
  while( ADCSRA & (1<<ADSC)) {}
7
  
8
  return ADCW;
9
}


Wenn meine Main-Fkt. nun wiefolgt aussieht:
1
int main( void )
2
{
3
   init_adc();
4

5
   const uint16_t adc_env = read_adc( CHANNEL ); // << CHANNEL == 2
6
   delay_ms( 50 ); // std.-fkt. um das programmm 50ms zu pausieren
7

8
   uint16_t adc_cur;
9

10
   while( true )
11
   {
12
     adc_cur = read_adc( CHANNEL );
13

14
     if( adc_cur == adc_env )
15
         switch_beeper( false );
16
     else
17
         switch_beeper( true );
18

19
     delay_ms( 200 );
20
   }
21

22
   return 0;
23
}

(switch_beeper schaltet dabei einen summer an oder aus)

Dann müsste der Summer doch angehen, falls der ADC zwei verschiedene 
Werte misst oder?

(avr/io.h, stdbool.h sind inkludiert)

Leider funktioniert es nicht wirklich..
Der ADC bekommt seine Werte durch Photodioden, und der Summer geht nicht 
an, wenn ich die Photodioden beleuchte.. (switch_beeper funktioniert)

Vielen Dank für eure Hilfe!

Antwort schreiben

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.

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.