Ich bin (wie man an meinen vorigen posts sieht) Anfänger in C. Da ich in meiner Schaltung einen Fehler gemacht habe und dadurch die OCx pins nicht so nutzen kann wie ich möchte, brauche ich eine Software PWM. Wie das funktionier ist mir klar:
Timer zählt hoch -> OVerflow -> Interupt toggelt den pin
Ergebnis: eine pwm mit 0,5* Overflowfrequenz, Tastverhältnis 1:1
Der interrupt wird aber nicht ausgelöst! Woran könnte das liegen?
Code:
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
SIGNAL(SIG_OVERFLOW0) //Interrupt fürs Pintoggeln
{
TCNT0 = 223; // Vorladen des Timers
PORTD = 0xFF; //ISR "Lebenszeichen" (lässt einen motor drehen)
}
int main(){
DDRD = 0xFF; //DDRD auf ausgang setzen
// Initialisierung des counters:
TIMSK |= (1<<TOIE0); // Interrupts aktivieren
TCNT0 = 223; // Vorladen des timers
TCCR0 = (1<<CS01); // Prescaler von 8
do{
__asm__ __volatile (";tu nichts! gib nur den blöden Assembler kommentar aus, denn die ISR macht alles");
}while(1);
}
Lesezeichen