программирование мк Avr 8535
здравствуйте всем , кто то может знает как можно сформировать такой сигнал на выходе микроконтроллера Avr серии 8535 . в общем история такая требуется сформировать сигнал на выходе порта к примеру Pb.0 длительностью 2 миллисекунды, а на Pb.1 одновременно включить на длительность 500 микросекунд, по истечении
500 микросекунд сигнал с вывода Pb.1 выключить, а после 1500 микросекунд выключить сигнал на выводе рв.0 , затем сделать задержку на 2 миллисекунды и вновь повторить операцию , т.е. выводить в цикле. может это можно как то организовать с таймерами . пожалуйста подскажите как это можно все организовать, за ранее спасибо.
Если с таймером, то например так:
unsigned int count_mks;
#pragma vector = TIMER1_OVF_vect
__interrupt void Timer1_Ovf_vect(void) {
count_mks++;
switch(count_mks) {
case 1:
PORTB |= ((1<<PB0) + (1<<PB1));
break;
case 501:
PORTB &= ~(1<<PB1);
break;
case 2001:
PORTB &= ~(1<<PB0);
break;
case 4001;
count_mks = 0;
break;
}
}
Это самое простое.
Но это при точном подборе кварца и предделителя на сработку таймера с периодом в микросекунду. Если нет, то прерывания надо сделать почаще а в тело обработчика добавить загрузку регистра TCCR1.