Котуинко

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18819
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

DDS-ом генерируют синус до 20 кГц с шагом в 1Гц (а особо гениальные и с 0,1 Гц), так что меандр и подавно можно сделать.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

у Л.И. есть генератор - диапазон генерируемых частот 1…50000 Гц, минимальный шаг установки частоты 0.01 Гц
DDS реализован программно на микроконтроллере ATmega8 фирмы "Atmel". Быстродействие этого контроллера является достаточным, чтобы при тактовой частоте 16 МГц реализовать 34-разрядный накопитель фазы, работающий на частоте 216 кГц. Такой накопитель фазы обеспечивает шаг перестройки частоты примерно 0.00001 Гц. Реально используется шаг сетки 0.01 Гц,
http://www.leoniv.diod.club/projects/me ... g-530.html
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1457
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

DDS - это слишком жирно. Там ведь и другие задачи при звучащем тоне.
При CTC никакого 1 гц шага. Как обычно кто то бредит.)
Друг Кота
Аватара пользователя
Сообщения: 15816
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

OKF писал(а):DDS - это слишком жирно. ...
Воть... оставим тот DDS "на остаточное" - а для начала чего таки можно из простого подручного материала выжать.
Насчет 1Гц/на шаг - это уже зависит от диапазона частот.
В "низкочастотной" части вполне себе возможно, а вот "повыше" пока интерес как можно меньший шаг обеспечить.
8)
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

тут кроме основной задачи DDS в прерывании от таймера T1 кнопки опрашиваются, еще и индикатор есть
https://radiokot.ru/circuit/digital/measure/20/
насчет
вытрясти из AVRкина Т1 максимум возможного в смысле генерации последовательности частот с минимальным шагом между ними...
имхо как не крути - все равно через OCR, на высоких частотах шаг больше 1Гц получится.
Простенький расчет на любимом ардуинщиками Processing

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

 int ocr;
     for (int freq = 7900; freq < 8000 ; freq++) { 
        ocr = 8000000/freq - 1;
        freq = 8000000/(ocr+1);
        println("ocr= " + ocr);
        println("freq= " + freq);
    }  
..........
ocr= 1003
freq= 7968
ocr= 1002
freq= 7976
ocr= 1001
freq= 7984
ocr= 1000
freq= 7992
ocr= 999
freq= 8000
Реклама
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Сообщение Sergi »

Проще посчитать корень из тактовой таймера. Все что выше - шаг больше 1 Гц,ниже - меньше 1 Гц.
Делал DDS на 2313 с тактовой 19,5 МГц. Опрос 500 кГц с шагом 1 Гц. Автоматический перестраиваемый фильтр НЧ. Выше 20 кГц не пробовал,не нужно было.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

значит чем выше тактовая таймера, тем лучше. Можно взять 8 ног STM32G031J6M6 - там 16-ти разрядный TIM1 можно 128МГц тактировать. Есть 32-ти разрядный TIM2 64МГц. В киосках в продаже есть такой - имхо вытрясти из такого максимум возможного поинтереснее будет. 8)
Друг Кота
Аватара пользователя
Сообщения: 15816
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

При "простом делителе" важна не только тактовая частота, но и разрядность самого делителя.
Но в то же время не "переусердствовать" - собственно из-за простенькой задачи ставить DDS или осваивать новое семейство МК на уровне аппаратной начинки...
8)
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

пределитель там 16-ти разрядный - любое значение в диапазоне 0...65535, а если цель "вытрясти" - можно мышкой натыкать без особого осваивания
Изображение
Друг Кота
Аватара пользователя
Сообщения: 15816
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Предделитель особо не котируется - это всего лишь "размер единицы отсчета".
Без дополнительного байтика в счетчике и в регистре цифрового сравнения собо и не важен...
:roll:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

тю, а кто написал
При "простом делителе" важна не только тактовая частота, но и разрядность самого делителя.
а как же без пределителя низкие частоты делать. Вот примерчик формировать ноты
http://avr-start.ru/?p=3876
там таймер4 сидит на шине APB1, далее обычные расчеты (выше подобные уже были)
Допустим, нужно посчитать сколько нужно тиков, чтобы сформировать частоту, например нота До 1 октавы 261Гц. Для этого исходные 4 000 000 таймера делим на предделитель 50. Предделитель просто позволяет сделать величины нот в разумными, т.е. в пределах uint16_t.
4000 000/50= 80 000 это рабочая частота после всех делителей.

Теперь нужно найти число, которое нужно положить в ARR, чтобы из исходных 80 000 получить нужные нам 261Гц.
(80 000/(261*2))-1= 152

