|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:17 am
Прекъсване се задейства само
| Автор |
Съобщение |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Прекъсване се задейства само
Здравейте! Имам следната схема. 4те ключа са свързани през 4081 към INT0 входа на ПИК18F2550. Проблемът е, че както си работи изведнъж прекъсването се задейства без ключовете да се затворени. Поставих малък кондензатор на В0(100н), но не помогна. Проблемът се появява дори, когато шунтирам ключовете подам директно 0. Поставих пул резистори на входовете на 4081, които нямат такива - без резултат. Проблемът не е в софтуера! Някакви идеи?
_________________www.elkran.com
|
| Чет Юни 06, 2013 4:24 pm |
|
 |
|
nobodyshadow
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 5:18 am Мнения: 691
|
 Re: Прекъсване се задейства само
Сложи на входа на контролера резистор няколко килоома към маса.
_________________ Не мога да знам всичко,а и не искам.Тогава би било прекалено лесно и скучно!
|
| Чет Юни 06, 2013 5:37 pm |
|
 |
|
Ники
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 11:19 pm Мнения: 609
|
 Re: Прекъсване се задейства само
Без да си дал кода, може само да се гадае.
Предполагам че компилатора е CCS и съм забелязал че нещета които твори за прекъсванията не са изпипани съвсем.
Според мен или имаш незабранено друго прекъсване което минава през същия код като на INT0, или компилатора някъде оплита прекъсването.
Ако си сигурен че нямаш други прекъсвания които да ти се мешат с INT0, ползвай GLOBAL директивата и си напиши сам прекъсването.
|
| Чет Юни 06, 2013 5:42 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Прекъсване се задейства само
Първо аз бих го свързал обратно, ключът да е към маса а да имам пълъп, може и така, но бих сложил еидн резистор серийно на ключетата, това няма да ти реши проблема със сигурност. След това не знам от къде го хвана това 4081 но да знаеш че по правило TTL елементи се рисуват самостоятелно, или най-малкото трябва да ги нарисуваш вътре в оутлайнана чипа. Не че не е ясно какво правиш, но за да проверя дали вярно си го вързал трябваше да си напрягам въображението. Относно проблема, като казваш че не е софтуерен как си сигурен в това, дай да видим сорса. Щом със свалени в 0 входаове на ЛЕ все още получаваш прекъсване проблема няма как да е нито във ЛЕ, нито във входа на процесора тъй като тоя ЛЕ също смъква в 0. Аз виждам два варианта: 1. Или не позлваш 4081 а някой с ОК, не съм сигурен имаше ли такъв обаче 2. Не си чистиш флага на прекъсването, нямам спомен но май и в 18-та серия все така трябва да се чисти ръчно.
|
| Чет Юни 06, 2013 5:48 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Прекъсване се задейства само
Аз по-скоро го отдавам на някакво смущение. Схемичката е поставена в табло с контактори и през които тече бая ток. Възможно ли е изобщо или се заблуждавам?? Сигурен съм, че се вдига прекъсването понеже го пуснах с дебъгера.
_________________www.elkran.com
|
| Чет Юни 06, 2013 7:00 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Прекъсване се задейства само
как разбираш че се вдига, виждаш ли изобщо флага да се чисти, защото аконе се чисти след излизане отново ще влезеш и по нищо няма да разбереш че е същото прекъсване. От смущение е възможно, но ако си свързал електрически входовете на ЛЕ към маса директно, от там няма как да мине нищо, изхода на логическия държа около 15 мА, не помян точно за тая серия, но там някъде, т.е. бая смущение трябва да е че да вдигне логическо ниво на тия 15 мА. Друго, да не ти е конфигурирано по ниско ниво да прави прекъсване, то по спомен е по фронт, ама знам ли, на тоя да не е и по ниво, от там като ти е 0 да влиза винаги в прекъсване. Иначе смущение може ноняма да е постоянно.
|
| Чет Юни 06, 2013 7:43 pm |
|
 |
|
Zeus
Ранг: Почетен член
Регистриран на: Вто Окт 03, 2006 11:58 am Мнения: 924 Местоположение: Ботевград
|
 Re: Прекъсване се задейства само
