Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 09.02.2010, 17:55  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от SasaVitebsk Посмотреть сообщение
Но плясали от восстановления. Там всё не так замечательно. Цифровые фильтра
А не пробовали два фильтра Гертцеля поставить? Для одного фильтра четыре умножения и три сложения на выборку.
Реклама:

Последний раз редактировалось =GM=; 09.02.2010 в 18:00.
=GM= вне форума  
Непрочитано 09.02.2010, 20:32  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от diglook Посмотреть сообщение
Нужна синусоида 1872+-5 гц(надеюсь приемник проглотит). От ШИМ отказался - будет паралельный ЦАП R2R на 6 бит(PORTB.0 -PORTB.5), длина таблицы - лишбы нормально получилась частота, места хватает. Следующая задача , видимо в том же обработчике прерывания, разворот фазы на 180 - здесь для меня вродебы все ясно, при условии что от длинны обработчика частота не намного будет уходить. еще одно прерывание прием данных по UART здесь тоже все понятно. Основная заморока в том чтобы весь код с его ветвлениями не влиял особенно на частоту несущей 1872+-5.
1) При частоте 14745600/ 256 = 57600.
2) 57600 / 1872 = 30,769230769230769230769230769231
3) 800 / 30,769230769230769230769230769231 = 26.
Ошибка = 0.

Соответственно вам надо сформировать таблицу синуса с шагом 2*Pi/800.

При выводе выводить с шагом 26. Разворот фазы на 180 - есть смещение в таблице на 400. Это очевидно.

Теперь следующее. "Основная заморока в том чтобы весь код с его ветвлениями не влиял особенно на частоту несущей 1872+-5.". Просто меня в шок вводите. Это надо умудриться "повлиять" на несущую. Немного от смеха отойду.

Так.
Частоту вы не измение, если будите выводить в прерывании. Конечно ШИМ в этом отношении лучше, так как вывод аппаратный, но при программном выводе при отсутствии прерывания от USART у вас будет дрожание ~ 3 такта. Что несколько ухудшит качество вывода (то бишь добавит искажений к сигналу), но частоту никак не изменит.
Про какие ветвления ведём речь? Если в голове, то они по-барабану. Если в прерывании, то делаем следующим образом...

В прерывании объявляем переменную типа так

uint8_t static last_out;
Первой операцией прерывания у вас будет:
PORTB = last_out;
далее идут все ваши перетурбации вместе с ветвлениями и результат вы заносите в ваш last_out.

Надеюсь с этим всё.

Прерывание от RS232 надо мне увидеть. Я его откорректирую, чтобы всё работало с минимальным джиттером и величину его вам скажу по факту.
Хотя, по хорошему, надо на асме. Короче это надо смотреть.
SasaVitebsk вне форума  
Непрочитано 09.02.2010, 21:15  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

торопицца не надо...(С) Жванецкий
Без эмоций - существует метод, при котором градацию в 256 бит можно получить всего по 8 срабатываниям таймера.
Причем при этом -если разрешать прерывания только во время свободы - никак не отразится другое прерывание на качестве синуса.
__________________
warez
urry вне форума  
Непрочитано 09.02.2010, 21:36  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Зачем 8? Можно обойтись двумя.
=GM= вне форума  
Непрочитано 10.02.2010, 00:10  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?


Чем мне и нравится программирование. Богатство и свобода выбора.

2 urry.
Цитата:
Причем при этом -если разрешать прерывания только во время свободы - никак не отразится другое прерывание на качестве синуса.
Ну это можно реализовать в любом варианте. В том числе и в предложенном мной. Фактически это синхронизация прерываний. Существует куча способов как её реализовать.

2 =GM=. Вам я верю безоговорочно. Вы страсть как такие дела любите. 256 градаций по времени за период, я так понимаю? Так как по амплитуде определяется ЦАПом.

