|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:59 pm
| Автор |
Съобщение |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
направи си една малка програмка в таймерно прекъсване.
Достатъчна е!
Аз имам продукт, който освен че предава, и приема (с аналоговия компаратор) и декодира същата поредица, че прави и протокола за обмена (пакети) в многоточкова модемна структура.
не е просто, но става.
Но не става на "С". става на асемблер.
Да добавя - с такт 4МХц
Впрочем, модемчето го продавам евтино 
|
| Пон Дек 11, 2006 11:03 pm |
|
 |
|
azrael
Ранг: Минаващ
Регистриран на: Пон Дек 11, 2006 11:47 am Мнения: 7
|
HCL - Е най накрая, още едно мнение което заслужава внимание, след това на evc. Като начало това ми идва в главата, а отпосле - замислям се доколко правилно съм представил проблема. И май грешката е моя, така че, че моля да бъда извинен. В един момент тук ми заприлича на "поредния форум" дето всички пишат и никой не мисли. Затова беше предното гадно изказване. Съжалявам. Точно това е HCL, представи си няколко радиопредавателя, които при определено събитие излъчват различен "код" - двоична информация, която е генерирана и доведена до синусоидална форма от този PIC именно чрез PWM. Но в един моент трябва да се промени някоя от думите и се натъкваме на CP ALL... Следователно, в устройството трябва да бъде записано всичко отначало. И ми е необходим някакъв читав алгоритъм. При все това, че със този PIC, с тази тактова честота, съм го видял да работи. Яд ме е на себе си, че алгоритмите които съставям до момента са прекалено тромави и резултата е повече от отвратителен. Затова и търся помощ, а не мнения от рода "ами това се прави елемнтарно" ...
|
| Пон Дек 11, 2006 11:39 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Май наистина не се разбрахте в началото, затова и се получиха такива мнения, но както и да е.
Защо точно PWM? Един VCO не е ли по-добро решение, резонансен крьг с варактор или пьк два осцилатора ако има проблем сьс скоростта на превключване.
И един вьпрос от любопитсво, обикновенна FSK модулация ли използваш или филтрираш честотните преходи (GFSK например) с цел да ограничиш спектьра?
Какво им е тромавото на алгоритмите, пусни код или поне схема на програмта. И какво точно се случва сьс сигнала ведньж излязал от µC-a.
Syrius-B и ти ли сьздаваш синусоида сьс PWM
Впрочем @азраел аз сьм от "чираците" в този форум, затова и повече питам и гледам да избягвам да давам много акьл, макар и да се изкушавам понякога, човешко e  , да не се подведеш нещо по лампичките над аватара.
|
| Вто Дек 12, 2006 12:51 am |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
А имаш ли идея за интегратора на ШИМ-а, за да се получи таква гладка синусоида? Интересува ме живо темата. 
|
| Вто Дек 12, 2006 1:09 am |
|
 |
|
azrael
Ранг: Минаващ
Регистриран на: Пон Дек 11, 2006 11:47 am Мнения: 7
|
VCO на толкова ниски честоти, при това с варактор... Май няма да се получи. А по втория въпрос - обикновена FSK. А какво е тромавото - значи аз досега се опитвах да завъртам една табличка, която представлява един период от синусоида и в зависимост от бит (0 или 1) се променяше скоростта на заврътане на тази табличка. Тези опити завършиха успешно, но не през ШИМ, а през R2R. След това реших, че трябва да използвам хардуерния ШИМ на PIC16F628 и го направих и така - със честота на ШИМ-а 62.5kHz. Но после се оказа, че чипа в нещото, което трябва да се презаписва е 12F629 - т.е. няма хардуерен ШИМ... А какво се случва със сигнала след като излезе от чипа - минава през две интегриращи групички (които също не могат да бъдат променени) съставени от 2,2k и 100nF a оттам отива във FM модулатора на някакъв радиопредавател..
|
| Вто Дек 12, 2006 8:13 am |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Виждал съм по мрежата такива решения, е, не точно за този PIC и тази честота на осцилатора. Генерират правоъгълни импулси с точната честота, след което се филтрират с активен НЧФ и на изхода излиза синусоида. Като искаш да предаваш 1 или 0, сменяш честотата на правоъгълните импулси за времето на 1 бит и ... общо взето е това. В сайта на TI има такива AN за MSP430 в качеството си на FSK ( май V.23 ) модем.
Ако обаче искаш да синтезираш тези честоти, т.е. PIC да ти прави синусоида без хардуерен ШИМ и на тази честота, няма как да стане. Синтезирам с PIC на 8 MHz с хардуерен ШИМ DTMF сигнали, процесора е натоварен на 99,99 %, даже не достига в определени програмни сегменти, но ме спасява външния филтър, който не може да реагира толкова бързо.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Вто Дек 12, 2006 10:09 am |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 31, 2005 1:57 pm Мнения: 1103
|
ето линк към статия как се смятат филтрите:
ww1.microchip.com/downloads/en/AppNotes/00538c.pdf
ето и още една статия:
http://www.edn.com/index.asp?layout=art ... d=CA240913
Според мен може да се направят два софтуерни шима на 2 пина на ПИКа и с външен аналогов ключ да се комутират към общ изход.
За генериране на ДТМФ пак има статия и сорс някъде из апликейшъните с R2R на някакъв ПИК 16 серия и кода не беше никак голям.
Но наистина все още не ми става ясно възможна ли е тази FSK заради съотношенията на времената. Просто никога не съм правил подобна комуникация. Имам доста проекти на дистанционни управления, някои от първите ми съм публикувал в страничката ми може да ги разгледаш но са на принципа с чист PWM както беше описано няколко поста по-горе.
|
| Вто Дек 12, 2006 10:19 am |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
azrael се опитва да обясни следното
Той има платка, устройство, което е готово и работещо и изпълнено по определен начин (и не е негово произведение). Обаче не му върши работа поради някаква причина (той каза каква). Изхода според него е да се смени софта. Това е.
Не знам защо обаче досега не написа горните две изречения в прав текст. Обикновено за да получиш правилен отговор трябва да зададеш правилен въпрос (аз доста често не успявам, така че не го съдя).
От тази гледна точка едва ли ще му свършат работа други решения освен софтуерни.
И в този ред на мисли аз да попитам - azrael, сигурен ли си че това което реализират със сегашната програма е ШИМ, а не просто цифров FSK с аналогов филтър? (само питам  ).
|
| Вто Дек 12, 2006 11:32 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Не бях виждал подобна реализация на PWM, затова и питах как изглеждат филтрите след µC-а, но Edesign е дал хубави линкове.
|
| Вто Дек 12, 2006 12:27 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Преди време правих един пик да вади синусоида с ШИМ на 50 хц, 20 кхц носеща (ясно за какво иде реч). Човека само това искаше де. И като го сложихме на неговия стар руски осцилоскоп имаше много красива синусоида - кондезатора в сондата така хубаво изглаждаше сигнала, че чак се удивихме. Иначе и на мен ми е интересно какво представлява интегратора на сигнала.
|
| Вто Дек 12, 2006 1:52 pm |
|
 |
