blackpirate
18.10.2007, 20:56
Hallo,
bin jetzt echt schon langsam verzweifelt. Möchte bei einem mega164p einen Pwm über den Timer 0 erzeugen. Es kommt aber einfach gar nichts auf den zwei PWM Pins (B3 u. 4).
Hab auch schon probiert einfach nur Leds über diese Ports anzusteuern (funktioniert) um sicher zu gehen das nicht die Ports kaputt sind.
Weiß irgendwer woran das liegen könnte? Habe ich einen Fehler in meinem Programm?
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#define F_CPU 20000000L // clock
int main (void)
{
DDRB |= (1<<PB3) | (1<<PB4); // PWM Port set ouput
TCCR0A |= (1<<COM0A1) | (1<<COM0A0) | // set OCC0A on compare match, clear at bottom
(1<<COM0B1) | (1<<COM0B0) | // set OCC0B on compare match, clear at bottom
(1<<WGM00) | (1<<WGM01); // Fast PWM Mode
TCCR0B |= (1<<WGM02) | (1<<CS02) | (1<<CS00); //CLK / 1024 (Prescaler)
OCR0A=216; // value to generate 2ms high and 11ms low
OCR0B=216;
while(1)
{
}
return 0;
}
Hoffe das irgendwer was dazu weis....
Wär sehr dankbar für ne Antwort.
bin jetzt echt schon langsam verzweifelt. Möchte bei einem mega164p einen Pwm über den Timer 0 erzeugen. Es kommt aber einfach gar nichts auf den zwei PWM Pins (B3 u. 4).
Hab auch schon probiert einfach nur Leds über diese Ports anzusteuern (funktioniert) um sicher zu gehen das nicht die Ports kaputt sind.
Weiß irgendwer woran das liegen könnte? Habe ich einen Fehler in meinem Programm?
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#define F_CPU 20000000L // clock
int main (void)
{
DDRB |= (1<<PB3) | (1<<PB4); // PWM Port set ouput
TCCR0A |= (1<<COM0A1) | (1<<COM0A0) | // set OCC0A on compare match, clear at bottom
(1<<COM0B1) | (1<<COM0B0) | // set OCC0B on compare match, clear at bottom
(1<<WGM00) | (1<<WGM01); // Fast PWM Mode
TCCR0B |= (1<<WGM02) | (1<<CS02) | (1<<CS00); //CLK / 1024 (Prescaler)
OCR0A=216; // value to generate 2ms high and 11ms low
OCR0B=216;
while(1)
{
}
return 0;
}
Hoffe das irgendwer was dazu weis....
Wär sehr dankbar für ne Antwort.