Tiny44 kein Output bei OC0B

Gast #3348337
Lesenswert?

Hallo zusammen,

ich möchte mit dem Tiny44 drei PWMs erzeugen. Da ich den INT0 verwenden 
muss kann ich den OC0A des Timers0 nicht nutzen. Somit liegen meine 
PWM-Kanäle auf
PWM1 = OC0B
PWM2 = OC1A
PWM3 = OC1B


Ich habe anhand des Datenblattes auch versucht alles richtig zu 
konfigurieren. Jedoch erhalte ich an OC0B keinen Output.
Mir ist schleierhaft was in meinem Code falsch ist. Vielleicht kann 
jemand mal kurz drüberschauen.
1
#include <avr/io.h>
2

3
#ifndef F_CPU
4
#define F_CPU 12000000UL
5
#endif
6

7
#define LED_DDR    DDRA
8
#define LED_PORT  PORTA
9
#define PIN_LED1  PA7
10
#define PIN_LED2  PA6
11
#define PIN_LED3  PA5
12

13
int main(void) {
14

15
// set LED-ports to output
16
LED_DDR |= (1 << PIN_LED1);
17
LED_DDR |= (1 << PIN_LED2);
18
LED_DDR |= (1 << PIN_LED3);
19

20
// init timers as fast PWM
21
TCCR0A |= (1 << WGM00) | (1 << WGM01);    // Fast PWM Mode 3
22
TCCR1A |= (1 << WGM10) | (1 << WGM12);    // Fast PWM Mode 5 (8bit)
23

24
// set prescaler 256
25
TCCR0B |= (1 << CS02);  // prescaler 256 -> 90Hz
26
TCCR1B |= (1 << CS12);  // prescaler 256 -> 90Hz
27

28
// set outputs to PWM
29
TCCR0B |= (1 << COM0B1) | (1 << COM0B0);
30
TCCR1A |= (1 << COM1A1) | (1 << COM1B1) | (1 << COM1A0) | (1 << COM1B0);
31

32
// Power led 
33
OCR0A = 0;
34
OCR0B = 127; 
35
OCR1A = 60; 
36
OCR1B = 127; 
37

38

39
while(1)
40
{
41

42
}
43

44
return 0; 
45
}

Vielen Dank im Vorfeld
Peter

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