|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 6:16 am
Как да избегна забиване на микроконтролера
| Автор |
Съобщение |
|
Zeus
Ранг: Почетен член
Регистриран на: Вто Окт 03, 2006 11:58 am Мнения: 924 Местоположение: Ботевград
|
 Как да избегна забиване на микроконтролера
Става въпрос за схема, която работи в среда със смущения. Изпълнена е с 16F887 и е с динамична индикация. Програмата е писана на С. Използва прекъсване само за индикацията. От периферията се използват само портовете.
Както си работи и спира, като остава да свети само някой от седемсегментните индикатори. Предполагам, че програмния брояч отива в зона, където не е записана програма и увисва. След спиране и пускане на захранването, програмата си тръгва от начало.
Въпросът ми е: Как да избегна това зависване. Мислех да запълня останалата неизползвана памет с преходи към някой адрес от програмата ми, но не знам дали ще се получи. Ще се радвам на всякакви идеи по въпроса.
|
| Пон Дек 03, 2007 9:05 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Watchdog?
Това което предлагаш сьщо звучи логично. Остава проблема обаче какво става ако програмния брояч те прехвьрли на използван от програмата адрес.
Не е ли по-добре да смениш µC-а.
|
| Пон Дек 03, 2007 9:59 pm |
|
 |
|
nik
Ранг: Форумен бог
Регистриран на: Сря Мар 22, 2006 3:25 am Мнения: 6418
|
пиковете са доста шумоустойчиви, но все пак и на мен се е случвало...
какво значи зашумена среда? от какъв характер са смущенията? и дали изведено от тази среда работи нормално? дали не му влиза по захранване?
|
| Пон Дек 03, 2007 10:02 pm |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Ползвай Watchdog-а.И отново си прегледай програмата.И си прегледай програмата по прекъсване отново.
|
| Пон Дек 03, 2007 10:06 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Проблемът е комплексен. Като изключим грешка в програмата, трябва филтрацията по захранването да е ОК, входовете и изходните към външния свят да са проектирани така, че да се намалят външните смущения, топологията на платката да е направена както трябва, като особено внимание се отдели на генератора. Това си отделна наука и за съжаление рядко се споменават тези проблеми в университетите. Темата е разисквана във форума, има доста ценни съвети и линкове.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Пон Дек 03, 2007 10:53 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Да,трябва да си оправиш хардуерния проблем първо. А wachdog-a е задъжителен за всяко устройство което ще се експлоатира извън твоята лаборатория  .
Голяма грешка е с хардуерните проблеми да се бориш с софтуерни средства.
|
| Пон Дек 03, 2007 11:06 pm |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
Ако е така, вината си е изцяло твоя. Провери за разрешени прекъсвания, които не обслужваш.
Не развързвай кучето от каишката без нужда от това.
|
| Вто Дек 04, 2007 9:08 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
а ти пробва ли в незашумена среда дали пак не забива? просто за да изключиш вариант софтуерна грешка де. иначе както ти казаха - кучето, кучето.
|
| Вто Дек 04, 2007 9:22 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Един контролер трябва да работи абсолютно стабилно в средата за която е предназначен без намеса на всякакви софтуерни трикове. Едва след като се убедиш че той е 100% стабилен, включваш и софтуерните защити.
Сиреч, кучетата и всичко друго подобно (да напълниш паметта с преходи например) са задължителни мерки за застраховка срещу, но не за лечение на проблеми с хардуера.
В противен случай рано или късно ще се появи комбинация от "смущения" които ще преодолеят софтуерните ти фокуси.
Ако проблема е хардуерен:
1. Изясни си природата на смущенията - електростатични,електромагнитни ,произхода им.
2. От къде "влизат" - през въздуха, антени, по захранване, през осцилатора.
3. Какво точно се случва като се смути процесора - променя се PC, ресет, просто зависва.
Като си изясниш проблема, ще ти е много по лесно да го пребориш. Естествено винаги можеш да наръгаш кондензатори където ти падне, да почнеш да правиш екрани, да пуснеш кучето и да се правиш че проблема го няма. Но поне моят опит показва че не знаеш ли какво правиш, най-често нищо смислено не правиш.
Иначе Никола е прав - всеки уважаващ себе си контролер включва като екстра куче и идеята на това куче е да те пази. Но това куче трябва да се включи едва когато си сигурен че всичко работи и без куче като хората.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Вто Дек 04, 2007 9:33 am |
|
 |