|
evc
Ранг: Напреднал
Регистриран на: Пет Окт 21, 2005 8:45 am Мнения: 499
|
Всичко, което обобщи @ex-man е вярно, но бих искал да заостря вниманието ви на няколко цифри:
При 20кХц един период на ШИМ-а е 50мкс. В един период на синусоидата при високата честота на модулация - 2200Хц има 9 периода на ШИМ-а. Следователно синусоидата може да се опише с не повече от 9 точки, което не е толкова зле - за сравнение HiFi компакт диск има честота на дискретизациа 22кХц на канал при ширина на честотната лента 20кХц! Тук е подводния камък обаче! При тези честоти е много трудно да се получи желаната резолюция на синусоидата при такт от 1МХц! Т.е. да се постигне колкото се може по-голяма динамика на изходното напрежение, като се запази относително монотонно нарастването и спадането на сигнала - да не стане на "стъпалца" синуса. Ето защо посъветвах колегата да напише колкото се може по-линеен код, дори ако е възможно да не използва прекъсвания въобще. Прилагам подпрограмата за генериране на синусоида, с която постигнах най малка "стъпаловидност" на изходния сигнал, както ти обещах @azrael. Освен нея трябва да добавиш основната програма, която да прави проверка за настъпване на стартовото събитие, да върти един по един байтовете на идентификационната поредица, като в подпрограмата изходната честота се управлява от флага f2200. Подпрограмата генерира цял период на синусоида, така че на всеки период можеш спокойно да сменяш честотата - за да не се получат хармоници. Честотата на ШИМ-а е 20кХц за 2200Хз и 11кХц за 1200Хц. За кодиране на "0", трябва да се извика два пъти подред подпрограмата. Ако такова голямо изменение на честотата не е желателно - може да се направят две отделни подпрограми за генериране на двете честоти, като във случая с 1200Хц, ще имаш 16точки за един период на синусоидата, вместо 9.
Успех!
_________________ Простотията е Божи дар, но човек не бива да парадира с подаръците си!
|
| Вто Дек 12, 2006 3:13 pm |
|
 |
|
kasparov
Ранг: Почетен член
Регистриран на: Сря Апр 05, 2006 9:52 pm Мнения: 877 Местоположение: Разград
|
evc,
да разбирам ли от твоя код, че номера е в избраните стойности на sin_table ( от 28 до 50%) за да се получи по гладка синосуида?
И не можах да схвана нуждата от asin_table.. (':oops:')
|
| Вто Дек 12, 2006 10:27 pm |
|
 |
|
evc
Ранг: Напреднал
Регистриран на: Пет Окт 21, 2005 8:45 am Мнения: 499
|
@kasparov,
всичко се принася в жертва на скоростта. Ролята на asin_table е да се спести изчисляването на стойността на времето, през което изхода ще е "0" чрез изваждане. Това би стеснило и без това тесния динамичен диапазон с още две-три мкс. При положение, че целия период е 50мкс, стойност 50 съответства на 100%. Може да се изцеди и още малко динамика, ако се направят отделни подпрограми за 1200 и 2200Хц.
_________________ Простотията е Божи дар, но човек не бива да парадира с подаръците си!
|
| Сря Дек 13, 2006 9:55 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|