Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Софтуерен ШИМ (PWM)
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=3401
Страница 1 от 2

Автор:  azrael [ Пон Дек 11, 2006 12:01 pm ]
Заглавие:  Софтуерен ШИМ (PWM)

Здравейте!

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

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

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

Автор:  Реконструктор [ Пон Дек 11, 2006 12:05 pm ]
Заглавие: 

Ами прави се елементарно. :? Но не виждам каква е връзката между ШИМ-а и предаването на цифрови данни?

Автор:  evc [ Пон Дек 11, 2006 2:27 pm ]
Заглавие: 

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

Автор:  Cekins [ Пон Дек 11, 2006 2:48 pm ]
Заглавие: 

12ф683 има и хардуерен ШИМ така, че ще спести доста време и най-вече главоболия.

Автор:  azrael [ Пон Дек 11, 2006 4:51 pm ]
Заглавие: 

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


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

Автор:  Реконструктор [ Пон Дек 11, 2006 6:47 pm ]
Заглавие: 

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

Автор:  azrael [ Пон Дек 11, 2006 7:06 pm ]
Заглавие: 

Реконструктор написа:
А процесора ще прави ли други неща освен това PWM? Ако ще прави, няма как да минеш без таймер.


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

Автор:  Edesign [ Пон Дек 11, 2006 7:12 pm ]
Заглавие: 

Поясни какво точно правиш. Хем за ШИМ става въпрос хем за 1200 бода хем за някакви 4 МХЗ с този ПИК?
Нещо нищо не се връзва какво е питането ти?

Автор:  azrael [ Пон Дек 11, 2006 7:27 pm ]
Заглавие: 

Edesign написа:
Поясни какво точно правиш. Хем за ШИМ става въпрос хем за 1200 бода хем за някакви 4 МХЗ с този ПИК?
Нещо нищо не се връзва какво е питането ти?


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

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

Автор:  Edesign [ Пон Дек 11, 2006 7:36 pm ]
Заглавие: 

това означава че вътре във времето на един бит можеш да вкараш само един период на сигнала с честота 1200 херца и малко по- малко от два периода с честота 2200 херца.
Не виждам какъв е проблема дори само с нопове завъртяни в цикъл ей така за спорта но какъв е смисъла при тези съотношения на времента?!

Автор:  azrael [ Пон Дек 11, 2006 7:42 pm ]
Заглавие: 

Edesign написа:
това означава че вътре във времето на един бит можеш да вкараш само един период на сигнала с честота 1200 херца и малко по- малко от два периода с честота 2200 херца.
Не виждам какъв е проблема дори само с нопове завъртяни в цикъл ей така за спорта но какъв е смисъла при тези съотношения на времента?!



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

Автор:  Cekins [ Пон Дек 11, 2006 9:21 pm ]
Заглавие: 

Еми прав е 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 са две различни неща май.

Автор:  HCL [ Пон Дек 11, 2006 9:44 pm ]
Заглавие: 

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

Автор:  HCL [ Пон Дек 11, 2006 10:09 pm ]
Заглавие: 

азраел я разкажи какво правиш с тази FSK, че стана интересно. Идват ми на ум все един шашави идеи, които не се вписват някак си с ограниченията които поставяш. Дай повече инфо, защо точно FSK и какво става сьс сигнала след µC-а. Или е нещо особено оригинално или си избрал странно, а може би и неподходящо решение на даден проблем или ми убягва нещо, което не е малко вероятно.

Автор:  Cekins [ Пон Дек 11, 2006 10:12 pm ]
Заглавие: 

Ами може ама 1 MIPS за това до никъде не стига. Не е ли много сложно такова решение ?

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/