AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
27.10.2012, 11:22
|
|
Частый гость
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Attiny13\2313 и генератор импульсов на CVAVR
День добрый.
передо мной стоит следующая задача. собрать генератор импульсов заданной частоты на attiny13. Частота 114кГц. форма сигнала - меандр.
как бы несложная задача, однако, у меня не получилось её реализовать средствами CVAVR, т.к. стандартная библиотека задержек delay.h принимает только целые значения в функции delay_us() а для заданной частоты нужно 8.6 мкс периода. отклонение от заданной частоты - очень критично. Поэтому не могли бы вы мне подсказать бибилиотеки или какие-нибудь другие методы решения проблемы.
Из возможных вариантов я рассматривал dds генератор. однако, у меня не получилось перевести бейсик\ассемблерный исходник написанный в bascom в исходник на С для CVAVR, какие-то проблемы с синтаксисом, (я не силён в ассемблере). на всякий случай, я приложу исходник бейсика, может кто сможет его перегнать чтобы его воспринял cvavr.
можно предложить пару ссылок на статейку где описываются подобные вещи.
|
|
|
|
27.10.2012, 11:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,003
Сказал спасибо: 0
Сказали Спасибо 4,946 раз(а) в 2,374 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
Сообщение от deeman30rus
|
я не силён в ассемблере
|
так осильте - на С придется ассемблерные вставки делать или, что более правильно, написать проект на ассемблере. без этих знаний вы - "-0" ведь dds генератор, написанный Л.И., на ассме. есть проект dds генератора, где прямоугольный сигнал формируется до 200кгц, но тоже на ассме. а проще всего взять dds от АД - АД983х, цена копеечная
|
|
|
|
27.10.2012, 12:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
Сообщение от deeman30rus
|
для заданной частоты нужно 8.6 мкс периода.
|
8,7719298245614035087719298245614 us
Сообщение от deeman30rus
|
отклонение от заданной частоты - очень критично.
|
1 такт от внутреннего генератора 0,10416666666666666666666666666667us.
1 период равен 84,210526315789473684210526315789 тактов.
Какова нужна точность?
P.S.
DDS для меандра?
|
|
|
|
27.10.2012, 14:59
|
|
Частый гость
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
по поводу точности - нужно чтобы постоянными были 114кГц
для меандра - dds + триггер, если быть более точным
|
|
|
|
27.10.2012, 15:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
Сообщение от deeman30rus
|
нужно чтобы постоянными были 114кГц
|
114кГц или 114000Гц?
|
|
|
|
27.10.2012, 16:22
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
вроде можно организовать встроенным таймером
OCR=(8000000/114000*K*2)-1
К - коэффициент пределителя
OCR=8000000/(114000*1*2)-1=34.0877192982456*
Делал таким образом 36 кГц
а забыл в тини13 частота внутреннего генератора 9.6 мГц
9600000/(114000*1*2)-1=41.1052631578947
Код:
|
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 9600.000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Toggle on compare match
// OC0B output: Disconnected
TCCR0A=0x42;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=41;
OCR0B=0x00; |
Последний раз редактировалось oleg110592; 27.10.2012 в 16:58.
|
|
|
|
27.10.2012, 23:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
114285,71428571428571428571428571 Гц
|
|
|
|
28.10.2012, 00:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
Сообщение от deeman30rus
|
День добрый.
передо мной стоит следующая задача. собрать генератор импульсов заданной частоты на attiny13. Частота 114кГц. форма сигнала - меандр.
отклонение от заданной частоты - очень критично.
|
Ну если отклонение критично, тогда нужен кварц. К этому микроконтроллеру, как я помню, он не подключается, то есть, нужен внешний генератор. Это раз.
В МК есть счётчики с разными режимами работы. Вам нужен режим CTC с инвертированием вывода при переполнении.
То есть, 3-5 строчек кода.
Цастота кварца, естесственно, должна быть кратна полупериоду ваших 114 кГц.
P.S. Я бы выбрал для этих целей другой МК.
|
|
|
|
28.10.2012, 09:02
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
Сообщение от omercury
|
114285,71428571428571428571428571 Гц
|
Есть такое дело. Можно OSCCAL попробовать подогнать.
|
|
|
|
29.10.2012, 08:05
|
|
Частый гость
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Attiny13\2313 и генератор импульсов на CVAVR
спасибо за ответы, я сегодня попробую сделать через таймер
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:06.
|
|