Witam
Od pewnego czasu próbuję się uporać ze sterowaniem serwomechanizmem i jestem w kropce bo niby wszystko powinno być ok a serwo nie obraca się ani o milimetr. Jedyne oznaki "życia" serwo daje kiedy się je wpina do płytki ciągnącej już zasilanie.
Teoretycznie serwo powinno się wychylić w skrajne położenie a nic się nie dzieje :/
Kabel sygnału na PB5 oczywiście.
Kod:
ICR1 jest ustawione na 10 k ze względu na częstotliwość procka, zakres 0-180st powinien odpowiadać OCR1A od 500 do 1000. Manipulacja wartościami w tym zakresie jednak nic nie daje.
Byłbym bardzo wdzięczny gdyby ktoś wypatrzył co jest nie tak
aha, fuse są ustawione dobrze
Od pewnego czasu próbuję się uporać ze sterowaniem serwomechanizmem i jestem w kropce bo niby wszystko powinno być ok a serwo nie obraca się ani o milimetr. Jedyne oznaki "życia" serwo daje kiedy się je wpina do płytki ciągnącej już zasilanie.
Teoretycznie serwo powinno się wychylić w skrajne położenie a nic się nie dzieje :/
Kabel sygnału na PB5 oczywiście.
Kod:
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
_delay_ms(2000);
TCCR1A|= (0<<COM1A0)|
(0<<COM1A1)|
(0<<COM1B0)|
(1<<COM1B1)|
(0<<FOC1A) |
(0<<FOC1B) |
(0<<WGM11) |
(0<<WGM10);
TCCR1B|= (0<<ICNC1)|
(0<<ICES1)|
(1<<WGM13)|
(0<<WGM12)|
(0<<CS12) |
(1<<CS11) |
(0<<CS10);
//preskaler 8, phase&freq control
DDRB = 0b00100000;
ICR1=10000;
for (;;)
{OCR1A = 1000;}
}
ICR1 jest ustawione na 10 k ze względu na częstotliwość procka, zakres 0-180st powinien odpowiadać OCR1A od 500 do 1000. Manipulacja wartościami w tym zakresie jednak nic nie daje.
Byłbym bardzo wdzięczny gdyby ktoś wypatrzył co jest nie tak
aha, fuse są ustawione dobrze