| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Прекъсване се задейства само http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=11438 |
Страница 1 от 4 |
| Автор: | stoyanoff [ Чет Юни 06, 2013 4:24 pm ] | ||
| Заглавие: | Прекъсване се задейства само | ||
Здравейте! Имам следната схема. 4те ключа са свързани през 4081 към INT0 входа на ПИК18F2550. Проблемът е, че както си работи изведнъж прекъсването се задейства без ключовете да се затворени. Поставих малък кондензатор на В0(100н), но не помогна. Проблемът се появява дори, когато шунтирам ключовете подам директно 0. Поставих пул резистори на входовете на 4081, които нямат такива - без резултат. Проблемът не е в софтуера! Някакви идеи?
|
|||
| Автор: | nobodyshadow [ Чет Юни 06, 2013 5:37 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Сложи на входа на контролера резистор няколко килоома към маса. |
|
| Автор: | Ники [ Чет Юни 06, 2013 5:42 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Без да си дал кода, може само да се гадае. Предполагам че компилатора е CCS и съм забелязал че нещета които твори за прекъсванията не са изпипани съвсем. Според мен или имаш незабранено друго прекъсване което минава през същия код като на INT0, или компилатора някъде оплита прекъсването. Ако си сигурен че нямаш други прекъсвания които да ти се мешат с INT0, ползвай GLOBAL директивата и си напиши сам прекъсването. |
|
| Автор: | ToHu [ Чет Юни 06, 2013 5:48 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Първо аз бих го свързал обратно, ключът да е към маса а да имам пълъп, може и така, но бих сложил еидн резистор серийно на ключетата, това няма да ти реши проблема със сигурност. След това не знам от къде го хвана това 4081 но да знаеш че по правило TTL елементи се рисуват самостоятелно, или най-малкото трябва да ги нарисуваш вътре в оутлайнана чипа. Не че не е ясно какво правиш, но за да проверя дали вярно си го вързал трябваше да си напрягам въображението. Относно проблема, като казваш че не е софтуерен как си сигурен в това, дай да видим сорса. Щом със свалени в 0 входаове на ЛЕ все още получаваш прекъсване проблема няма как да е нито във ЛЕ, нито във входа на процесора тъй като тоя ЛЕ също смъква в 0. Аз виждам два варианта: 1. Или не позлваш 4081 а някой с ОК, не съм сигурен имаше ли такъв обаче 2. Не си чистиш флага на прекъсването, нямам спомен но май и в 18-та серия все така трябва да се чисти ръчно. |
|
| Автор: | stoyanoff [ Чет Юни 06, 2013 7:00 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Аз по-скоро го отдавам на някакво смущение. Схемичката е поставена в табло с контактори и през които тече бая ток. Възможно ли е изобщо или се заблуждавам?? Сигурен съм, че се вдига прекъсването понеже го пуснах с дебъгера. |
|
| Автор: | ToHu [ Чет Юни 06, 2013 7:43 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
как разбираш че се вдига, виждаш ли изобщо флага да се чисти, защото аконе се чисти след излизане отново ще влезеш и по нищо няма да разбереш че е същото прекъсване. От смущение е възможно, но ако си свързал електрически входовете на ЛЕ към маса директно, от там няма как да мине нищо, изхода на логическия държа около 15 мА, не помян точно за тая серия, но там някъде, т.е. бая смущение трябва да е че да вдигне логическо ниво на тия 15 мА. Друго, да не ти е конфигурирано по ниско ниво да прави прекъсване, то по спомен е по фронт, ама знам ли, на тоя да не е и по ниво, от там като ти е 0 да влиза винаги в прекъсване. Иначе смущение може ноняма да е постоянно. |
|
| Автор: | Zeus [ Чет Юни 06, 2013 7:46 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Аз като правя схема, която работи в шумна среда като при теб, когато ми постъпи сигнал на порта, слагам едно закъснение (примерно 10ms) и проверявам след него дали все още сигнала е наличен. Едва след това задействам резултата. Така софтуерно се отделят доста нежелани смущения. |
|
| Автор: | ToHu [ Чет Юни 06, 2013 7:52 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Ами това май няма общо с неговия случай, това е някакъв вид дебонсинг, а при него явно не е толкова просто, ако имаш някакво смущение което постоянно генерира прекъсвания най-вероятно тоя дебонсинг няма да свурши работа, т.е. само със закъснение. Това което правя аз е друго, когато стартирам времето за дебонсинга сменям фронта на прекъсването, така ако падне в 0 направо го отебавам. Това разбира се ако се очаква сигнала да стои в 1-ца. Много варианти има но ако са толкова много той няма да излиза реално от прекъсване. Като цяло хардуерни проблеми със софтуер се решават много по трудно, особенно такива, представи си че всеки 100 uS влиза в прекъсване ... ми то излиза че само шума ти яде едни 20 % от ресурса, може и повече, и пак няма гаранция че няма да мине случайно през софтуерния филтър. |
|
| Автор: | stoyanoff [ Чет Юни 06, 2013 7:55 pm ] | |||||||||
| Заглавие: | Re: Прекъсване се задейства само | |||||||||
Значи в програмата имам само едно прекъсване:
Стартирам това чудо и прекъсването не би трябвало да се задейства докато не се подаде 0 на В0. НО след 2-3-4-5 мин си се включва само. Нарочно увеличих delay, за да съм сигурен, че в работни условия се включва прекъсването, понеже съм чувал, че дебъгера може не е пълен и да ме заблуждава нещо. |
||||||||||
| Автор: | ToHu [ Чет Юни 06, 2013 7:59 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Ами да .. enable_interrupts(INT_EXT_H2L); имаш прекъсване по падащ фронт. |
|
| Автор: | stoyanoff [ Чет Юни 06, 2013 8:14 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Извинявам се! Пробвах различни варианти и съм забравил да го върна.. L2H си е! |
|
| Автор: | Desert Leo [ Чет Юни 06, 2013 8:46 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
stoyanoff, очевидно много ти е рано да бърникаш в табло с контактори. Още си в етапа мигане на светодиоди. Да продължавам ли? |
|
| Автор: | ToHu [ Чет Юни 06, 2013 9:25 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Хмм, освен всичко тоя процесор е с два интерръпта, по схема на другия пин нямаш нищо, освен това не знам как си го конфигурирал, я постни цялата конфигурация на процесора. |
|
| Автор: | ToHu [ Чет Юни 06, 2013 9:30 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
..... глупости .. добре ти е конфигурацията, там ти е int0 нещо недовидях, добре е да постнеш цялата конфигурация. п.с. още нещо, кондензатора в захранването на тоя процесор къде е сложен физичекси ? И по добре махни онзи кондензатор от входа на INT входа, не ти трябва, може само бяла да ти направи така свързан. Ако има смущение което повдига ниското ниво на ЛЕ никакъв кондензатор няма да те спаси там. п.с.2 ааа и за 18-та серия що си мисля че фронта се задава с ext_int_edge( 2, L_TO_H) при теб без 2-ка, по default е 0 пробвай. |
|
| Автор: | stoyanoff [ Пет Юни 07, 2013 2:02 pm ] |
| Заглавие: | Re: Прекъсване се задейства само |
Разкарах кондензатора вече! Аз се пробвах да направя нещо като филтър с резистор и кондензатор на входа. Пробвах 10тина различни стойности - нищо! Относно задаването на edge в хедъра на 18Ф2550 е даден и този вариант. Ще опитам и обикновения (ext_int_edge()), но не се надявам да има ефект, понеже проблемът се случва на случаен принцип(или по-скоро като включи някой голям контактор, но те се управляват извън таблото и нямат нищо общо с моята схемичка). Ще пусна цялата схема цялата схема само да се добера до компа, където е. Общо взето схемата командва един малък честотен регулатор(2,2кВ електроинвент) с 4 релета. 4те входа, които съм дал са защити. Имам и втора верига, която спира инверторчето - за по-голяма сигурност, но тя не сработва - най-вероятно, защото е с релета. Само тъпия контролер си спира самосиндикално. |
|
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|