mcnanuk
21.10.2007, 00:59
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#ifndef F_CPU
#define F_CPU 4000000
#endif
int main(void)
{
cli(); //interrupts aus
uint8_t i;
TCCR1A |= (1<<WGM11)|(1<<COM1A1)|(1<<COM1A0); //9-Bit PWM, Invertierend
TCCR1B = (1<<CS12); //Prescaler 256
DDRD |= (1<<PD7);
PORTD |= ( 1 << PD7 ); //pullup
sei();
while(1)
{
OCR1A = 500;
}
}
Hallo,
nachdem ich heute einige tutorials gemacht habe, und ein LCD an dem STK 500 zum laufen gebracht habe, habe ich mich daran gemacht ein Servo anzuschliessen, und versucht es sich zum bewegen zu ermuntern. Leider ist das einzige was passiert ein müdes zucken, was nicht wirklich dolle ist.
Ich habe ein Atmega 32 mit 4 mhz interner clock, und ein hitec hs-300 standard Servo (Analog, Datenblatt kann ich leider keines finden)
Ich nutze 9 Bit PWM, Invertierend und prescaler 256.
Das Servo hat 0,15 s Stellzeit (Was auch immer das bedeutet)
Der Puls wird mit meinen Einstellungen alle 16,3 ms gesendet.
Ich habe bereits verstanden, dass mein Counter und mein Vergleichswert
OCR1A beeinflussen, wielange ein high anliegt.
Leider verstehe ich nicht, wie ich die Vergleichswerte berechnen. Ich habe einfach mal 500 gewählt, und alles was passiert, ist dass der Servo im Uhrzeigersinn vor sich hinruckelt mit minimalen Bewegungen.
Manchmal bewegt er sich auch gar nicht.
Ich hoffe mir kann jemand weiterhelfen, denn ich habe jetzt schon stunden damit verbracht da rumzuprobieren. :-)
#include <stdint.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#ifndef F_CPU
#define F_CPU 4000000
#endif
int main(void)
{
cli(); //interrupts aus
uint8_t i;
TCCR1A |= (1<<WGM11)|(1<<COM1A1)|(1<<COM1A0); //9-Bit PWM, Invertierend
TCCR1B = (1<<CS12); //Prescaler 256
DDRD |= (1<<PD7);
PORTD |= ( 1 << PD7 ); //pullup
sei();
while(1)
{
OCR1A = 500;
}
}
Hallo,
nachdem ich heute einige tutorials gemacht habe, und ein LCD an dem STK 500 zum laufen gebracht habe, habe ich mich daran gemacht ein Servo anzuschliessen, und versucht es sich zum bewegen zu ermuntern. Leider ist das einzige was passiert ein müdes zucken, was nicht wirklich dolle ist.
Ich habe ein Atmega 32 mit 4 mhz interner clock, und ein hitec hs-300 standard Servo (Analog, Datenblatt kann ich leider keines finden)
Ich nutze 9 Bit PWM, Invertierend und prescaler 256.
Das Servo hat 0,15 s Stellzeit (Was auch immer das bedeutet)
Der Puls wird mit meinen Einstellungen alle 16,3 ms gesendet.
Ich habe bereits verstanden, dass mein Counter und mein Vergleichswert
OCR1A beeinflussen, wielange ein high anliegt.
Leider verstehe ich nicht, wie ich die Vergleichswerte berechnen. Ich habe einfach mal 500 gewählt, und alles was passiert, ist dass der Servo im Uhrzeigersinn vor sich hinruckelt mit minimalen Bewegungen.
Manchmal bewegt er sich auch gar nicht.
Ich hoffe mir kann jemand weiterhelfen, denn ich habe jetzt schon stunden damit verbracht da rumzuprobieren. :-)