roboforum.ru

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

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение Duhas » 28 фев 2013, 12:38

чип то у тебя какой?
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

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

Сообщение RootAdmin » 28 фев 2013, 12:42

#define ClockHZ XX //Частота в герцах
Устанавливаем нужную частоту...
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

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

Сообщение к561ЛА7 » 28 фев 2013, 20:42

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

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

то мега 8 затикает с этой частотой?
А фьюзы как выставлять?
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

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 тактов... Если оптимизировать - можно достичь требуемой частоты - но все ж вряд ли...
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

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%.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение Duhas » 01 мар 2013, 16:01

а я вот только доку открыл, думал вспомнить вечером как оно называется...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

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

Сообщение RootAdmin » 01 мар 2013, 16:28

Учиться мне еще и учиться. Видно недостаточно усердно курил даташит.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

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

Сообщение boez » 01 мар 2013, 16:41

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

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

Но для контура мне кажется лучше забрать таймер 1. Чем он щас занят-то? Может его задачу проще программно или на таймере 2 сделать?
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение к561ЛА7 » 01 мар 2013, 19:49

Фантастика.

У меня нет слов чтобы выразить свою благодарность. :Yahoo!:
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.
Аватара пользователя
к561ЛА7
 
Сообщения: 404
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3