| Автор |
Съобщение |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 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 (при инициализация по подразбиране порта е вход).
Последна промяна npelov на Съб Юли 24, 2010 8:58 pm, променена общо 1 път
|
| Съб Апр 03, 2010 4:46 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
По - скоро виж: FAIL - SAFE CLOCK MONITOR-a.
|
| Нед Апр 04, 2010 1:32 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
А ако няма такъв - какво се използва за устройства кото се захранват през жак - като усб например.
П.П. USB ползвам само за захранване, а данните са през RS232 за по-просто и по-евтино.
|
| Пон Апр 05, 2010 1:28 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Проблема с RS232 започва да става досаден. Понякога получавам 1 байт 0xFF (не винаги 0xFF), а понякога 2-3. Pull up 20k не помага (видях че вътрешно в MAX232 има 400к pull-up). По подразбиране портовете са вход. Първите ми инструкции са:
Това помогна при WDT ресет да не предават нежелани байтове, но при power-on все още ги има.
Ще взема да сложа един MOSFET+RC за включва TX на mcu-to към MAX232 със закъснение
|
| Пон Апр 05, 2010 6:38 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
А не е ли възможно проблемът ти да не идва от контролера, а от MAX232 ? Това лесно се проверява, като дадеш входа за предаване на MAX232 твърдо към +VCC. За да нямаш колизии с контролера, можеш да го извадиш от цокъла ( ако е на цокъл ). Иначе е по-добре да резнеш пътечката.
Обяснението е следното:
RS232 предава "мълчание" като -12V, а стартовият импулс е +12, или колкото дойде. На практика всичко над +3 се приема за стартов имулс или за лог. 0
MAX232 не се захранва с отрицателно напрежение, той си го генерира вътрешно. Затова му трябва малко време, за да може да подаде -9 V. Докато тече това време, изходът му от 0 се качва до около +3 .. +4 волта и после слиза на -9 волта.
Провери го и после пише какво е станало и как си си решил проблема.
|
| Пон Апр 05, 2010 10:03 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Хммм. Смених интегралата с надеждата че няма да се наложи да сглобявам пак sound-blaster-scop-a ама проблема не е в дефект. Твърде вероятно е макса да вдига малко напрежението. Тогава още по-лесно - не ми трябва RC верига. ще използвам изход на пик-а за да "свържа" изхода на max със закъснение. Обаче преди това ще трябва да проверя дали наистина това е проблема. Импулса ще да е къс защото на 1200 bps го няма проблема.
|
| Вто Апр 06, 2010 12:45 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Мда. Има доста импулс с времетраене около 0.5ms. Не знам колко точно със сигурност, но изглежда около 2-4 волта.
Редакция:
Прикачвам схемата която измислих. Не знам дали съм я измислил правилно ... ще съм благодарен да чуя мнения. Понеже нямам под ръка по-малък P канален MOSFET реших да сложа биполярен транзистор (отдясно). Ще работи ли така както съм го направил.
Колкото до управлението - мога да го вържа към пин на пик-а или пък да сложа RC за да включва MOSFET-а със закъснение.
|
| Чет Апр 08, 2010 8:23 pm |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Друг вариант евентуално е да използваш MAX с ENABLE вход...
Но ти вероятно искаш да си подкараш твоята платка...
|
| Пет Апр 09, 2010 10:38 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Ами за в момента - искам моята платка да подкарам. по-нататък ще знам.
Да разбирам ли че това дето съм измислил има шанс да тръгне?
|
| Пет Апр 09, 2010 2:17 pm |
|
 |
|
Cino
Ранг: Новодошъл
Регистриран на: Чет Окт 02, 2008 10:24 pm Мнения: 105
|
хубаво, ако проблема е един байт 0xff,
защо просто софтуерно не го премахнеш от страната на PC.
ако съобщенията са стройни със стартов , стопов байт, чексуми ,
не е проблем да идват 0xff , колкото си искат
|
| Пет Апр 09, 2010 2:38 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
В случая не мога да го премахна софтуерно от страната на PC-то защото програмата е готова и не е моя. Също така не е винаги 0xFF и не е винаги един байт. 50 на 50 получавам 0xFE, което означава, че проверка за (не)четност ще върши работа само от време на време. Устройството, което ще замествам е доста скъпо, но ако моето не е надеждно няма да го вземат ако ще да им го подаря. Ако обърка първия пакет се праща смс на не-малка група хора, което не е желателно. В редки случаи излизат по 2-3 и веднъж даже около 20 байта.
Може би ще свържа този TX през един ценер и един диод към пика за да видя кога напрежението ще стане отрицателно и тогава да дам ход на програмата и съответно ще отпуша изхода.
|
| Пет Апр 09, 2010 10:20 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Абе тук нещо тотално не е както трябва. Като цяло е възможно в момента на включване на кабела към серийния порт, едната страна да си помисли че има предаден байт, което е трудно да избягване, но пък при вече включен кабел, само от ресет на у-вото не ми се е случвало ако не е ставало нарочно. То зависи и каква е скоростта донякъде, но не помня да съм имал такъв проблем, с какви кондензатори си на макса?
|
| Съб Апр 10, 2010 12:57 am |
|
 |
|
Tisho
Ранг: Форумен бог
Регистриран на: Пон Ное 22, 2004 11:24 pm Мнения: 1923 Местоположение: Габрово
|
Ми то поради таз причина има така наречените протоколи за комуникация.  С подходящо подреждане на байтовете в протокола и CRC накрая глупостите генерирани от включване и изключване на куплонзи, устройства и др. ги отсвирваш без проблем
Това което правиш според мен е излишно усложняване. 
|
| Съб Апр 10, 2010 2:49 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
В момента на включване на захранването, а не на серийния порт. Серийния вече е включен и програмата приема. Като включа захранването MAX-а изкарва за момент положително напрежение и след това се установява в около -8 V. Кондензаторите са по 1uF както пише в даташита на MAX232N
Трудно ми е да повярвам, че това е причината. Според мен протоколи, CRC и т.н. са за изключване на случайни смущения, а не за нещо което всеки път е там.
Обаче сега като се замисляустройството ще бъде включено заедно с компютъра - освен в случаи на тестване. Първия "грешен байт" никога няма да бъде прочетен... И все пак ме дразни че става така
|
| Съб Апр 10, 2010 6:28 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
А другия по важен въпрос, тоя първи грешен байт нещо бърка ли го компютъра.
Иначе това което написа тишо е така, протокол си трябва който решава всичко, имаш начало и край, ясни и определени, един таймоут и отсвирваш всико случайно и не случайно. Какво е това към което се връзваш ако не е тайна.
п.с. а ако толкова те дразни сложи едно реле дето да го щрака професора и готово.
|
| Съб Апр 10, 2010 10:22 pm |
|
|