ADC programmieren in C

Gast #3487564
Lesenswert?
• ▲
▼
Hallo liebe Community,

ich möchte mit mit dem ADC von einem ATmega8A Spannungen messen und je 
nach Spannung einen Ausgang durchschalten, damit eine LED, die an dem 
Ausgang angeschlossen ist, zum leuchten zu bringen. Ich will nämlich 
folgendes bauen:
an meinen Subwoofer will ich die Spannung messen und je nach Bassstärke 
(Spannung) soll dann eine LED leuchten.
Nun hab ich ein Programm in C geschrieben, um dieses Projekt zu 
realisieren:


#include <avr/io.h>
#include <avr/interrupt.h>

ISR (ADC_vect){
  if((ADCH >=0 && (ADCH < 0x70))){
    PORTD |= (1 << PD5); // Rot an
    PORTD &= ~((1<<PD6)|(1<<PD7)); // Rest aus
  }
  else if (ADCH<0xc0){
    PORTD |= (1 << PD6);
    PORTD &= ~((1<<PD7)|(1<<PD5));
  }
  else{
    PORTD |= (1 << PD7);
    PORTD &= ~((1<<PD5)|(1<<PD6));
  }
}
int main(void){
  DDRD = 0b11111111; //ausgang d5,6,7 später rot grün blau
  //AD wandler konfigurieren
  ADMUX |= (1<<ADLAR); //8bit wandlung
  ADMUX |= (1<<MUX1); //ADC2 bzw PortC2
  ADMUX |= (1<<REFS1) | (1<<REFS0);
  ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADIE); //ADEN =an , ADSC = 
start, ADIE = Interrupt
  ADCSRA |= (1<<ADPS2) | (1<<ADPS1); //teilungsfaktor
  //fertig

  sei(); //interrupt starten

  while(1){

  }
}

Doch nun habe ich ein Problem, wenn ich meinen Subwoofer oder 
verschiedene Batterien (zur Kontrolle verschiedener Spannungen) an PC2 
anschließe, passiert nichts. Natürlich habe ich noch einen 
Spannungsteiler gebaut, damit maximal 2,55V am PC2 ankommen. Jetzt frage 
ich mich was ist an dem Code falsch?

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.