только вручную в начале процедуры обработки прерывания по совпадению в счетный регистр таймера ноль записывать. И таймер начнет барабанить с нуля, а процедура будет себе выполняться. И им будет глубоко друг на друга все равно 
. ![]()  | 
			
					roboforum.ruТехнический форум по робототехнике.  | 
			
				
					 | 
		
 только вручную в начале процедуры обработки прерывания по совпадению в счетный регистр таймера ноль записывать. И таймер начнет барабанить с нуля, а процедура будет себе выполняться. И им будет глубоко друг на друга все равно 
.// 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