Goto page 1, 2 Next
Michal
Guest
Tue Nov 02, 2004 11:57 am
Witam
Moze ktos spotkal sie z podobnym problemem, a mianowicie potrzebuje wykorzystac
w moim ukladzie przerwania INT0 i INT1, niestety ale podprogram przerwania INT1
nie zostaje wykonany po podaniu odpowiedniego sygnalu. Procek to AVR 8515
(probowalem tez na ATmega8515 i takze brak reakcji)
Zaznaczam ze wszystkie bity sa ustawione tak jak potrzeba, probowalem zmieniac
aby przerwania byly wyzwalane od innego zbocza itp. i efekt ciagle taki sam ze
INT0 dziala, a INT1 nie chce : (((
Uzywam kompilatora C - AVR Edit
Michal.
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
peters
Guest
Tue Nov 02, 2004 12:03 pm
Quote:
Zaznaczam ze wszystkie bity sa ustawione tak jak potrzeba
Skoro wszystko jak potrzeba, to ja nie wiem co to moze byc.
Cuda jakies chyba :)
peters
Piotrek Sz.
Guest
Tue Nov 02, 2004 2:30 pm
Michal <mi15@poczta.onet.pl> napisał(a):
...
Quote:
Zaznaczam ze wszystkie bity sa ustawione tak jak potrzeba, probowalem zmieniac
aby przerwania byly wyzwalane od innego zbocza itp. i efekt ciagle taki sam ze
INT0 dziala, a INT1 nie chce : (((
...
A my byśmy chcieli zobaczyć na własne oczy te ustawienia :-)
Pzdr.
Piotrek Sz.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
Guest
Tue Nov 02, 2004 3:42 pm
Quote:
A my byśmy chcieli zobaczyć na własne oczy te ustawienia :-)
oto wycinek programu gdzie ustawiam warunki przerwania
GIMSK=1<<INT1; //
GIMSK=1<<INT0; //
MCUCR=1<<ISC10; // przerwania INT1
MCUCR=1<<ISC11; //
MCUCR=1<<ISC00; // przerwania INT0
MCUCR=1<<ISC01;
obsluga podprogramow wyglada nastepujaco
SIGNAL(SIG_INTERRUPT0)
{
.....
}
i dla INT1
SIGNAL(SIG_INTERRUPT1)
{
....
}
oba podprogramy sa prawie ze identyczne, zapalaja 4 lampy tyle ze jedno
przerwanie powoduje zapalenie lamp w jedna strone, a drugie przerwanie lampy
zapalaja sie kolejno w druga strone. Jeszcze raz zaznaczam ze INT 0 dziala i
ma sie dobrze

(
nasuwa mi sie mysl czy czasem kompilator nie ma bledu !!!
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
J.F.
Guest
Tue Nov 02, 2004 6:02 pm
On 2 Nov 2004 16:42:21 +0100, mi15@poczta.onet.pl wrote:
Quote:
A my byśmy chcieli zobaczyć na własne oczy te ustawienia
oto wycinek programu gdzie ustawiam warunki przerwania
GIMSK=1<<INT1; //
GIMSK=1<<INT0; //
Na moj gust to niniejszym wlaczyles INT0, ale wylaczyles wszystkie
inne .. nie ma sie co dziwic ze nie dzialaja ..
J.
Piotrek Sz.
Guest
Tue Nov 02, 2004 7:10 pm
Quote:
GIMSK=1<<INT1; //
GIMSK=1<<INT0; //
I dziwisz się że masz tylko INT0.Przecierz sam ładujesz maskę dla INT1,a potem
dla INT0 tym samym kasując dla INT1.W 2-giej lini brakuje "magicznago" symbolu
"OR".
Pozdrawiam
Piotrek Sz.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
Jacek R. Radzikowski
Guest
Tue Nov 02, 2004 7:13 pm
Piotrek Sz. <zumek@wytnij.gazeta.pl> wrote:
Quote:
GIMSK=1<<INT1; //
GIMSK=1<<INT0; //
I dziwisz się że masz tylko INT0.Przecierz sam ładujesz maskę dla INT1,a potem
dla INT0 tym samym kasując dla INT1.W 2-giej lini brakuje "magicznago" symbolu
"OR".
I nie tylko w 2giej. We wszystkich linijkach gdzie modyfikujesz kilka razy ten sam
rejestr, do drugiej i kolejnych modyfikacji ORuj wartosc rejestru z maska bitowa.
j.
Quote:
Pozdrawiam
Piotrek Sz.
Piotrek Sz.
Guest
Tue Nov 02, 2004 7:19 pm
...
Quote:
I nie tylko w 2giej. We wszystkich linijkach gdzie modyfikujesz kilka razy ten
sam
rejestr, do drugiej i kolejnych modyfikacji ORuj wartosc rejestru z maska bitow
...
A z tego niezbicie wynika że jesteś początkującym C-ownikiem
Jako ja:-)
Pzdr.
Piotrek Sz.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
Guest
Wed Nov 03, 2004 4:30 am
Quote:
..
I nie tylko w 2giej. We wszystkich linijkach gdzie modyfikujesz kilka razy
ten
sam
rejestr, do drugiej i kolejnych modyfikacji ORuj wartosc rejestru z maska
bitow
o żesz qrw.... ale ze mnie lama : )))) nie wiedzialem ze trzeba wszystkie bity
zmieniac w jednej linijce z ORami,
uogólniając:
Wpisanie GIMSK=1<<INT0; powoduje ustawienie innych biow na zero??? zaraz
zajrze do ksiazki
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
Jacek R. Radzikowski
Guest
Wed Nov 03, 2004 6:27 am
mi15@poczta.onet.pl wrote:
Quote:
..
I nie tylko w 2giej. We wszystkich linijkach gdzie modyfikujesz kilka razy
ten
sam
rejestr, do drugiej i kolejnych modyfikacji ORuj wartosc rejestru z maska
bitow
o żesz qrw.... ale ze mnie lama : )))) nie wiedzialem ze trzeba wszystkie bity
zmieniac w jednej linijce z ORami,
uogólniając:
Wpisanie GIMSK=1<<INT0; powoduje ustawienie innych biow na zero??? zaraz
zajrze do ksiazki
Wpisuje do rejestru bajt z ustawionym tylko jednym bitem. Poprzednia
wartosc jest zamazywana. Albo ORuj bity przy przypisaniu:
GIMSK=(1<<...) | (1<<...) | ...
albo dodaj ORa do kolejnych:
GIMSK=1<<...; /* nadpisanie GIMSK bajtem z ustawionym tylko jednym bitem */
GIMSK|=1<<...; /* ustawienie pojedynczego bitu bez zmiany wartosci pozostalych bitow w rejestrze */
GIMSK|=1<<...;
j.
Guest
Wed Nov 03, 2004 7:58 am
Quote:
Wpisuje do rejestru bajt z ustawionym tylko jednym bitem. Poprzednia
wartosc jest zamazywana. Albo ORuj bity przy przypisaniu:
GIMSK=(1<<...) | (1<<...) | ...
albo dodaj ORa do kolejnych:
GIMSK=1<<...; /* nadpisanie GIMSK bajtem z ustawionym tylko jednym
bitem */
GIMSK|=1<<...; /* ustawienie pojedynczego bitu bez zmiany wartosci
pozostalych bitow w rejestrze */
GIMSK|=1<<...;
Teraz juz kapuje : )))) Wielkie dzieki!!
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
J.F.
Guest
Wed Nov 03, 2004 10:13 am
On 3 Nov 2004 05:30:19 +0100, mi15@poczta.onet.pl wrote:
Quote:
o żesz qrw.... ale ze mnie lama : )))) nie wiedzialem ze trzeba wszystkie bity
zmieniac w jednej linijce z ORami,
uogólniając:
Wpisanie GIMSK=1<<INT0; powoduje ustawienie innych biow na zero??? zaraz
zajrze do ksiazki
Lama z cieba straszna :-)
A czemu mialoby dzialac inaczej ? To jest instrukcja PODSTAWIENIA.
P.S. W C sa struktury bitowe ..
J.
J.F.
Guest
Wed Nov 03, 2004 10:13 am
On Wed, 3 Nov 2004 05:27:58 +0000 (UTC), Jacek R. Radzikowski wrote:
Quote:
GIMSK=1<<...; /* nadpisanie GIMSK bajtem z ustawionym tylko jednym bitem */
GIMSK|=1<<...; /* ustawienie pojedynczego bitu bez zmiany wartosci pozostalych bitow w rejestrze */
Na to radze uwazac - nie zawsze rejestr specjalny da sie odczytac..
J.
Jacek R. Radzikowski
Guest
Wed Nov 03, 2004 2:44 pm
J.F. <jfox_nospam@poczta.onet.pl> wrote:
Quote:
On Wed, 3 Nov 2004 05:27:58 +0000 (UTC), Jacek R. Radzikowski wrote:
GIMSK=1<<...; /* nadpisanie GIMSK bajtem z ustawionym tylko jednym bitem */
GIMSK|=1<<...; /* ustawienie pojedynczego bitu bez zmiany wartosci pozostalych bitow w rejestrze */
Na to radze uwazac - nie zawsze rejestr specjalny da sie odczytac..
Racja. Bezpieczniej bedzie przypisac w jednym podstawieniu.
ATSD to porzadny kompilator powinien to zoptymalizowac do jednej
operacji. Moze wiec dzialac nawet jesli rejestr nie daje sie czytac,
ale na tym bym nie polegal przy pisaniu programu.
j.
> J.
Piotrek Sz.
Guest
Wed Nov 03, 2004 6:05 pm
No to żeby tak dopełnić formalności

należy nadmienić że bity nie tylko się
ustawia ale także kasuje i zmienia na przeciwny.Ciekawe jak z tym zagadnieniem
kolega (autor postu) sobie z tym radzi ?
Pzdr.
Piotrek Sz.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
Goto page 1, 2 Next