Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
04.02.2010, 00:22
|
#1
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
ШИМ, синусоида на Мега8?
Не судите сторого. Блин задачка для второго класса, а я чего-то туплю.
Сколько по интернету лазил, есть но чуть нето, а сделать или переделать неврублюсь(или я начал заболевать и башка неварит?)
Нужно синусоиду шимом 1870 гц +- квадратный км, отсчетов 32 вполне,
Подкиньте пожалуста исходник на CVAVR для Меги8, нужно чтобы на PORTB1 или PORTB2.Таблица есть.
Потом дальше ее крутить вертеть, но надеюсь уже сам.
|
|
|
|
04.02.2010, 00:43
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
Посмотри мой проектик в "проектах PROTEUS" страничка 5 аль 6 там 3-фазный синус лепистя с регулировками. По апноуту AVR447.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
04.02.2010, 14:09
|
#3
|
Прописка
Регистрация: 01.02.2008
Сообщений: 124
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
я делал генератор синуса на меге, следующим образом: таблица значений синуса в массиве- 90значений. по прерыванию таймера 0, происходит умножение заданного значения на табличный коэффициент синуса, полученое значение записывается в значение таймера 1, настроенный на ШИМ, на следующее прерывание берется следующее табличное значение. на 90м значении тнаправление перебора таблицы меняется. таким образом 90значений таблицы - 180 отсчетов синуса. будет потребность могу выложить проект протеус+кодевижн
|
|
|
|
04.02.2010, 14:38
|
#4
|
Прописка
Регистрация: 01.02.2008
Сообщений: 124
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
проектик в протеусе на кодевижне с трехфазной синой с изменением амплитуды от частоты, правдо без коментов, но вроде как понятно
|
|
|
|
04.02.2010, 15:54
|
#5
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
Спасибо что откликнулись! Синусоиду запустил, смущает правильность настройки для нужной частоты.
У меня кварц 14.745600, пользую таблицу 32 отсчета на полный период, нужна частота на выходе 1872 гц , посмотрите плиз исходник
Вложения:
|
1_.txt (2.9 Кб, 214 просмотров) |
|
|
|
|
04.02.2010, 16:45
|
#6
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
Объясните Ваши расчеты. При частоте 14745,600 килогерц у Вас делитель 247 (256 - 9). TCCR1B=0x09; Получается 59,698 килогерц . При условии, что в 32 деления входит весь период, получаем 59,698/32= 1,865 килогерц, как бы меньше требуемой частоты 1,872.
Это только время, в котором не учитываются задержки по входу - выходу из прерывания.
|
|
|
|
04.02.2010, 17:52
|
#7
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
Цитата:
|
у Вас делитель 247 (256 - 9). TCCR1B=0x09;
|
TCCR1B=0x09 ИМНО четыре младших бита а именно 1001 указывают на счет от кварца без предделения и режим (смотрим на TCCR1А и вот тут я запутался)
Как правильно настроить чтобы в итоге получалось 1872 гц +- 2
|
|
|
|
04.02.2010, 19:48
|
#8
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
я как бы пошутил, видимо, неудачно.
Итак - на такой частоте кварца и с такими условиями частота, с которой перебираются данные = 1872*32 = 59904
Значение делителя для счетчика - 247 или сколько там получается - очень приблизительное, потому что не учитывает время отработки самого прерывания. Более того, в самом прерывании заложена неравномерность - оно съедает больше или меньше времени в зависимости от того, происходит ли ветвление по ветке (больше 31 ) или не происходит.
В таких случаях переписывают само прерывание на ассемблере, добавляют пустые команды, выравнивая ветки по длительности.
Считают в отладчике циклы и только тогда у нас получится что-то похожее на правду.
Видимо, именно это хочет от Вас преподаватель.
Прилагаю набросанный на скорую руку проект, протеус показывает около 59941, что составляет значение 1873,15.
|
|
|
|
04.02.2010, 22:28
|
#9
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
Извини! непойму логику рассуждений.
TCNT1L=32;- это что предделитель? А каким боком?
действительно предделитель нужен 246 тогда 14745600/264/32=1873,17(это меня вполне устроит)
только куда воткнуть этот предделитель 246?
И еще вопрос - можноли замерять частоту в протеусе при амплитуде меньше 1в или усилок ставить а потом частотомер?
Последний раз редактировалось diglook; 04.02.2010 в 22:50.
|
|
|
|
05.02.2010, 00:06
|
#10
|
Временная регистрация
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: ШИМ, синусоида на Мега8?
Ну вобщем к вашей схеме в протеусе подключил интегрирующую цепочку, добавил осцилограф и в исходнике заменил таблицу, TCNT1L=31; и о БОГИ! заработало! частотомер показал 1873 гц.
Спасибо огромное!
Но откуда появилось магическое число TCNT1L=31 ?
Последний раз редактировалось diglook; 05.02.2010 в 00:11.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:49.
|
|