| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Как да избегна забиване на микроконтролера http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5163 |
Страница 1 от 5 |
| Автор: | Zeus [ Пон Дек 03, 2007 9:05 pm ] |
| Заглавие: | Как да избегна забиване на микроконтролера |
Става въпрос за схема, която работи в среда със смущения. Изпълнена е с 16F887 и е с динамична индикация. Програмата е писана на С. Използва прекъсване само за индикацията. От периферията се използват само портовете. Както си работи и спира, като остава да свети само някой от седемсегментните индикатори. Предполагам, че програмния брояч отива в зона, където не е записана програма и увисва. След спиране и пускане на захранването, програмата си тръгва от начало. Въпросът ми е: Как да избегна това зависване. Мислех да запълня останалата неизползвана памет с преходи към някой адрес от програмата ми, но не знам дали ще се получи. Ще се радвам на всякакви идеи по въпроса. |
|
| Автор: | HCL [ Пон Дек 03, 2007 9:59 pm ] |
| Заглавие: | |
Watchdog? Това което предлагаш сьщо звучи логично. Остава проблема обаче какво става ако програмния брояч те прехвьрли на използван от програмата адрес. Не е ли по-добре да смениш µC-а. |
|
| Автор: | nik [ Пон Дек 03, 2007 10:02 pm ] |
| Заглавие: | |
пиковете са доста шумоустойчиви, но все пак и на мен се е случвало... какво значи зашумена среда? от какъв характер са смущенията? и дали изведено от тази среда работи нормално? дали не му влиза по захранване? |
|
| Автор: | Ки4о [ Пон Дек 03, 2007 10:06 pm ] |
| Заглавие: | |
Ползвай Watchdog-а.И отново си прегледай програмата.И си прегледай програмата по прекъсване отново. |
|
| Автор: | sthx [ Пон Дек 03, 2007 10:53 pm ] |
| Заглавие: | |
Проблемът е комплексен. Като изключим грешка в програмата, трябва филтрацията по захранването да е ОК, входовете и изходните към външния свят да са проектирани така, че да се намалят външните смущения, топологията на платката да е направена както трябва, като особено внимание се отдели на генератора. Това си отделна наука и за съжаление рядко се споменават тези проблеми в университетите. Темата е разисквана във форума, има доста ценни съвети и линкове. |
|
| Автор: | Nikola Kirov [ Пон Дек 03, 2007 11:06 pm ] |
| Заглавие: | |
Да,трябва да си оправиш хардуерния проблем първо. А wachdog-a е задъжителен за всяко устройство което ще се експлоатира извън твоята лаборатория Голяма грешка е с хардуерните проблеми да се бориш с софтуерни средства. |
|
| Автор: | Desert Leo [ Вто Дек 04, 2007 9:08 am ] | |||||||||
| Заглавие: | ||||||||||
Ако е така, вината си е изцяло твоя. Провери за разрешени прекъсвания, които не обслужваш. Не развързвай кучето от каишката без нужда от това. |
||||||||||
| Автор: | zaphod [ Вто Дек 04, 2007 9:22 am ] |
| Заглавие: | |
а ти пробва ли в незашумена среда дали пак не забива? просто за да изключиш вариант софтуерна грешка де. иначе както ти казаха - кучето, кучето. |
|
| Автор: | Цецо [ Вто Дек 04, 2007 9:33 am ] |
| Заглавие: | |
Един контролер трябва да работи абсолютно стабилно в средата за която е предназначен без намеса на всякакви софтуерни трикове. Едва след като се убедиш че той е 100% стабилен, включваш и софтуерните защити. Сиреч, кучетата и всичко друго подобно (да напълниш паметта с преходи например) са задължителни мерки за застраховка срещу, но не за лечение на проблеми с хардуера. В противен случай рано или късно ще се появи комбинация от "смущения" които ще преодолеят софтуерните ти фокуси. Ако проблема е хардуерен: 1. Изясни си природата на смущенията - електростатични,електромагнитни ,произхода им. 2. От къде "влизат" - през въздуха, антени, по захранване, през осцилатора. 3. Какво точно се случва като се смути процесора - променя се PC, ресет, просто зависва. Като си изясниш проблема, ще ти е много по лесно да го пребориш. Естествено винаги можеш да наръгаш кондензатори където ти падне, да почнеш да правиш екрани, да пуснеш кучето и да се правиш че проблема го няма. Но поне моят опит показва че не знаеш ли какво правиш, най-често нищо смислено не правиш. Иначе Никола е прав - всеки уважаващ себе си контролер включва като екстра куче и идеята на това куче е да те пази. Но това куче трябва да се включи едва когато си сигурен че всичко работи и без куче като хората. |
|
| Автор: | rumen65 [ Вто Дек 04, 2007 11:01 am ] |
| Заглавие: | |
Проблема винаги има няколко страни. Цецо правилно е описал хардуерните неща които трябва да се направят, но винаги ще има смущение което ще мине през всичките защити, особено при захранване в България. За това след като се решат хардуерните проблеми, е хубаво да се сложат и софтуерни защити. При смущения пиковете първо им скача програмния брояч, след това по вероятност е загуба на инициализация на портове, след това загуба на инициализация на периферия, и най стабилна е рам паметта. Като защита достатъчно е да се спазват нещата които са описани от майкрочип, кучето да се нулира само на едно място, и то в главната програма. А за да е сигурно че всичко по периферията, прекъсванията и подпрограмите работят, на различни места в прекъсванията и важни подпрограми се вдигат флагове, и кучето се нулира само ако са вдигнати всички флагове. След ресет от кучето, може да се провери по някоя клетка от паметта, точно от къде да продължи програмата, в тази клетка обикновено се записва последно какво се е случило докато устройството е работело. Това всичкото се прави, след като е направено максимално възможното по хардуера. |
|
| Автор: | Цецо [ Вто Дек 04, 2007 11:58 am ] | |||||||||
| Заглавие: | ||||||||||
|
||||||||||
| Автор: | rumen65 [ Вто Дек 04, 2007 1:46 pm ] | |||||||||
| Заглавие: | ||||||||||
Е имал съм на в предвид, репортажите от страната, какво доставят от енергото в къщи. Някой път 380 волта, а друг път паднал гръм и в квартал с въздушно захранване, от няколко стотин метра изгоряло какво ли не, дори плоча на котлон. |
||||||||||
| Автор: | sthx [ Вто Дек 04, 2007 2:39 pm ] |
| Заглавие: | |
Самата големина на напрежението не е смущение. Просто е в или извън зададените граници. А това, че в мрежата може да има импулси по 2кV например е друг въпрос и не зависи много от географкото положение - Балкански полуостров или Калифорния. При комутация на 100кW двигателел в промишлено предприятие се е случвало да изгарят захранващи блокове на апаратурата, та камо ли да се ресетне системата. В домашни условия също са възможни такива краткотрайни импулси - синфазни или противофазни. Но както вече писа Цецо, първо трябва да се види причината за прецакването. Ако се случва често (през няколко минути например) , едва ли единствената причина е захранването. |
|
| Автор: | Cekins [ Вто Дек 04, 2007 2:42 pm ] |
| Заглавие: | |
Пъвото ми устройство монтирано в зашумена среда беше просто писти по платката и нищо повече - скъсваше се да се рестартира и т.н. То куче ли не беше, то чудесии. После същата платка само и сложих GрoundPlane - всичко тръгна без никви проблеми. Та мисълта ми е, че най-често топологията на платката е проблема в такива ситуации. После идва ред на захранването. |
|
| Автор: | Zeus [ Вто Дек 04, 2007 3:43 pm ] |
| Заглавие: | |
Чак сега влязох във форума. Наистина се заформи много градивна и полезна за мен дискусия. Сега да дам малко повече информация. 1. Средата: Производствен цех с доста двигатели (има и един 75кВ 2. Хардуера: Платката е все още експериментална(правена на ръка без граунд план). В момента работя върху окончателния вариант на протел99 и ще се прави в платкаджийница. На захранването имам варистор. Портовете управляват контактори, но са оптично разделени с MOC3041 и BT136. 3. Софтуера: като написах по-горе, най сложното в програмата е прекъсването за динамичната индикация. Другото са цикли и времезакъснения. Ползвам вградения генератор на 16F887 на 8MHz. С кучето още не съм работил(сравнително отскоро се занимавам с микроконтролери). Ще прочета документацията специално за него. |
|
| Страница 1 от 5 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|