Аз като правя схема, която работи в шумна среда като при теб, когато ми постъпи сигнал на порта, слагам едно закъснение (примерно 10ms) и проверявам след него дали все още сигнала е наличен. Едва след това задействам резултата. Така софтуерно се отделят доста нежелани смущения.
|
| Чет Юни 06, 2013 7:46 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Прекъсване се задейства само
Ами това май няма общо с неговия случай, това е някакъв вид дебонсинг, а при него явно не е толкова просто, ако имаш някакво смущение което постоянно генерира прекъсвания най-вероятно тоя дебонсинг няма да свурши работа, т.е. само със закъснение. Това което правя аз е друго, когато стартирам времето за дебонсинга сменям фронта на прекъсването, така ако падне в 0 направо го отебавам. Това разбира се ако се очаква сигнала да стои в 1-ца. Много варианти има но ако са толкова много той няма да излиза реално от прекъсване. Като цяло хардуерни проблеми със софтуер се решават много по трудно, особенно такива, представи си че всеки 100 uS влиза в прекъсване ... ми то излиза че само шума ти яде едни 20 % от ресурса, може и повече, и пак няма гаранция че няма да мине случайно през софтуерния филтър.
|
| Чет Юни 06, 2013 7:52 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Прекъсване се задейства само
Значи в програмата имам само едно прекъсване: Стартирам това чудо и прекъсването не би трябвало да се задейства докато не се подаде 0 на В0. НО след 2-3-4-5 мин си се включва само. Нарочно увеличих delay, за да съм сигурен, че в работни условия се включва прекъсването, понеже съм чувал, че дебъгера може не е пълен и да ме заблуждава нещо.
_________________www.elkran.com
Последна промяна stoyanoff на Чет Юни 06, 2013 8:12 pm, променена общо 1 път
|
| Чет Юни 06, 2013 7:55 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Прекъсване се задейства само
Ами да .. enable_interrupts(INT_EXT_H2L); имаш прекъсване по падащ фронт.
|
| Чет Юни 06, 2013 7:59 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Прекъсване се задейства само
Извинявам се! Пробвах различни варианти и съм забравил да го върна.. L2H си е!
_________________www.elkran.com
|
| Чет Юни 06, 2013 8:14 pm |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
 Re: Прекъсване се задейства само
stoyanoff, очевидно много ти е рано да бърникаш в табло с контактори. Още си в етапа мигане на светодиоди. Да продължавам ли?
|
| Чет Юни 06, 2013 8:46 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Прекъсване се задейства само
Хмм, освен всичко тоя процесор е с два интерръпта, по схема на другия пин нямаш нищо, освен това не знам как си го конфигурирал, я постни цялата конфигурация на процесора.
|
| Чет Юни 06, 2013 9:25 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Прекъсване се задейства само
..... глупости .. добре ти е конфигурацията, там ти е int0 нещо недовидях, добре е да постнеш цялата конфигурация.
п.с. още нещо, кондензатора в захранването на тоя процесор къде е сложен физичекси ? И по добре махни онзи кондензатор от входа на INT входа, не ти трябва, може само бяла да ти направи така свързан. Ако има смущение което повдига ниското ниво на ЛЕ никакъв кондензатор няма да те спаси там.
п.с.2 ааа и за 18-та серия що си мисля че фронта се задава с ext_int_edge( 2, L_TO_H) при теб без 2-ка, по default е 0 пробвай.
|
| Чет Юни 06, 2013 9:30 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Прекъсване се задейства само
Разкарах кондензатора вече! Аз се пробвах да направя нещо като филтър с резистор и кондензатор на входа. Пробвах 10тина различни стойности - нищо! Относно задаването на edge в хедъра на 18Ф2550 е даден и този вариант. Ще опитам и обикновения (ext_int_edge()), но не се надявам да има ефект, понеже проблемът се случва на случаен принцип(или по-скоро като включи някой голям контактор, но те се управляват извън таблото и нямат нищо общо с моята схемичка). Ще пусна цялата схема цялата схема само да се добера до компа, където е. Общо взето схемата командва един малък честотен регулатор(2,2кВ електроинвент) с 4 релета. 4те входа, които съм дал са защити. Имам и втора верига, която спира инверторчето - за по-голяма сигурност, но тя не сработва - най-вероятно, защото е с релета. Само тъпия контролер си спира самосиндикално.
_________________www.elkran.com
|
| Пет Юни 07, 2013 2:02 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|