Импульс повторяетсья с частотой 50 гц от длины импульса зависит как повернется серва если длина импкльса 1.5 мк то по центру если 0.9 то в левом крайнем положении, если 2.1 то в правом крайнем положении, нам нужно генерировать этот сигнал.
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x70;
PORTB.0=1;
delay(время); //Нужно менять от 1.5мс до 2.1мс
PORTB.0=0;
}
#include <90s2313.h>
#include <delay.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xB2;
PORTB.0=1;
delay_us(1400); // меняй это число в диапаоне 900-2100
PORTB.0=0; // серву подключай к PB0
// Place your code here
}
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TCNT1H = 0x00;
TCNT1L = 0x00;
PORTB = pb_state[index_st];
if (index_st == 1)
{
OCR1A = ctr_last;
ctr_last = 20000;
index_st = 0;
}
else
{
OCR1A=988+(((unsigned int)servo_poz)<<2);
ctr_last -= OCR1A ;
index_st ++ ;
};
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5