Przerwania zewnetrzne '51...
Masz problem? Zapytaj na forum elektroda.pl
From: "Bartek" <bablos_at_nospam_poczta.onet.pl>
Subject: Przerwania zewnetrzne '51...
Date: Fri, 20 Dec 2002 23:32:13 +0100
Witam!
Mam problem z aktywowaniem przerwan INT0 i INT1
w MCS51.
Mianowicie chodzo o to, ze w momencie gdy w
programie (asambler)
aktywuje te 2 przerwania program zachowuje sie
tak jakby otrzymal
zgloszenie przerwania INT0...
System przerwan aktywuje tak:
MOV IE, #10000101b
Przy symulacji po przejsciu przez w/w komorke
symulator skacze pod adres 03h (INT0).
Dlaczego tak sie dzieje? Czy to normalne?
(wydaje mi sie, ze nie bardzo)
Dodam, ze na 3 porcie caly czas sa same "1"
(nie ma przerwania).
Bartek
From: "Bartosz Sarama" <quasimod_at_nospam_poczta.usun.onet.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Fri, 20 Dec 2002 23:54:46 +0100
Witam!
Mam problem z aktywowaniem przerwan INT0 i INT1
w MCS51.
Mianowicie chodzo o to, ze w momencie gdy w
programie (asambler)
aktywuje te 2 przerwania program zachowuje sie
tak jakby otrzymal
zgloszenie przerwania INT0...
Nie ustawiasz np. typu przerwania - masz niski poziom a nie zbocze,
ale to tak przy okazji, żebyś pamiętał, że istnieje :-)
Dodam, ze na 3 porcie caly czas sa same "1"
(nie ma przerwania).
No to nie to, co napisałem. Powinno działać. Jakiego symulatora
używasz?
Pozdrawiam
Bartosz Sarama
From: "Bartek" <bablos_at_nospam_poczta.onet.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sat, 21 Dec 2002 00:09:50 +0100
Dodam, ze na 3 porcie caly czas sa same "1"
(nie ma przerwania).
No to nie to, co napisałem. Powinno działać.
Jakiego symulatora
używasz?
Siakis stary - TURBO 51 ver1.0
BTW: Moze ktos poda nazwe "czegos lepszego"?
Pozbylem sie opisanego problemu tak, ze
najpierw wlaczam
w IE przerwania INT0 i INT1, a dopiero potem
robie
SETB 0AFh
(AFh - adres EA).
Ale i tak chcialbym sie dowiedziec dlaczego
symulator zachowal sie tak dziwnie
gdy uzylem MOV IE, #10000101b ?
Moze to faktycznie wina symulatora...
Bartek
From: "Bartosz Sarama" <quasimod_at_nospam_poczta.usun.onet.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sat, 21 Dec 2002 16:24:13 +0100
Użytkownik "Bartek" <bablos_at_nospam_poczta.onet.pl> napisał w wiadomości
news:au07uu$q9r$1_at_nospam_news.tpi.pl...
Siakis stary - TURBO 51 ver1.0
BTW: Moze ktos poda nazwe "czegos lepszego"?
Ze starych i prostych jest AVSIM 8051. Dziala wysmienicie i do
sprawdzenia prostych funkcji jest wystarczajacy.
Pozbylem sie opisanego problemu tak, ze
najpierw wlaczam
w IE przerwania INT0 i INT1, a dopiero potem
robie
SETB 0AFh
(AFh - adres EA).
Ale i tak chcialbym sie dowiedziec dlaczego
symulator zachowal sie tak dziwnie
gdy uzylem MOV IE, #10000101b ?
Moze to faktycznie wina symulatora...
Je
From: "Bartosz Sarama" <quasimod_at_nospam_poczta.usun.onet.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sat, 21 Dec 2002 16:27:43 +0100
Użytkownik "Bartek" <bablos_at_nospam_poczta.onet.pl> napisał w wiadomości
news:au07uu$q9r$1_at_nospam_news.tpi.pl...
Pozbylem sie opisanego problemu tak, ze
najpierw wlaczam
w IE przerwania INT0 i INT1, a dopiero potem
robie
SETB 0AFh
(AFh - adres EA).
Ale i tak chcialbym sie dowiedziec dlaczego
symulator zachowal sie tak dziwnie
gdy uzylem MOV IE, #10000101b ?
Moze to faktycznie wina symulatora...
Przeklęty IE :-/
Jeśli poszło w ten sposób to dość na pewno wina leży po stronie
symulatora.
Pozdrawiam
Bartosz Sarama
From: "Jerzy Szczesiul" <jerzy.szczesiul_at_nospam_ep.com.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sat, 21 Dec 2002 16:46:39 +0100
Czesc
Przeklęty IE :-/
Nawet z okazji '51
MS Internet Explorer obrywa ;-)))
--
Pozdrowienia
Jurek Szczesiul
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: Przerwania zewnetrzne '51...
Date: Sun, 22 Dec 2002 12:31:02 GMT
On Sat, 21 Dec 2002 16:46:39 +0100, Jerzy Szczesiul wrote:
Czesc
Przeklęty IE :-/
Nawet z okazji '51
MS Internet Explorer obrywa ;-)))
Bo zasluzyl za caloksztalt :-)
J.
From: "edek" <k_at_nospam_ii.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sun, 22 Dec 2002 02:56:49 +0100
Użytkownik "Bartek" <bablos_at_nospam_poczta.onet.pl> napisał w wiadomości
news:au07uu$q9r$1_at_nospam_news.tpi.pl...
Dodam, ze na 3 porcie caly czas sa same "1"
(nie ma przerwania).
(Ciach)
Ale i tak chcialbym sie dowiedziec dlaczego
symulator zachowal sie tak dziwnie
gdy uzylem MOV IE, #10000101b ?
Moze to faktycznie wina symulatora...
Niekoniecznie.
Byc moze tak sie zachowuje procek jak naraz (przez mov)
ustawiasz wszystkie bity w rejestrze IE.
Popatrz tu: http://kordirko.homeip.net/elektro/mcs51manual.pdf
rozdzial 2 "Programmers guide" sekcja "Interrupts"
Intel zaleca takie kroki jesli chcesz uzyc przerwan:
1. Ustaw bit EA w IE
2 Ustaw bity IE0 albo IE1
3 ...
wiec na 99,9% ten sposob musi ci zadzialac - INTEL to gwarantuje
(te 0,01% niepewnosci to na wypadek jakby sie INTEL pomylil
w dokumentacji :-)
Jak sie zaczniesz wczytywac w szczegoly to dojdziesz do tego
ze procek "bada" stany pinow przerwan w ktoryms z 12-tu
cyklow zegarowych danego cyklu maszynowego,
natomiast na podstawie tych danych decyzja o "przerwaniu"
podejmowana jest dopiero w nastepnym cyklu maszynowym.
Czyli juz w nastepnym cyklu maszynowym po tym w ktorym
ustawiasz caly IE procek "podejmuje decyzje" o przerwaniu
na podstawie stanow portow przerwan
"odczytanych" w poprzednim cyklu.
Ale w poprzednim cyklu przerwania byly jeszcze
zablokowane - i w tym przypadku nie wiadomo dokladnie
skad on bierze te wartosci "portow przerwan",
czy faktycznie z pinow procka czy moze "z powietrza"
(trzeba by znac dokladny schemat jak oni te przerzutniki
tam w srodku polutowali :-)
edek
From: "edek" <k_at_nospam_ii.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sat, 21 Dec 2002 00:14:59 +0100
Użytkownik "Bartek" <bablos_at_nospam_poczta.onet.pl> napisał w wiadomości
news:au05ns$ip1$1_at_nospam_news.tpi.pl...
Witam!
Mam problem z aktywowaniem przerwan INT0 i INT1
w MCS51.
Mianowicie chodzo o to, ze w momencie gdy w
programie (asambler)
aktywuje te 2 przerwania program zachowuje sie
tak jakby otrzymal
zgloszenie przerwania INT0...
System przerwan aktywuje tak:
MOV IE, #10000101b
Przy symulacji po przejsciu przez w/w komorke
symulator skacze pod adres 03h (INT0).
Sprobuj wlaczyc w rejestrze TCON bity IT0 i IT1
(1=trybwyzwalania zboczem, 0 - wyzwalanie poziomem niskim)
wtedy niezaleznie od tego co masz na wejsciu
/INT0 /INT1 przerwanie uzyskasz tylko
w momencie "przejscia" sygnalu z 1 do 0.
Pozatym ustawiaj "pojedynczo" bity, nie na raz w IE
Najpierw skonfiguruj inne bity, bit Enabe Interrupts
ustawiaj na samym koncu.
edek
From: Maciej Czapla <mc_at_nospam_sensor.com.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sat, 21 Dec 2002 00:16:32 +0100
System przerwan aktywuje tak:
MOV IE, #10000101b
Przy symulacji po przejsciu przez w/w komorke
symulator skacze pod adres 03h (INT0).
Dlaczego tak sie dzieje? Czy to normalne?
(wydaje mi sie, ze nie bardzo)
Może z jakiegoś powodu masz w chwili aktywacji przrwań ustawioną flagę IEx (w
TCON) albo symulator ma bugi?
MC
--
Czy to sens ma, kląć, że ten Świat z kiepskiego zrobiony surowca,
Bo dobry Bóg już zrobił co mógł, teraz trzeba zawołać fachowca.
From: "Bartek" <bablos_at_nospam_poczta.onet.pl>
Subject: Re: Przerwania zewnetrzne '51...
Date: Sun, 22 Dec 2002 10:30:05 +0100
OK! Wielkie dzieki wszystkim!
Juz dziala .... wiecie mam takie problemy
poniewaz dopiero zaczynam z uP.
Bartek