Отговори на тема  [ 28 мнения ]  Отиди на страница 1, 2  Следваща
Софтуерен ШИМ (PWM) 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 11, 2006 11:47 am
Мнения: 7
Мнение Софтуерен ШИМ (PWM)
Здравейте!

Дали някой може да помогне... От поне седмица се опитвам да сътворя програма за PIC(12F629), който няма хардуерен PWM модул, но с много лош резултат. Целта е микроконтролера да бъде превърнат в предавател на 1200 бода, и честоти съответно 1200Hz/2200Hz. Има и условие изхода да бъде задължително на ШИМ... и тактовата честота да бъде 4MHz...

Видях направено такова нещо, затова съм сигурен, че е възможно. На готовото "нещо" ШИМ-а е с приблизителна честота 20kHz. Докато моята "саката" версия достигна най-много около 6,5kHz на ШИМ-а, при 5bit растер на синусоидата :-(

Бих се радвал на всякакви мнения насоки, за което благодаря предварително!


Пон Дек 11, 2006 12:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ами прави се елементарно. :? Но не виждам каква е връзката между ШИМ-а и предаването на цифрови данни?


Пон Дек 11, 2006 12:05 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Окт 21, 2005 8:45 am
Мнения: 499
Мнение 
20kHz = период от 50us. Най-вероятно изискването за 4MHz е породено от това, че не ти стигат пинове и трябва да използваш вътрешния генератор. При това положение с 12F683 например, ще можеш да ползваш двойно по-голяма честота при същите размери и (почти) същата цена. При този такт имаш възможност за резолюция на ШИМ-а 50(0,1V). Като ще имаш минимална ширина на импулса/паузата около 10us(2us за влизане в прекъсването, 2 - за увеличаване на брояча, 2 - за четене от таблицата - {м/у другото нали с таблично четене си го направил, иначе става много бавно, а! и таблицата - вътре в тялото на прекъсването!}, 2us за излизане от прекъсването, и накрая 2us наум). За да можеш едновременно да предаваш на 1200бода (833us), на всеки 16периода на ШИМ-а пускаш следващия бит от серийната комуникация. Пусни таймер1 да те прекъсва на всеки 50us и останалото синхронизираш по него. Ако имаш възможност (няма да правиш нищо друго освен да приемаш стойност и да я цъкаш навън със шим) направи го без прекъсвания. При такъв натоварен график (time table) по-добре напиши го на асемблер. Ако ще го пишеш на високо ниво, в никакъв случай не викай функция вътре в самото прекъсване, защото компилатора ще тръгне да ти записва всички регистри, които използваш, а това ще ти "изяде" 30-тина us! И принципно, ако искаш по-добър отговор, задай по-добре (дай повече подробности) въпроса!

_________________
Простотията е Божи дар, но човек не бива да парадира с подаръците си!


Пон Дек 11, 2006 2:27 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
12ф683 има и хардуерен ШИМ така, че ще спести доста време и най-вече главоболия.


Пон Дек 11, 2006 2:48 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 11, 2006 11:47 am
Мнения: 7
Мнение 
Cekins написа:
12ф683 има и хардуерен ШИМ така, че ще спести доста време и най-вече главоболия.


Няма как да бъде сменен PIC-а :( - знам за 683...


Пон Дек 11, 2006 4:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
А процесора ще прави ли други неща освен това PWM? Ако ще прави, няма как да минеш без таймер.


Пон Дек 11, 2006 6:47 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 11, 2006 11:47 am
Мнения: 7
Мнение 
Реконструктор написа:
А процесора ще прави ли други неща освен това PWM? Ако ще прави, няма как да минеш без таймер.


Ами не, поне докато се занимава с PWM.


Пон Дек 11, 2006 7:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение 
Поясни какво точно правиш. Хем за ШИМ става въпрос хем за 1200 бода хем за някакви 4 МХЗ с този ПИК?
Нещо нищо не се връзва какво е питането ти?


Пон Дек 11, 2006 7:12 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 11, 2006 11:47 am
Мнения: 7
Мнение 
Edesign написа:
Поясни какво точно правиш. Хем за ШИМ става въпрос хем за 1200 бода хем за някакви 4 МХЗ с този ПИК?
Нещо нищо не се връзва какво е питането ти?


Ограничения: Тактова честота на микроконтролера: 4MHz (не може да се променя - ползва се вградения генератор). Няма хардуерен ШИМ (не трябва да се ползва друг чип).
Питането: Дали някой е генерирал FSK сигнал na 1200 boda със подобен PIC, чрез използване на ШИМ (за да не откривам топлата вода тепърва). Честотите на тоновете, които трябва да се получат са при Low Bit -> 2200Hz и при High Bit -> 1200Hz ( т.е. продължителността на един бит е 833,3 микросекунди )

Нещо друго неясно има ли? Или ясно?


Пон Дек 11, 2006 7:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение 
това означава че вътре във времето на един бит можеш да вкараш само един период на сигнала с честота 1200 херца и малко по- малко от два периода с честота 2200 херца.
Не виждам какъв е проблема дори само с нопове завъртяни в цикъл ей така за спорта но какъв е смисъла при тези съотношения на времента?!


Пон Дек 11, 2006 7:36 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 11, 2006 11:47 am
Мнения: 7
Мнение 
Edesign написа:
това означава че вътре във времето на един бит можеш да вкараш само един период на сигнала с честота 1200 херца и малко по- малко от два периода с честота 2200 херца.
Не виждам какъв е проблема дори само с нопове завъртяни в цикъл ей така за спорта но какъв е смисъла при тези съотношения на времента?!



А знаеш ли изобщо, Edesign, какво представлява FSK модулация?


Пон Дек 11, 2006 7:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Еми прав е Edesign че ти го казва това. Аз доколкото съм чел FSK означава Frequency Shift Keying. За 833 микросекунди не можеш ли да разцъкаш един пин с 2200 Hz ? Предаването на данни със ШИМ е нещо съвсем различно. Там имаш примерно 1/3 запълване на импулса за 0 и 2/3 за единица. Сиреч ако импулса ти е 3 сек. за 0 - 1 сек. 1-ца и 2 сек нула (приемрно) и за 1-ца 2 сек. 1 и 1 сек. 0. В началото се предават няколко единици или нули (зависи как ще си направиш софта) за да може приемника да разбере какво е времето на импулса. Дори и наистина да се опитваш да предваш с ШИМ - там пък си още по лесен, ама няма да имаш 1200 и 2200 хз. ШИМ и FSK са две различни неща май.


Пон Дек 11, 2006 9:21 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
Cekins прав си, но ако хващам правилно идеята, замисальт е чрез PWM да се постигне FSK ;) Което е напьлно вьзможно.
FSK-то е дигиталният аналог на честотната модулация. Миналата седмица имах практика по темата :). Далаверата на FSK е че можеш да предаваш двуичен код с помощта на хармонична, като променяш честотата на синусоида. Големият плюс е се вижда след Фурие анализа, една хармонична заема една единствена честота в спектьра, логично, което означава, че за да предаем двуичен сигнал на разстояние имаме нужда от супер малка честотна лента => 2 честоти, погледнато на спектралния анализатор подобен сигнал е просто красота.
И тук идва ролята на PWM-а. С PWM можеш да сьздадеш така да се каже псевдо-аналогов сигнал, и по-точно синус-функцията която ни трябва за FSK-то. Малко е болна идеята понеже за целта си има DAC-и, но може да си е беден на периферия вьпросния ПИК ;)
Това става като дискретизираш синус функция и представиш амплитудата на сигнала като функция на duty cycle-а на PWM-а. Тук намерих готина картинка която онагледява идеята.
http://upload.wikimedia.org/wikipedia/d ... lation.png
Азраел, като виждаш че хората искат допьлнителна информация е добре да я предоставиш по културен начин. В този форум не е прието да поствяш по подобен начин компетентността на членовете под вьпрос, особено когато питаш за сьвет, особено пьк тази на Edesign! място за реклама :D


Пон Дек 11, 2006 9:44 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
азраел я разкажи какво правиш с тази FSK, че стана интересно. Идват ми на ум все един шашави идеи, които не се вписват някак си с ограниченията които поставяш. Дай повече инфо, защо точно FSK и какво става сьс сигнала след µC-а. Или е нещо особено оригинално или си избрал странно, а може би и неподходящо решение на даден проблем или ми убягва нещо, което не е малко вероятно.


Пон Дек 11, 2006 10:09 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Ами може ама 1 MIPS за това до никъде не стига. Не е ли много сложно такова решение ?


Пон Дек 11, 2006 10:12 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 28 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни