Захотелось мне тут сделать генератор на 36 KHz. Сначала сделал просто через Delay_us(). Но так не интересно. Надо бы через ШИМ. Есть кварц 11.059200 MHz и Мега16. Как я не пытался не получается точно частота 36 KHz. Скважность не 2, а плавает. Далее сделал через таймер и в прерывании изменял состояиние вывода. Вот код:
Код
#include <mega16.h>
#include <delay.h>
// Timer 0 output compare interrupt service routine
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
// Place your code here
PORTB.0=~PORTB.0;
}
// Declare your global variables here
void main(void)
{
DDRB=1;
TCCR0=0b00011001;
TCNT0=0;
OCR0=150;
TIMSK |= (1 << 1);
SREG |= (1 << 7);
while (1)
{
};
}
А теперь вопрос: как это записать красиво через ШИМ, но чтобы не было прерывания, а то получится тот же таймер.
Сообщение отредактировал snayperAlfa - Feb 1 2009, 15:07
Жили бы в пещерах и не знали бы горя.