Страница 4 из 4

Re: Пара вопросов по МК AVR

Добавлено: Вс май 05, 2013 18:00:36
YS
Возможно ли на 8-битном таймере делать ШИМ с произвольным периодом?
Смотря что за версия таймера, смотря какой МК... Тут есть много "но".
У всех видов PWM есть режим "TOP = OCRn". Как им пользоваться и зачем он нужен?
Как пользоваться - это Вам прямиком в даташит. :) А нужен он для ограничения максимального значения, до которого считает таймер. Бывает полезно.
меняется при совпадении с OCRn. ... ШИМ не получится
Там два (а то и больше) канала. До одного считаем, с другим сравниваем. Все получится, у меня же получалось. :)

Re: Пара вопросов по МК AVR

Добавлено: Вс май 05, 2013 18:33:23
cray3
YS писал(а):
Возможно ли на 8-битном таймере делать ШИМ с произвольным периодом?
Смотря что за версия таймера, смотря какой МК... Тут есть много "но".
У всех видов PWM есть режим "TOP = OCRn". Как им пользоваться и зачем он нужен?
Как пользоваться - это Вам прямиком в даташит. :) А нужен он для ограничения максимального значения, до которого считает таймер. Бывает полезно.
меняется при совпадении с OCRn. ... ШИМ не получится
Там два (а то и больше) канала. До одного считаем, с другим сравниваем. Все получится, у меня же получалось. :)
Например Attiny2313. Первый и единственный восьмибитный таймер. Я ставил режим - TOP=OCR0A. OCR0B делал в половину этого значения. Вывод на OCR0B. Не заработало. Должно?

Re: Пара вопросов по МК AVR

Добавлено: Вс май 05, 2013 19:18:24
YS
Я ставил ... Вывод на OCR0B. Не заработало. Должно?
WGM как конфигурировали? Саму ножку на выход настроили?

Вот мой рабочий код из проекта, сравните.

Код: Выделить всё

  //T/С0 compB channel is a carrier frequency generator (PWM)
  //overflow interrupt provides receive timebase

  //PWM pin is OC0B/PD5
  DDRD=(1<<PD5);
  //Fast PWM on OC0B, count to OCR0A value
  TCCR0A=(1<<COM0B1) | (1<<WGM01) | (1<<WGM00);
  //Timer clock=F_CPU, 8MHz
  TCCR0B=(1<<WGM02) | (1<<CS00);
  //Output freq=F_CPU/64=125KHz
  OCR0A=64;
  //PWM duty
  OCR0B=25;
  //Overflow interrupt enable (8uS timebase)
  TIMSK0=(1<<TOIE0);
И не цитируйте целиком предыдущее сообщение, а то придет модератор и покарает. :wink:

Re: Пара вопросов по МК AVR

Добавлено: Вс май 05, 2013 20:01:56
cray3
вспомнил :) . Эта нога у меня сгоревшая уже давно. Вот и не работает.

Re: Пара вопросов по МК AVR

Добавлено: Вс май 05, 2013 21:27:30
YS
:facepalm:
:)))