только вручную в начале процедуры обработки прерывания по совпадению в счетный регистр таймера ноль записывать. И таймер начнет барабанить с нуля, а процедура будет себе выполняться. И им будет глубоко друг на друга все равно
.
только вручную в начале процедуры обработки прерывания по совпадению в счетный регистр таймера ноль записывать. И таймер начнет барабанить с нуля, а процедура будет себе выполняться. И им будет глубоко друг на друга все равно
.// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void) //Прерывание происходит 100 раз в сек, сохраняем в глобальные переменные текущее время
{
TCNT1H=0x00;
TCNT1L=0x00;
milliseconds++;
}avr123.nm.ru писал(а):Точная подгонка времени описана в задаче 6 курса !
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void) //ПУСК
{
PORTC.2=0; //отключаем реле торможения
delay_ms(PauseTormoz); //пауза на срабатывание реле
PORTC.1=1; //включаем реле пуска
delay_ms(PausePusk); //пауза на срабатывание реле
TCCR1B=0x09; //запускаем ШИМ
delay_ms(200); //пауза для устранения дребезга контактов
}
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void) //СТОП
{
TCCR1B=0x08; //останавливаем ШИМ
delay_ms(1); //пауза на всякий случай
PORTC.1=0; //отключаем реле пуска
delay_ms(PausePusk); //пауза на срабатывание реле
PORTC.2=1; //включаем реле торможения
delay_ms(PauseTormoz); //пауза на срабатывание реле
delay_ms(200); //пауза для устранения дребезга контактов
}PORTB.2=0;// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void) //СТОП
{
OCR1B=0x00; //уменьшаем ШИМ до нуля
TCCR1B=0x08; //останавливаем ШИМ
delay_ms(1); //пауза на всякий случай
PORTC.1=0; //отключаем реле пуска
delay_ms(PausePusk); //пауза на срабатывание реле
PORTC.2=1; //включаем реле торможения
delay_ms(PauseTormoz); //пауза на срабатывание реле
delay_ms(200); //пауза для устранения дребезга контактов
}
OCR1B=0x00; //уменьшаем ШИМ до нуля
delay_ms(1); //БЕЗ ЭТОЙ ПАУЗЫ НИФИГА НЕ РАБОТАЕТ ШИМ ОСТАНАВЛИВАЕТСЯ В ВЫСОКОМ ПОЛОЖЕНИИ
TCCR1B=0x08; //останавливаем ШИМ 
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0