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?
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADIE); //ADEN =an , ADSC = start, ADIE = Interrupt ADCSRA |= (1<<ADPS2) | (1<<ADPS1); //teilungsfaktor //fertig vielleicht erst den Teiler einstellen und dann den ADC starten. Dann eine Messung verwerfen, und dann erst in den normalen Betrieb gehen s. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Analoge_Ein-_und_Ausgabe
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.