Микроконтролери и електроника
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 написа:
...особено при захранване в България...


:) Хаха, ти уби всичко детско в мен. :)

Автор:  rumen65 [ Вто Дек 04, 2007 1:46 pm ]
Заглавие: 

Цитат:

rumen65 написа:
...особено при захранване в България...



Smile Хаха, ти уби всичко детско в мен. Smile

Е имал съм на в предвид, репортажите от страната, какво доставят от енергото в къщи. Някой път 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/