Tiny13 ADC freerunning

OP Persönliche Seite #1647668
Lesenswert?

Hallo,
im Augenblick versuche ich mich gerade in den ADC eines Tiny13 
einzuarbeiten.
Ich habe da mal ein kleines Programm geschrieben, das eine free running 
ADC macht, und den Wert als Comparewert für einen CTC-Timer benutzt, der 
dann eine LED blinkend steuert.
Als Hardware: Poti an PB3 und LED an PB0.
Der Vergleichswert für die ADC soll VCC sein.
Leider will der Code nicht so richtig.
1
#include <avr/io.h>        
2
  
3
#include <avr/interrupt.h>
4
//Master-freq = 128kHz
5

6
ISR(TIM0_COMPA_vect){
7
PORTB = PORTB ^ (1<<PB0); //Togglen des Pins
8
OCR0A = ADCH;//Wert vom ADC übernehmen
9
}
10

11
void init(){
12
TCCR0A = (1<<WGM01); //Count to Compare Modus
13
TCCR0B =  (1<<CS02); //Teiler 1024 //Bleiben noch 125Hz
14
OCR0A = 100;//Zweiter Teiler 25 //Bleiben noch 5Hz
15
TIMSK0 = (1<<OCIE0A);//Interrupt setzen
16
ADCSRA = (1<<ADEN) | (1<<ADSC) |(1<<ADATE); //ADC einschalten, aktivieren und auf Free-Running schalten
17
ADMUX = (1<<MUX0) | (1<<MUX1);//ADMUX auf PORTB 3
18
DDRB = (1<<PB0);//PORTB0 als Ausgang
19
sei();//Interrupts einschalten
20
}
21

22
int main(void){
23
  init();
24
  while(1){
25
  }
26
}
Die LED geht an und bleibt an, egal, wie ich am Poti drehe.
Kann mir jemand sagen, wo ich den Fehler gemacht habe?
Mit freundlichen Grüßen,
Valentin Buck

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren