Отговори на тема  [ 71 мнения ]  Отиди на страница 1, 2, 3, 4, 5  Следваща
Как да избегна забиване на микроконтролера 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение Как да избегна забиване на микроконтролера
Става въпрос за схема, която работи в среда със смущения. Изпълнена е с 16F887 и е с динамична индикация. Програмата е писана на С. Използва прекъсване само за индикацията. От периферията се използват само портовете.
Както си работи и спира, като остава да свети само някой от седемсегментните индикатори. Предполагам, че програмния брояч отива в зона, където не е записана програма и увисва. След спиране и пускане на захранването, програмата си тръгва от начало.
Въпросът ми е: Как да избегна това зависване. Мислех да запълня останалата неизползвана памет с преходи към някой адрес от програмата ми, но не знам дали ще се получи. Ще се радвам на всякакви идеи по въпроса.


Пон Дек 03, 2007 9:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
Watchdog?
Това което предлагаш сьщо звучи логично. Остава проблема обаче какво става ако програмния брояч те прехвьрли на използван от програмата адрес.
Не е ли по-добре да смениш µC-а.


Пон Дек 03, 2007 9:59 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 22, 2006 3:25 am
Мнения: 6418
Мнение 
пиковете са доста шумоустойчиви, но все пак и на мен се е случвало...
какво значи зашумена среда? от какъв характер са смущенията? и дали изведено от тази среда работи нормално? дали не му влиза по захранване?


Пон Дек 03, 2007 10:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Ползвай Watchdog-а.И отново си прегледай програмата.И си прегледай програмата по прекъсване отново.


Пон Дек 03, 2007 10:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Съб Юни 24, 2006 8:25 pm
Мнения: 2292
Мнение 
Проблемът е комплексен. Като изключим грешка в програмата, трябва филтрацията по захранването да е ОК, входовете и изходните към външния свят да са проектирани така, че да се намалят външните смущения, топологията на платката да е направена както трябва, като особено внимание се отдели на генератора. Това си отделна наука и за съжаление рядко се споменават тези проблеми в университетите. Темата е разисквана във форума, има доста ценни съвети и линкове.

_________________
Две плюс две е приблизително равно на четири. Факт!


Пон Дек 03, 2007 10:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Да,трябва да си оправиш хардуерния проблем първо. А wachdog-a е задъжителен за всяко устройство което ще се експлоатира извън твоята лаборатория :).
Голяма грешка е с хардуерните проблеми да се бориш с софтуерни средства.


Пон Дек 03, 2007 11:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение 
Цитат:
Предполагам, че програмния брояч отива в зона, където не е записана програма и увисва.


Ако е така, вината си е изцяло твоя. Провери за разрешени прекъсвания, които не обслужваш.
Не развързвай кучето от каишката без нужда от това.


Вто Дек 04, 2007 9:08 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 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
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 06, 2005 2:06 pm
Мнения: 194
Местоположение: Sofia
Мнение 
Проблема винаги има няколко страни. Цецо правилно е описал хардуерните неща които трябва да се направят, но винаги ще има смущение което ще мине през всичките защити, особено при захранване в България. За това след като се решат хардуерните проблеми, е хубаво да се сложат и софтуерни защити. При смущения пиковете първо им скача програмния брояч, след това по вероятност е загуба на инициализация на портове, след това загуба на инициализация на периферия, и най стабилна е рам паметта. Като защита достатъчно е да се спазват нещата които са описани от майкрочип, кучето да се нулира само на едно място, и то в главната програма. А за да е сигурно че всичко по периферията, прекъсванията и подпрограмите работят, на различни места в прекъсванията и важни подпрограми се вдигат флагове, и кучето се нулира само ако са вдигнати всички флагове. След ресет от кучето, може да се провери по някоя клетка от паметта, точно от къде да продължи програмата, в тази клетка обикновено се записва последно какво се е случило докато устройството е работело.
Това всичкото се прави, след като е направено максимално възможното по хардуера.


Вто Дек 04, 2007 11:01 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
rumen65 написа:
...особено при захранване в България...


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

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Дек 04, 2007 11:58 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 06, 2005 2:06 pm
Мнения: 194
Местоположение: Sofia
Мнение 
Цитат:

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



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

Е имал съм на в предвид, репортажите от страната, какво доставят от енергото в къщи. Някой път 380 волта, а друг път паднал гръм и в квартал с въздушно захранване, от няколко стотин метра изгоряло какво ли не, дори плоча на котлон.


Вто Дек 04, 2007 1:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Съб Юни 24, 2006 8:25 pm
Мнения: 2292
Мнение 
Самата големина на напрежението не е смущение. Просто е в или извън зададените граници. А това, че в мрежата може да има импулси по 2кV например е друг въпрос и не зависи много от географкото положение - Балкански полуостров или Калифорния. При комутация на 100кW двигателел в промишлено предприятие се е случвало да изгарят захранващи блокове на апаратурата, та камо ли да се ресетне системата. В домашни условия също са възможни такива краткотрайни импулси - синфазни или противофазни. Но както вече писа Цецо, първо трябва да се види причината за прецакването. Ако се случва често (през няколко минути например) , едва ли единствената причина е захранването.

_________________
Две плюс две е приблизително равно на четири. Факт!


Вто Дек 04, 2007 2:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Пъвото ми устройство монтирано в зашумена среда беше просто писти по платката и нищо повече - скъсваше се да се рестартира и т.н. То куче ли не беше, то чудесии. После същата платка само и сложих GрoundPlane - всичко тръгна без никви проблеми. Та мисълта ми е, че най-често топологията на платката е проблема в такива ситуации. После идва ред на захранването.


Вто Дек 04, 2007 2:42 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение 
Чак сега влязох във форума. Наистина се заформи много градивна и полезна за мен дискусия. Сега да дам малко повече информация.
1. Средата: Производствен цех с доста двигатели (има и един 75кВ :), които често включват и изключват )
2. Хардуера: Платката е все още експериментална(правена на ръка без граунд план). В момента работя върху окончателния вариант на протел99 и ще се прави в платкаджийница. На захранването имам варистор. Портовете управляват контактори, но са оптично разделени с MOC3041 и BT136.
3. Софтуера: като написах по-горе, най сложното в програмата е прекъсването за динамичната индикация. Другото са цикли и времезакъснения. Ползвам вградения генератор на 16F887 на 8MHz.

С кучето още не съм работил(сравнително отскоро се занимавам с микроконтролери). Ще прочета документацията специално за него.


Вто Дек 04, 2007 3:43 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 71 мнения ]  Отиди на страница 1, 2, 3, 4, 5  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни