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

Reset и RS232 проблеми.
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=7710
Страница 1 от 2

Автор:  npelov [ Съб Апр 03, 2010 4:46 pm ]
Заглавие:  Reset и RS232 проблеми.

Здравейте!
Имам следния проблем - При включване на веригата, ако не ползвам превключвател MCU-то се държи странно и понякога не тръгва въобще. В конкретния случай MCLR пина ми е вход (MCLR е вързан вътрешно за Vdd). Когато вкарвам жака (в случая USB B) се получават странни неща.

.... Май реших проблема докато пиша ама да си питам все пак. Не съм бил активирал Born-out reset. След като го включих не ми е правило проблема. Ако няма Born-out reset може би трябва външна верига за включване със закъснение (Power-on delay не свърши работа) или пък верига за ресет при падане на напрежението.


И втория проблем е RS232. След като включа схемата към захранване понякога PC-то приема 0xFF преди първите байтове изпратени от устройството. Най-вероятно има преход от 1 към 0 на TX пина и най-вероятно това се случва когато при инициализация направя RX и TX на входове (както е указано в документацията). Може би решението на проблема е един pull-up (или да ползвам вътрешния) на TX изхода - примерно 10к. Обаче не знам как действа MAX232 -дали може да държи дълго време 1 на изхода. Ако не - може би е по-добре да бъде pull-down (при инициализация по подразбиране порта е вход).

Автор:  relsys [ Нед Апр 04, 2010 1:32 pm ]
Заглавие: 

По - скоро виж: FAIL - SAFE CLOCK MONITOR-a.

Автор:  npelov [ Пон Апр 05, 2010 1:28 pm ]
Заглавие: 

А ако няма такъв - какво се използва за устройства кото се захранват през жак - като усб например.

П.П. USB ползвам само за захранване, а данните са през RS232 за по-просто и по-евтино.

Автор:  npelov [ Пон Апр 05, 2010 6:38 pm ]
Заглавие: 

Проблема с RS232 започва да става досаден. Понякога получавам 1 байт 0xFF (не винаги 0xFF), а понякога 2-3. Pull up 20k не помага (видях че вътрешно в MAX232 има 400к pull-up). По подразбиране портовете са вход. Първите ми инструкции са:
Код:
   movlw   0x06
   movwf   PORTB

Това помогна при WDT ресет да не предават нежелани байтове, но при power-on все още ги има.

Ще взема да сложа един MOSFET+RC за включва TX на mcu-to към MAX232 със закъснение

Автор:  bateAz [ Пон Апр 05, 2010 10:03 pm ]
Заглавие: 

А не е ли възможно проблемът ти да не идва от контролера, а от MAX232 ? Това лесно се проверява, като дадеш входа за предаване на MAX232 твърдо към +VCC. За да нямаш колизии с контролера, можеш да го извадиш от цокъла ( ако е на цокъл ). Иначе е по-добре да резнеш пътечката.
Обяснението е следното:
RS232 предава "мълчание" като -12V, а стартовият импулс е +12, или колкото дойде. На практика всичко над +3 се приема за стартов имулс или за лог. 0
MAX232 не се захранва с отрицателно напрежение, той си го генерира вътрешно. Затова му трябва малко време, за да може да подаде -9 V. Докато тече това време, изходът му от 0 се качва до около +3 .. +4 волта и после слиза на -9 волта.
Провери го и после пише какво е станало и как си си решил проблема.

Автор:  npelov [ Вто Апр 06, 2010 12:45 am ]
Заглавие: 

Хммм. Смених интегралата с надеждата че няма да се наложи да сглобявам пак sound-blaster-scop-a ама проблема не е в дефект. Твърде вероятно е макса да вдига малко напрежението. Тогава още по-лесно - не ми трябва RC верига. ще използвам изход на пик-а за да "свържа" изхода на max със закъснение. Обаче преди това ще трябва да проверя дали наистина това е проблема. Импулса ще да е къс защото на 1200 bps го няма проблема.

Автор:  npelov [ Чет Апр 08, 2010 8:23 pm ]
Заглавие: 

Мда. Има доста импулс с времетраене около 0.5ms. Не знам колко точно със сигурност, но изглежда около 2-4 волта.


Редакция:
Прикачвам схемата която измислих. Не знам дали съм я измислил правилно ... ще съм благодарен да чуя мнения. Понеже нямам под ръка по-малък P канален MOSFET реших да сложа биполярен транзистор (отдясно). Ще работи ли така както съм го направил.

Колкото до управлението - мога да го вържа към пин на пик-а или пък да сложа RC за да включва MOSFET-а със закъснение.

Прикачени файлове:
RS232-TX-turn-off.gif
RS232-TX-turn-off.gif [ 5.53 KiB | Прегледано 3273 пъти ]

Автор:  velio [ Пет Апр 09, 2010 10:38 am ]
Заглавие: 

Друг вариант евентуално е да използваш MAX с ENABLE вход...
Но ти вероятно искаш да си подкараш твоята платка...

Автор:  npelov [ Пет Апр 09, 2010 2:17 pm ]
Заглавие: 

Ами за в момента - искам моята платка да подкарам. по-нататък ще знам.
Да разбирам ли че това дето съм измислил има шанс да тръгне?

Автор:  Cino [ Пет Апр 09, 2010 2:38 pm ]
Заглавие: 

хубаво, ако проблема е един байт 0xff,
защо просто софтуерно не го премахнеш от страната на PC.
ако съобщенията са стройни със стартов , стопов байт, чексуми ,
не е проблем да идват 0xff , колкото си искат

Автор:  npelov [ Пет Апр 09, 2010 10:20 pm ]
Заглавие: 

В случая не мога да го премахна софтуерно от страната на PC-то защото програмата е готова и не е моя. Също така не е винаги 0xFF и не е винаги един байт. 50 на 50 получавам 0xFE, което означава, че проверка за (не)четност ще върши работа само от време на време. Устройството, което ще замествам е доста скъпо, но ако моето не е надеждно няма да го вземат ако ще да им го подаря. Ако обърка първия пакет се праща смс на не-малка група хора, което не е желателно. В редки случаи излизат по 2-3 и веднъж даже около 20 байта.

Може би ще свържа този TX през един ценер и един диод към пика за да видя кога напрежението ще стане отрицателно и тогава да дам ход на програмата и съответно ще отпуша изхода.

Автор:  ToHu [ Съб Апр 10, 2010 12:57 am ]
Заглавие: 

Абе тук нещо тотално не е както трябва. Като цяло е възможно в момента на включване на кабела към серийния порт, едната страна да си помисли че има предаден байт, което е трудно да избягване, но пък при вече включен кабел, само от ресет на у-вото не ми се е случвало ако не е ставало нарочно. То зависи и каква е скоростта донякъде, но не помня да съм имал такъв проблем, с какви кондензатори си на макса?

Автор:  Tisho [ Съб Апр 10, 2010 2:49 pm ]
Заглавие: 

npelov написа:
В случая не мога да го премахна софтуерно от страната на PC-то защото програмата е готова и не е моя. Също така не е винаги 0xFF и не е винаги един байт. 50 на 50 получавам 0xFE, което означава, че проверка за (не)четност ще върши работа само от време на време. Устройството, което ще замествам е доста скъпо, но ако моето не е надеждно няма да го вземат ако ще да им го подаря. Ако обърка първия пакет се праща смс на не-малка група хора, което не е желателно. В редки случаи излизат по 2-3 и веднъж даже около 20 байта.

Може би ще свържа този TX през един ценер и един диод към пика за да видя кога напрежението ще стане отрицателно и тогава да дам ход на програмата и съответно ще отпуша изхода.


Ми то поради таз причина има така наречените протоколи за комуникация. :P С подходящо подреждане на байтовете в протокола и CRC накрая глупостите генерирани от включване и изключване на куплонзи, устройства и др. ги отсвирваш без проблем :-)

Това което правиш според мен е излишно усложняване. :wink:

Автор:  npelov [ Съб Апр 10, 2010 6:28 pm ]
Заглавие: 

ToHu написа:
Абе тук нещо тотално не е както трябва. Като цяло е възможно в момента на включване на кабела към серийния порт, едната страна да си помисли че има предаден байт, което е трудно да избягване, но пък при вече включен кабел, само от ресет на у-вото не ми се е случвало ако не е ставало нарочно. То зависи и каква е скоростта донякъде, но не помня да съм имал такъв проблем, с какви кондензатори си на макса?


В момента на включване на захранването, а не на серийния порт. Серийния вече е включен и програмата приема. Като включа захранването MAX-а изкарва за момент положително напрежение и след това се установява в около -8 V. Кондензаторите са по 1uF както пише в даташита на MAX232N

Цитат:
Ми то поради таз причина има така наречените протоколи за комуникация. С подходящо подреждане на байтовете в протокола и CRC накрая глупостите генерирани от включване и изключване на куплонзи, устройства и др. ги отсвирваш без проблем

Трудно ми е да повярвам, че това е причината. Според мен протоколи, CRC и т.н. са за изключване на случайни смущения, а не за нещо което всеки път е там.

Обаче сега като се замисляустройството ще бъде включено заедно с компютъра - освен в случаи на тестване. Първия "грешен байт" никога няма да бъде прочетен... И все пак ме дразни че става така

Автор:  ToHu [ Съб Апр 10, 2010 10:22 pm ]
Заглавие: 

А другия по важен въпрос, тоя първи грешен байт нещо бърка ли го компютъра.
Иначе това което написа тишо е така, протокол си трябва който решава всичко, имаш начало и край, ясни и определени, един таймоут и отсвирваш всико случайно и не случайно. Какво е това към което се връзваш ако не е тайна.

п.с. а ако толкова те дразни сложи едно реле дето да го щрака професора и готово.

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