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:
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);
}
}
Kann es sein dass ich noch einen Fehler im Programm übersehen hab oder liegt es sicher an der Hardware?
Gruß
Bene
Lesezeichen