Gast
#1233337
hallo alle zusammen,
ich würde gerne mit meinem Atmega32 (8 Mhz Takt) einige PWM-Signale
ausgeben. Dafür hab ich mir überlegt, dass ich einen Timer-Interrupt
verwende, der mir das PWM-Signal an jedem IO-Port erzeugen kann.
Daraufhin hab ich voliegenden Code geschrieben der erstmal nur ein
PWM-Signal an PC0 erzeugt.
#include <avr/io.h>
#include <avr/interrupt.h>
uint8_t counter,speed;
ISR(TIMER2_OVF_vect)
{
if(counter == 0)
{
counter=255;
PORTC &= ~( 1 << PC0 );
}
if(counter == 3)
PORTC |= ( 1 << PC0);
counter--;
}
int main()
{
counter=255;
TCCR2 |= (1<<CS20);
TIMSK|=(1<<TOIE2);
sei();
speed = 100;
while(1);
}
Nun fuktioniert der Code eigentlich recht gut, bis auf die Kleinigkeit,
dass das PWM-Signal nach einer Kreuzung zwischen Rechteck und Sägezahn
Signal aussieht (was man auf dem Bild von meinem "Oszi" sehen kann).
Weiß jemand wie man das beheben könnte und weiß jemand ob ein L293D mit
diesem Signal überhaupt funktionieren kann oder ob ich das Testen der
Drähte erstmal sein lassen kann?
MFG braineater