реклама на сайте
подробности

 
 
> Захотелось мне тут сделать генератор на 36 KHz. Сначала сделал просто через Delay_us(). Но так не интересно. Надо бы через ШИМ. Есть кварц 11.059200 M
snayperAlfa
сообщение Feb 1 2009, 14:59
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 3-12-08
Из: Солнечная Одесса
Пользователь №: 42 183



Захотелось мне тут сделать генератор на 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


--------------------
Жили бы в пещерах и не знали бы горя.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016