|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 5:32 am
Два серийни порта на един PIC???
| Автор |
Съобщение |
|
peterhr
Ранг: Минаващ
Регистриран на: Пон Сеп 27, 2004 8:48 pm Мнения: 59 Местоположение: София
|
Наистина 1018 е само на 9600 бита, докато 320с върви до 115000.
Сега да питам нещо друго. Значи направих малка програмка която комуникира през серийния порт.
Като свържа процесора през max232 към СОМ порта на компютъра всичко е наред. Комуникацията върви в двете посоки.
Като свържа Ериксона към СОМ порта на компютъра пак всичко работи. Кабела който ползвам е готов купешки, предполагам пак има max232 вътре. Напреженията откъм ГСМ-а са +5В, а откъм РСто са -12В.
Проблема идва когато вържа PIC-а към ГСМ-а.
Не иска да тръгне програмата на ПИКа. Явно не се инициализира правилно СОМ порта.
Как трябва да е вързан хардуерно ПИКа и ГСМа? Да минава два пъти през max232 няма смисъл???
Нали и двете са с нива от 0 до 5В? И предположих директно, през резистор. Нацелих посоките (Rx, Tx) та проблема не е в това.
В едната посока напреженията са около 3,3В а в другата около 4,2В.
Надявам се да не се смеете на последните два въпроса ако ви се струват много глупави, но не успях да убедя гугъла да ми даде информация по въпроса. 
|
| Вто Мар 13, 2007 1:52 am |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
в покока към телефона след мах-а се слага делител, за да свалиш нивото до около 3в, а от телефона към мах-а се слага транзистор. трябва съгласуване на нивата. дори когато подадох петте волта от мах-а при приемането, след време сименса си затъмни дисплея (целия стана черен), и докато установя от какво е, си помислих, че съм го пратил да си ходи. но веднага щом извадиш куплунга от телефона и дисплея се оправя. ше се справиш, споко 
|
| Вто Мар 13, 2007 8:38 am |
|
 |
|
satanasov
Ранг: Минаващ
Регистриран на: Нед Фев 25, 2007 3:10 pm Мнения: 47 Местоположение: София
|
Най-напред трябва да си изясниш какъв е интерфейса на телефона ти (дали е със нива по стандарта RS232 (-12V до +12V), дали са TTL (0V до 5V) или CMOS(0V до 3.3V) )! Ако на Tx на телефона имаш в пасивен режим (без комуникация) отрицателно напрежение (-5V до -12V) значи интерфейса на телефона е RS232, т.е. трябва да сложиш MAX232 на PICa! Ако имаш положително напрежение (+2.5V до +5V) значи нямаш нужда от MAX но трябва да съгласуваш нивата както didofen спомена, т.е. ако е +4.5V до 5V директно връзваш PIC, а ако е под +3.5V ще ти трябват резистор на Тx на PICа и два (за да избегнеш инвертирането) транзистора на Rx!
Според това което си написал излиза че интерфейса на GSMа е с нива 0V do 3.3V и трябва да го направиш с резистор на Tx на PICa и два транзистора (неинвертиращ транзистрен ключ) на Rx! Ако не го направиш, в едната посока PICa може изобщо да не разбира какво му говори GSMа, а в другата се претоварва входа на GSMa!
_________________ Практиката започва там, където теорията свършва!
|
| Вто Мар 13, 2007 9:03 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
При нива 3.3 пика няма проблем и ще приема логическа единица, от друга страна GSM не вярвам да се претовари, но не е проблем да му сложиш делителче, или просто да ползваш ОД изход с пъл ъп към 3.3, ако ги имаш де. Но ако ГСМ работи на 3.3 аз бих бучнал и пика на толквоа което ще реше всички проблеи със съгласуване на нивата.
|
| Вто Мар 13, 2007 9:29 am |
|
 |
|
satanasov
Ранг: Минаващ
Регистриран на: Нед Фев 25, 2007 3:10 pm Мнения: 47 Местоположение: София
|
Аз също без да се замисля бих захранил и PICa на 3.3V стига да го позволява, но останах с впечатлението че схемата с PICa е вече даденост, т.е. захранването 5V е даденост! Изходите ОД при пиковете са доста кът, а на RSa със сигурност изхода Tx не е ОД! Според мен най-добре да си сложи резистор на Тx щото иначе не е ясно колко време ще му работи серийния канал на GSMa преди да пострада!
За безпроблемното разпознаване на 3.3V като единица при захранване 5V, съм готов да поспоря! Входа Rx на уарта е със тригер на Шмит и гарантираното ниво за единица е от 0.8Vdd до Vdd, т.е. от 4V до 5V! Под това ниво може да работи, ама може и да не работи (божа работа)! Ако не иска да оставя на господ да реши дали джаджата ще работи или не, то просто трябва да спази правилата! Преди време и аз лично съм изпитал божията сила с този проблем - от серия 20 устройства 12 ту се скапваха ту се оправяха! Естествено се оказа че с температурата се мести и прага на Шмигерите! Като оправих нивата както са по спецификация и воала 20 от 20!
_________________ Практиката започва там, където теорията свършва!
|
| Вто Мар 13, 2007 10:37 am |
|
 |
