roboforum.ru

Технический форум по робототехнике.

генератор частоты и скважности одновременно на атмеге8

Re: генератор частоты и скважности одновременно на атмеге8

Duhas » 28 фев 2013, 12:38

чип то у тебя какой?

Re: генератор частоты и скважности одновременно на атмеге8

RootAdmin » 28 фев 2013, 12:42

#define ClockHZ XX //Частота в герцах
Устанавливаем нужную частоту...

Re: генератор частоты и скважности одновременно на атмеге8

к561ЛА7 » 28 фев 2013, 20:42

вы хотите сказать что если написать

#define ClockHZ 1300000 //Частота в герцах

то мега 8 затикает с этой частотой?
А фьюзы как выставлять?

Re: генератор частоты и скважности одновременно на атмеге8

RootAdmin » 01 мар 2013, 14:17

На 13 мегагерц? Не затикает. По крайней мере ардуинка с кварцем на 16 Mhz. Просто не будет успевать отрабатывать прерывание. Для такой частоты надо либо брать МК побыстрее - либо строить внешний генератор на логике с задающим генератором на 100 Mhz и управлять его делителем.

Добавлено спустя 3 часа 36 минут 39 секунд:
Код: Выделить всёРазвернуть
ISR(TIMER2_OVF_vect) {
//Проверим счетчик TickCount
if (TickCount==0) {
if (digitalRead(TOGGLE_IO)) //Проверим состояние выхода, если 1 - то
    { TickCount=Tick0; digitalWrite(TOGGLE_IO,LOW); }//Переключение IO-вывода в другое состояние.}
else { TickCount=Tick1;
digitalWrite(TOGGLE_IO,HIGH); }//Переключение IO-вывода в другое состояние.
}

  //проверяем - больше ли счетчик целого чикла (255)
  if (TickCount<255) {
     TCNT2=256-TickCount+TCNT2;
     TickCount=0;} //Компенсация того, что натикало.
  else {
  TickCount-=256;}

latency=TCNT2;

Вот это вот занимает около 90 тактов... Если оптимизировать - можно достичь требуемой частоты - но все ж вряд ли...

Re: генератор частоты и скважности одновременно на атмеге8

boez » 01 мар 2013, 14:42

Народ, че-то вы хотите человека запутать и напугать зазря, как по-моему. Ну есть же в меге8 режим ШИМ с произвольной частотой, называется Phase and Frequency Correct PWM.
Код: Выделить всёРазвернуть
TCCR1A = (1<<COM1A1);
TCCR1B = (1<<WGM13)|(1<<CS10);


в ICR1 пишем период, например хотим частоту 130 кГц - пишем 16000/130 = 123. Получим 16000/123 = 130.0813 кГц. Шаг перестройки частоты - меньше 1%, для контура с добротностью не выше 50 пойдет :)

в OCR1A пишем число от 0 до значения ICR1. Получаем разную скважность, заполнение от 0 до 100%.

Re: генератор частоты и скважности одновременно на атмеге8

Duhas » 01 мар 2013, 16:01

а я вот только доку открыл, думал вспомнить вечером как оно называется...

Re: генератор частоты и скважности одновременно на атмеге8

RootAdmin » 01 мар 2013, 16:28

Учиться мне еще и учиться. Видно недостаточно усердно курил даташит.

Re: генератор частоты и скважности одновременно на атмеге8

boez » 01 мар 2013, 16:41

Ой, а я оказывается недочитал задачу :) Спрашивали-то про таймер 2. На нем нельзя получается - либо режим CTC, в котором нельзя рулить скважностью, либо PWM в котором период всегда 256. Извиняюсь за невнимательность.

На прерываниях я бы делал так: режим CTC, ногу в режим toggle, и в прерывании смотреть на текущее состояние ноги (вкл/выкл) и подсовывать длительность следующего импульса или паузы в OCR2.

Но для контура мне кажется лучше забрать таймер 1. Чем он щас занят-то? Может его задачу проще программно или на таймере 2 сделать?

Re: генератор частоты и скважности одновременно на атмеге8

к561ЛА7 » 01 мар 2013, 19:49

Фантастика.

У меня нет слов чтобы выразить свою благодарность. :Yahoo!:


Rambler\'s Top100 Mail.ru counter