PWM mit AT90CAN128 und 16bit Timer1

Gast #3580089
Lesenswert?

Hallo,
ich bin leider nicht sehr bewandert in der C-Programierung von 
Mikrocontrollern und habe das Problem, dass ich auf dem AVR AT90CAN128 
eine einfache PWM erzeugen möchte, die erstmal nur eine LED aufleuchten 
lassen soll um zu sehen wie es funktioniert. Ich hab die Dokumentation 
zu dem Controller rauf und runter gelesen, bin aber nicht auf die 
Antwort gekommen. Mein Problem ist konkret, dass ich den Wert im 
Register OCR1A in einer ISR erhöhen möchte um die 1 Phase zu verlängern 
und die LED heller werden zu lassen, doch es geht einfach nicht. Bis 
jetzt sieht mein Programm so aus:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
void init(){  
5
  
6
TCCR1B = (0<<WGM12) | (1<<WGM13) | //Waveform Generation Mode
7
   (0<<CS12) | (1<<CS11) | (0<<CS10); //Prescaler
8
TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<COM1C1) | (0<<COM1C0) | //Compare Output Mode Phase Correct PWM
9
(0<<WGM11) | (0<<WGM10); //Waveform Generation Mode Bits
10
  
11
OCR1A = 0;
12
ICR1 = 8192;
13
TIMSK1 = (1<<OCIE1A);
14
sei();
15

16
//für PWM
17
DDRB |= (1<<PB5);
18
}
19

20
ISR(TIMER1_COMPA_vect){
21
       OCR1A++;
22
}
23

24
int main(void){
25
     init();
26
     while(1){}
27
}

Würde mich freuen, wen mir jemand erklären kann warum das nicht 
funktioniert und wie es funktioniert :)
LG

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