|
peterhr
Ранг: Минаващ
Регистриран на: Пон Сеп 27, 2004 8:48 pm Мнения: 59 Местоположение: София
|
Мерси за съветите.
Захранването на ПИК-а мога да го сваля на 3,3, преди малко погледнах че 16F628A го поддържа и ще пробвам първо така.
След това ако не проработи ще пробвам и с резистор и 2 транзистора.
ГСМа е Ериксон A1018s, преди малко му премерих напрежениеята. Има 3,3В на Тх.
ПП: Един въпрос за софтуера - пиша printf ("atd02xxxx;\n\r"); за да прати командата към СОМ порта.
Така ли трябва да завърши с "\n\r". Пиша на CCS.
|
| Вто Мар 13, 2007 12:12 pm |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
първо, за какво са ти два транзистора ? второ, в по голямата част от телефоните са на 3.3в и това не се приема като 1 от усарта. принципно може да се сложи захранването на пика 3.3в, но гпс-а няма да тръгне на толкова, така че там пак ще ти трябва 5в, т.е. пак съгласуване. и вместо двете напрежения и друго съгласуване, слагаш си един делител, например 1к и 1.5к, и при приемането един транзистор, и нещата си заспиват.
|
| Вто Мар 13, 2007 1:36 pm |
|
 |
|
peterhr
Ранг: Минаващ
Регистриран на: Пон Сеп 27, 2004 8:48 pm Мнения: 59 Местоположение: София
|
GPSа ми е на 3-3,3V, та това не е проблем. Захранването на телефона е 5V, та така или иначе ще имам различни стабилизирани захранвания, няма да мога да мина само с едно.
Нали 1 транзистор инвертира и втория връща обратно.
|
| Вто Мар 13, 2007 1:40 pm |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
инвертира, ако ти го свържеш да инвертира. ако го свържеш както трябва, няма да инвертира. вземаш например един пнп, вс327 да речем, подпираш му емитера през 4.7ком към +5в, колектора е към маса, а на базата подаваш сигнала, и той през 4.7ком, и изхода ти е емитера към пика.
|
| Вто Мар 13, 2007 1:45 pm |
|
 |
|
satanasov
Ранг: Минаващ
Регистриран на: Нед Фев 25, 2007 3:10 pm Мнения: 47 Местоположение: София
|
@didofen съгласен съм че това също е вариант, но ми се струва че е температурно нестабилен, а и транзистора няма да се запушва като хората, което вероятно може да доведе до проблеми с фронтовете на сигнала и грешки в комуникацията! Аз всъщност предложих два транзистора защото се премахват всякакви компромиси с режима на транзистора и с нивата на сигнала, а цената е все същата!
_________________ Практиката започва там, където теорията свършва!
|
| Вто Мар 13, 2007 3:09 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 He
Мисля че много елементарно ще си решиш тези проблеми
На контролера му слагаш един резистор на TX 1к , и един диод на RX (1N4148) в посока към TX на телефона, ако ти е портС трябва да имаш изтеглящ резистор 15к-20к на този вход и така всичко е ОК , пробвал съм бачка перфектно, и така си спестяваш допълнителните джаджи 
|
| Вто Мар 13, 2007 4:43 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Съгласуването на нива по "правилник" наистина се прави с два транзистора по схема OC. Или с един и софтуерно интвертиране. Диод (ценер) и резистор
също става.
Но имайте предвид, че всичките тия решения включват серийно съпротивление във веригата, което с входния капацитет дава времеконстанта. Тая цялата работа омазва фронтовете, т.е. добре е сигнала да е бавен и на входовете да има тригери на шмит (във вашия случай нещата бе трябвало да са ок.)
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Вто Мар 13, 2007 4:45 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Абе какви са тия резистори, транзистори, говорим за включване на у-ва с ТТЛ изходи/входове, по точно не ТТЛ а CMOS, а от страна на PIC и CMOS не е , по спецификация ниво на логичексаединица 2 V, та къде ти е проблема с ниво 3.3. В не виждам, това си е 100% единица. Ако самия модул не му харесат 5 на входа, един резисторен делител и ги имаш колкото ти трябват. А най-ленсото е да захраниш пика с 3.3 V което не е никакъв проблем.
|
| Вто Мар 13, 2007 6:37 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Не е така Тони, на много от 5В устройства (аз имам неприятен опит по случая с LCD) си е записано че минималното ниво на логическа единица на входа трябва да е 0,7VDD. Което си е 3,5В и всяка логика захранена на по малко от 3,6В издиша като изходно ниво. Е в много от случаите ще работи, навъпреки спецификацията, ама не е това целта.
Въобще съгласуването на 3В с 5В хич не е еднозначно просто. При човека, ниската скорост предполага елементарни решения, така, че не би следвало да е проблем, даже и да ги върже директно (айде за застраховка, да тури 100 тина ома).
Ама аз например веднъж се мъчих да завържа SD карта (3В) на SPI на 5В процесор и да я пусна на 20MHz. Гърч, всички що годе прости решения омазват фронтовете отвсякъде. А ако трябва и двупосочна шина да направиш - баси оргазма.
Но стига сме им спамили темата - човека няма съществени проблеми, решения бол. Ако има яд ще пита.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Вто Мар 13, 2007 8:03 pm |
|
 |
|
satanasov
Ранг: Минаващ
Регистриран на: Нед Фев 25, 2007 3:10 pm Мнения: 47 Местоположение: София
|
@ToHu
Ситуацията е следната:
Когато входа е тип TTL това за двата волта минимум е истина, ама в случая когато входа е конфигуриран като вход на UARTa вече е със тригер на шмит и тогава спецификацията става от 0.8Vdd нагоре! Личен опит е доказал важността на това ниво!
Освен това Цецо е абсолютно прав... Няма смисъл да пълним повече темата с постове, не предлагаме нищо ново!
Успех peterhr!
_________________ Практиката започва там, където теорията свършва!
|
| Вто Мар 13, 2007 8:16 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|