Любопытно.
Излагайте.
SasaVitebsk вне форума  
Непрочитано 10.02.2010, 02:46  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от SasaVitebsk Посмотреть сообщение
256 градаций по времени за период, я так понимаю? Так как по амплитуде определяется ЦАПом
Я б рад изложить, да боюсь, не совсем врубился. Что такое "Так как по амплитуде определяется ЦАПом"? Переформулируйте вопрос.
=GM= вне форума  
Непрочитано 10.02.2010, 12:31  
diglook
Временная регистрация
 
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
diglook на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Цитата:
1) При частоте 14745600/ 256 = 57600
получается межу прерываниями 256 тактов и все нужно успеть в этом промежутке.
А если использовать прерывание не по переполнению а по срвнению с 512 тогда
1) При частоте 14745600/ 512 = 28800.
2) 28800 / 1872 = 15,384615384615384615384615384615
3) 400 / 15,384615384615384615384615384615= 26.
или 200 / 15,384615384615384615384615384615=13
Ошибка = 0.
и таблица меньше и свободы больше(за 512 тактов многое можно успеть)
Цитата:
uint8_t static last_out;
Первой операцией прерывания у вас будет:
PORTB = last_out;
далее идут все ваши перетурбации вместе с ветвлениями и результат вы заносите в ваш last_out.
получается что текущая выборка готовится в предыдущем прерывании и ветки в обработчике никак не влияют на фазу
вот это гениально, спасибо!
diglook вне форума  
Непрочитано 10.02.2010, 21:00  
diglook
Временная регистрация
 
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
diglook на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

В итоге получилось вот что
чем короче таблица тем больше тактов проца для работы, выбрал 16 значений (можно было и 8, сложнее сглаживать ступенки)
1)14745600 / 16 = 921600
2)921600 /1872= 492,30769230769230769230769230769
выбираем 492 тогда
14745600/16/492=1873,1707317073170731707317073171 - в пределах допуска
прилагаю проэкт в протеусе там при нажатии княпки переворот фазы каждые 4 периода.

Благодарю всех участников обсуждения! Вы мне очень помогли!
Вложения:
Тип файла: rar 1.rar (77.7 Кб, 124 просмотров)
diglook вне форума  
Непрочитано 10.02.2010, 23:06  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Сообщение от diglook Посмотреть сообщение
В итоге получилось вот что
чем короче таблица тем больше тактов проца для работы, выбрал 16 значений (можно было и 8, сложнее сглаживать ступенки)
А куда ты эти такты деёшь. Это же не Винда. Задача не стоит освободить процессор от работы. Пусть пашет. Это же кремний.

Загрузишь проц на 99% - тебе почёт и уважуха. И синус будет красивей и точность по частоты - выше.
SasaVitebsk вне форума  
Непрочитано 11.02.2010, 13:07  
diglook
Временная регистрация
 
Регистрация: 09.09.2009
Сообщений: 91
Сказал спасибо: 10
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
diglook на пути к лучшему
По умолчанию Re: ШИМ, синусоида на Мега8?

Цитата:
А куда ты эти такты деёшь. Это же не Винда. Задача не стоит освободить процессор от работы. Пусть пашет. Это же кремний.

Загрузишь проц на 99% - тебе почёт и уважуха. И синус будет красивей и точность по частоты - выше.
То что сделано на данный момент это вершина айсберга, еще нужно принимать данные по UART разложить по полочкам и промодулировать сигнал . Т.Е это ОФМ передатчик. И на всю работу у меня есть всего 492 такта проца, из них создание синуса сьело уже почти 10%.
diglook вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ШИМ для стартера 55mak Источники питания и свет 10 21.08.2010 18:05
переделка БП на ШИМ 2003 на одно напряжение artem_y Источники питания и свет 9 26.02.2010 23:35
не работает ШИМ в контроллере 40inD Proteus 10 11.01.2010 00:22
Управление автомобильной форсункой ШИМ сигналом, Помогите stanikstanik Автоматика и аппаратура связи 2 19.11.2009 19:27
Нужно преобразовать ШИМ в 0-10В, нагрузка 3А Xuchik Источники питания и свет 37 02.10.2009 08:24


Часовой пояс GMT +4, время: 04:40.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot