Hallo,
ich habe einen Atmega8535 und will einen Motor über den Ausgang OC0 und PC0/PC1 ansteuern. PWM Mode: Fast PWM, Frequenz: 256.
Als "Versuchsmotor" benutze ich eine LED mit 100Ohm Vorwiderstand über den Schaltkreis L298. Ich bringe sie aber leider nicht zum Leuchten!
Hier mal mein Code:
Kann es sein dass ich noch einen Fehler im Programm übersehen hab oder liegt es sicher an der Hardware?Code:/* ******************************************************** PWM PWM-Ausgang: OC0/PB4 I/O-Pins: PC0/PC1 ***************************************************** */ #include <avr/io.h> #include <stdint.h> // Funktion zur Steuerung der Motoren // speed[-255-255]=Motorgeschwindigkeit/Vorwärts-/Rückwärtsdrehen int motor(int speed) { if (speed<0) { PORTC |= ( 1 << PC0 ); // Linksdrehen PORTC |= ( 0 << PC1 ); OCR0 = -speed; // Vergleichswert festlegen=Geschwindigkeit einstellen(0-255) } if (speed>=0) { PORTC |= ( 0 << PC0 ); // Rechtsdrehen PORTC |= ( 1 << PC1 ); OCR0 = speed; } PORTC |= ( 0 << PC0 ); PORTC |= ( 1 << PC1 ); OCR0 = speed; } // PWM initialisieren int pwm_init(void) { DDRC = 0x11000000; DDRB = 0x000010000; TCCR0 = (0<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(1<<CS02)|(0<<CS01)|(0<<CS00); // Fast-PWM-Mode, toogle at Top } int main(void) { pwm_init(); while(1) { motor(160); } }
Gruß
Bene







Zitieren

Lesezeichen