|
rumen65
Ранг: Новодошъл
Регистриран на: Чет Окт 06, 2005 2:06 pm Мнения: 194 Местоположение: Sofia
|
Проблема винаги има няколко страни. Цецо правилно е описал хардуерните неща които трябва да се направят, но винаги ще има смущение което ще мине през всичките защити, особено при захранване в България. За това след като се решат хардуерните проблеми, е хубаво да се сложат и софтуерни защити. При смущения пиковете първо им скача програмния брояч, след това по вероятност е загуба на инициализация на портове, след това загуба на инициализация на периферия, и най стабилна е рам паметта. Като защита достатъчно е да се спазват нещата които са описани от майкрочип, кучето да се нулира само на едно място, и то в главната програма. А за да е сигурно че всичко по периферията, прекъсванията и подпрограмите работят, на различни места в прекъсванията и важни подпрограми се вдигат флагове, и кучето се нулира само ако са вдигнати всички флагове. След ресет от кучето, може да се провери по някоя клетка от паметта, точно от къде да продължи програмата, в тази клетка обикновено се записва последно какво се е случило докато устройството е работело.
Това всичкото се прави, след като е направено максимално възможното по хардуера.
|
| Вто Дек 04, 2007 11:01 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
 Хаха, ти уби всичко детско в мен. 
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Вто Дек 04, 2007 11:58 am |
|
 |
|
rumen65
Ранг: Новодошъл
Регистриран на: Чет Окт 06, 2005 2:06 pm Мнения: 194 Местоположение: Sofia
|
Е имал съм на в предвид, репортажите от страната, какво доставят от енергото в къщи. Някой път 380 волта, а друг път паднал гръм и в квартал с въздушно захранване, от няколко стотин метра изгоряло какво ли не, дори плоча на котлон.
|
| Вто Дек 04, 2007 1:46 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Самата големина на напрежението не е смущение. Просто е в или извън зададените граници. А това, че в мрежата може да има импулси по 2кV например е друг въпрос и не зависи много от географкото положение - Балкански полуостров или Калифорния. При комутация на 100кW двигателел в промишлено предприятие се е случвало да изгарят захранващи блокове на апаратурата, та камо ли да се ресетне системата. В домашни условия също са възможни такива краткотрайни импулси - синфазни или противофазни. Но както вече писа Цецо, първо трябва да се види причината за прецакването. Ако се случва често (през няколко минути например) , едва ли единствената причина е захранването.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Вто Дек 04, 2007 2:39 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Пъвото ми устройство монтирано в зашумена среда беше просто писти по платката и нищо повече - скъсваше се да се рестартира и т.н. То куче ли не беше, то чудесии. После същата платка само и сложих GрoundPlane - всичко тръгна без никви проблеми. Та мисълта ми е, че най-често топологията на платката е проблема в такива ситуации. После идва ред на захранването.
|
| Вто Дек 04, 2007 2:42 pm |
|
 |
|
Zeus
Ранг: Почетен член
Регистриран на: Вто Окт 03, 2006 11:58 am Мнения: 924 Местоположение: Ботевград
|
Чак сега влязох във форума. Наистина се заформи много градивна и полезна за мен дискусия. Сега да дам малко повече информация.
1. Средата: Производствен цех с доста двигатели (има и един 75кВ  , които често включват и изключват )
2. Хардуера: Платката е все още експериментална(правена на ръка без граунд план). В момента работя върху окончателния вариант на протел99 и ще се прави в платкаджийница. На захранването имам варистор. Портовете управляват контактори, но са оптично разделени с MOC3041 и BT136.
3. Софтуера: като написах по-горе, най сложното в програмата е прекъсването за динамичната индикация. Другото са цикли и времезакъснения. Ползвам вградения генератор на 16F887 на 8MHz.
С кучето още не съм работил(сравнително отскоро се занимавам с микроконтролери). Ще прочета документацията специално за него.
|
| Вто Дек 04, 2007 3:43 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|