Skocz do zawartości

[C] Problem z dobraniem OCRx


Pomocna odpowiedź

Napisano

Witam, ostatnio siłuję się z serwomechanizmem. Serwo jest łądnie podłączone, tylko z tego co widzę sygnał generowany przez PWM nie jest przez nie akceptowany. Programuję ATtiny13A 9,6MHz. Poniżej zamiesczam kod

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

//Here you can set which pin is used
#define SERVO_PIN PB0	

int main(void)
{
sei();
DDRB |= (1<<SERVO_PIN);					//Set pin as output
TCCR0A |= (1<<WGM00); 					//Phase correct PWM mode
TCCR0A |=  (1<<COM0A1) | (1<<COM0A0);	//non-Inverting PWM mode
TCCR0B |= (1<<CS02);					//Prescaler = 256
TIMSK0 |= (1<<TOIE0);					//Enable overflow interrupts
OCR0A = 237;	

   while(1)
   {

   }
}

To może napisz jak wygląda wg Ciebie poprawny sygnał dla serwa a co wygenerowałeś. Chyba wiesz co ustawiłeś. Porównanie może być ciekawe no i okaże się czy wiesz co robisz.

Poza tym napisz jak zasilasz to serwo i może wstaw w główną pętlę równomierne mruganie LEDem - przynajmniej będziesz wiedział, czy procesor działa poprawnie i że nie jest resetowany przez silnik serwa. Bo jak rozumiem oscyloskopu nie masz? 5V na serwie mierzyłeś? Na procesorze? Jakiś schemat może?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...