Почему тут умножаем на 2, потому что при достижении таймером регистра ARR, ножка инвертирует свое состояние, а нам нужно чтобы она успела включиться и выключиться.
Друг Кота
Аватара пользователя
Сообщения: 15816
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Для низких - то как раз вопрос и не стоит.
Тот же Т1 АВРки с досчетом до 30651 при 8 Мгц на входе даст 261,0029 Гц...
Это более для частот за 5 КГц актуально.
:roll:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

дык тратить драгоценный авркин T1 на тон, уж лучше T0, T2 делителем (имхо), чего изначально в ардуино по умняку и сделано

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

#define USE_TIMER2
Друг Кота
Аватара пользователя
Сообщения: 15816
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Там вполне себе и программный DDS на базе T2 может уместиться...
:roll:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

ну у них не было задачи "вытрясти максимум возможного", а так да, там DDSа того - 6 строк ассемблера

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

; Output frequency (using 24 bit accumulator) :
;
;	f = deltaPhase * fClock/2^24
;
;   fClock is in this case the CPU clock divided by the
;	number of cycles to output the data ( 9 cycles )
;
;	f = r24/r25/r26 * (11059200/9)/16777216
;
;	f = r24/r25/r26 * 0.073242188
;
;	fMax (theoretical) = 0.5 * fClock
......
; main loop
;
;	r28,r29,ZL is the phase accumulator
;  	r24,r25,r26 is the adder value determining frequency
;
; 	add value to accumulator
;	load byte from current table in ROM
;	output byte to port
;	repeat 
LOOP1:
		add		r28,r24			; 1
		adc		r29,r25			; 1
		adc		ZL,r26			; 1
; note: LPM will read (ZH, ZL). r30 is constantly changing (MSB, but LSB of ZH)
		lpm						; 3
		out		PORTB,r0		; 1
		rjmp	LOOP1			; 2 => 9 cycles
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

глянул - появились у нас в базарном киоске soic8 ATtiny212 ATtiny202, чуть дороже ATtiny13 - а там навалили таймеров для генерации тона
– One 16-bit Timer/Counter Type A with Dedicated Period Register, Three Compare Channels
(TCA)
– One 16-bit Timer/Counter type B with Input Capture (TCB)
– One 12-bit Timer/Counter type D Optimized for Control Applications (TCD)
– One 16-bit Real Time Counter (RTC) Running from External Crystal or Internal RC Oscillator
еще и ЦАПчик есть синусы генерить
– 8-bit Digital to Analog Converter (DAC)
еще и это может к делу приобщить
– Configurable Custom Logic (CCL) with Two Programmable Lookup Tables (LUT)

Ардуинщики на высоте, поддерживают, есть ядро, программатор на обычной ардуине делается
https://github.com/SpenceKonde/megaTinyCore
Друг Кота
Аватара пользователя
Сообщения: 15816
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

За последнее время на адуринке много чего нового появилось...
Глазки разбегаются...
Там ведь еще и от mcu dude чего-то лежит...
:roll:

Вышел новый релиз симулятора для ардуино UNO/MEGA
https://www.sites.google.com/site/unoardusim/services
:wink:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3975016#p3975016"]глянул - появились у нас в базарном киоске soic8 ATtiny212 ATtiny202, чуть дороже ATtiny13 - а там навалили таймеров для генерации тона[/uquote]
Прям навалили? :) Захочешь частоту энкодером менять, в AN2434 объясняется как это сделать при помощи двух 16-ти битных таймеров и CLC, итого остается один 12-ти битный таймер... Для сравнения, у любого STM32G0 из десятка таймеров 4 умеют работать с энкодерами.
программатор на обычной ардуине делается
Программатор или отладчик?
Друг Кота
Аватара пользователя
Сообщения: 15816
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Собственно относительно ардуиноIDE смысла в отладчике нету.
8)
Относительно STM (ARM)... в данном разделе принимается лишь то, что касается применения "в рамках референса" соответствующих платок-платформ (синя таблетка и подобные).
Разбор начинки ARM - удел соответствующей ветки.
:(
:sleep:
В данном обсуждении предпочтительно или то, что имеется в ардуиноIDE "в рамках референса" или то, что касается семейств
MCS51, AVR, PICсреднемладших под ассемблером.
Просто невозможно за всеми тонкостями вовремя уследить и качественно разбираться - новый комплект AVRок от микрощипа тому подтверждение.
8)
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

да по сравнению с тини13 навалили. И речь была о генерации тона - теперь таймеров хватит для этого и пр.. Когда надо энкодер - тут да аппаратный вне конкуренции, проверено.
Пока поддержки ардуинщиками 8-и ногих STM32G0 не видно, но тенденция с G0 есть
https://www.compel.ru/lib/132248
Ответить

Вернуться в «Разные вопросы по МК»