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

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Прекъсване се задейства само
Здравейте! Имам следната схема. 4те ключа са свързани през 4081 към INT0 входа на ПИК18F2550. Проблемът е, че както си работи изведнъж прекъсването се задейства без ключовете да се затворени. Поставих малък кондензатор на В0(100н), но не помогна. Проблемът се появява дори, когато шунтирам ключовете подам директно 0. Поставих пул резистори на входовете на 4081, които нямат такива - без резултат. Проблемът не е в софтуера!
Някакви идеи?


Прикачени файлове:
shema.pdf [9.09 KiB]
1089 пъти

_________________
www.elkran.com
Чет Юни 06, 2013 4:24 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Окт 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Прекъсване се задейства само
Първо аз бих го свързал обратно, ключът да е към маса а да имам пълъп, може и така, но бих сложил еидн резистор серийно на ключетата, това няма да ти реши проблема със сигурност. След това не знам от къде го хвана това 4081 но да знаеш че по правило TTL елементи се рисуват самостоятелно, или най-малкото трябва да ги нарисуваш вътре в оутлайнана чипа. Не че не е ясно какво правиш, но за да проверя дали вярно си го вързал трябваше да си напрягам въображението.
Относно проблема, като казваш че не е софтуерен как си сигурен в това, дай да видим сорса. Щом със свалени в 0 входаове на ЛЕ все още получаваш прекъсване проблема няма как да е нито във ЛЕ, нито във входа на процесора тъй като тоя ЛЕ също смъква в 0. Аз виждам два варианта:
1. Или не позлваш 4081 а някой с ОК, не съм сигурен имаше ли такъв обаче
2. Не си чистиш флага на прекъсването, нямам спомен но май и в 18-та серия все така трябва да се чисти ръчно.


Чет Юни 06, 2013 5:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: Прекъсване се задейства само
Аз по-скоро го отдавам на някакво смущение. Схемичката е поставена в табло с контактори и през които тече бая ток. Възможно ли е изобщо или се заблуждавам?? Сигурен съм, че се вдига прекъсването понеже го пуснах с дебъгера.

_________________
www.elkran.com


Чет Юни 06, 2013 7:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Прекъсване се задейства само
как разбираш че се вдига, виждаш ли изобщо флага да се чисти, защото аконе се чисти след излизане отново ще влезеш и по нищо няма да разбереш че е същото прекъсване.
От смущение е възможно, но ако си свързал електрически входовете на ЛЕ към маса директно, от там няма как да мине нищо, изхода на логическия държа около 15 мА, не помян точно за тая серия, но там някъде, т.е. бая смущение трябва да е че да вдигне логическо ниво на тия 15 мА.
Друго, да не ти е конфигурирано по ниско ниво да прави прекъсване, то по спомен е по фронт, ама знам ли, на тоя да не е и по ниво, от там като ти е 0 да влиза винаги в прекъсване. Иначе смущение може ноняма да е постоянно.


Чет Юни 06, 2013 7:43 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение Re: Прекъсване се задейства само
Аз като правя схема, която работи в шумна среда като при теб, когато ми постъпи сигнал на порта, слагам едно закъснение (примерно 10ms) и проверявам след него дали все още сигнала е наличен. Едва след това задействам резултата. Така софтуерно се отделят доста нежелани смущения.


Чет Юни 06, 2013 7:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Прекъсване се задейства само
Ами това май няма общо с неговия случай, това е някакъв вид дебонсинг, а при него явно не е толкова просто, ако имаш някакво смущение което постоянно генерира прекъсвания най-вероятно тоя дебонсинг няма да свурши работа, т.е. само със закъснение. Това което правя аз е друго, когато стартирам времето за дебонсинга сменям фронта на прекъсването, така ако падне в 0 направо го отебавам. Това разбира се ако се очаква сигнала да стои в 1-ца. Много варианти има но ако са толкова много той няма да излиза реално от прекъсване.
Като цяло хардуерни проблеми със софтуер се решават много по трудно, особенно такива, представи си че всеки 100 uS влиза в прекъсване ... ми то излиза че само шума ти яде едни 20 % от ресурса, може и повече, и пак няма гаранция че няма да мине случайно през софтуерния филтър.


Чет Юни 06, 2013 7:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: Прекъсване се задейства само
Значи в програмата имам само едно прекъсване:
Код:
#include <18F2550.h>
#Fuses HS,WDT1024,PROTECT
#use delay(clock=20M)
#INT_EXT
void Stop()
{
   output_low(PIN_A0);
   output_low(PIN_A1);
   output_low(PIN_A2);
   output_low(PIN_B7);
   output_low(PIN_B6);
   delay_ms(2000);
}

void main()
{
        ..................
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_EXT_L2H);
        ..................
}

Стартирам това чудо и прекъсването не би трябвало да се задейства докато не се подаде 0 на В0. НО след 2-3-4-5 мин си се включва само. Нарочно увеличих delay, за да съм сигурен, че в работни условия се включва прекъсването, понеже съм чувал, че дебъгера може не е пълен и да ме заблуждава нещо.

_________________
www.elkran.com


Последна промяна stoyanoff на Чет Юни 06, 2013 8:12 pm, променена общо 1 път



Чет Юни 06, 2013 7:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Прекъсване се задейства само
Ами да .. enable_interrupts(INT_EXT_H2L); имаш прекъсване по падащ фронт.


Чет Юни 06, 2013 7:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: Прекъсване се задейства само
Извинявам се! Пробвах различни варианти и съм забравил да го върна.. L2H си е!

_________________
www.elkran.com


Чет Юни 06, 2013 8:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: Прекъсване се задейства само
stoyanoff, очевидно много ти е рано да бърникаш в табло с контактори.
Още си в етапа мигане на светодиоди. Да продължавам ли?


Чет Юни 06, 2013 8:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Прекъсване се задейства само
Хмм, освен всичко тоя процесор е с два интерръпта, по схема на другия пин нямаш нищо, освен това не знам как си го конфигурирал, я постни цялата конфигурация на процесора.


Чет Юни 06, 2013 9:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 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
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 55 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща

Кой е на линия

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


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

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