Niedziała INT1 w AT90s8515



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Michal" <mi15_at_nospam_poczta.onet.pl>
Subject: Niedziała INT1 w AT90s8515
Date: 2 Nov 2004 12:57:38 +0100


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

Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Niedziała INT1 w AT90s8515
Date: Tue, 2 Nov 2004 13:03:31 +0100


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



Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Tue, 2 Nov 2004 13:30:55 +0000 (UTC)


Michal <mi15_at_nospam_poczta.onet.pl> napisał(a):

..
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/

Poprzedni Następny
Wiadomość
Spis treści
From: mi15_at_nospam_poczta.onet.pl
Subject: Re: Niedziała INT1 w AT90s8515
Date: 2 Nov 2004 16:42:21 +0100



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

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: Niedziała INT1 w AT90s8515
Date: Tue, 02 Nov 2004 19:02:14 +0100


On 2 Nov 2004 16:42:21 +0100, mi15_at_nospam_poczta.onet.pl wrote:
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.


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Tue, 2 Nov 2004 18:10:47 +0000 (UTC)



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/

Poprzedni Następny
Wiadomość
Spis treści
From: "Jacek R. Radzikowski" <jacek_at_nospam_spamer.die.die.die.piranet.org>
Subject: Re: =?ISO-8859-2?Q?Niedzia=B3a?= INT1 w AT90s8515
Date: Tue, 2 Nov 2004 18:13:41 +0000 (UTC)


Piotrek Sz. <zumek_at_nospam_wytnij.gazeta.pl> wrote:
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.


Pozdrawiam
Piotrek Sz.





Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Tue, 2 Nov 2004 18:19:59 +0000 (UTC)


..
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/

Poprzedni Następny
Wiadomość
Spis treści
From: mi15_at_nospam_poczta.onet.pl
Subject: Re: Niedziała INT1 w AT90s8515
Date: 3 Nov 2004 05:30:19 +0100


..
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

Poprzedni Następny
Wiadomość
Spis treści
From: "Jacek R. Radzikowski" <jacek_at_nospam_spamer.die.die.die.piranet.org>
Subject: Re: =?ISO-8859-2?Q?Niedzia=B3a?= INT1 w AT90s8515
Date: Wed, 3 Nov 2004 05:27:58 +0000 (UTC)


mi15_at_nospam_poczta.onet.pl wrote:
..
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.


Poprzedni Następny
Wiadomość
Spis treści
From: mi15_at_nospam_poczta.onet.pl
Subject: Re: Niedziała INT1 w AT90s8515
Date: 3 Nov 2004 08:58:50 +0100




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

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: Niedziała INT1 w AT90s8515
Date: Wed, 03 Nov 2004 11:13:40 +0100


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..

J.



Poprzedni Następny
Wiadomość
Spis treści
From: "Jacek R. Radzikowski" <jacek_at_nospam_spamer.die.die.die.piranet.org>
Subject: Re: =?ISO-8859-2?Q?Niedzia=B3a?= INT1 w AT90s8515
Date: Wed, 3 Nov 2004 13:44:23 +0000 (UTC)


J.F. <jfox_nospam_at_nospam_poczta.onet.pl> wrote:
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.





Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Wed, 3 Nov 2004 17:05:12 +0000 (UTC)


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/

Poprzedni Następny
Wiadomość
Spis treści
From: mi15_at_nospam_poczta.onet.pl
Subject: Re: Niedziała INT1 w AT90s8515
Date: 3 Nov 2004 23:02:05 +0100


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 ?


Szczerze mowiac jestem troche poczatkujacym choc napisalem juz pare programow
na rozne mikrokontrolery, problem polega na tym ze programuje od czasu do
czasu i przewaznie w roznych jezykach. Np pisalem programy (ktore dzialaja
choc sa pewnie w nich bledy) na TINY15 - asembler, PIC16F84 - asembler i C,
90s8515 - C, atmega8 - C, byly to przewaznie dosc proste programy, problem
ktory tutaj poruszylem plega na tym ze zaczalem uzywac polecen z
operatorami '<<' ktorych nie do konca rozumialem i tutaj wielkie dzieki dla
wszystkich ktorzy przyczynili sie do tego ze teraz juz wiem o co chodzi : )
Zwykle uzywalem poprosu wpisu bajtu do rejestru typu: GIMSK = 0b00000011
lub '00000011'.
W tym przypadku podpatrzylem pare cudzych programow i zastosowalem polecenia
ktore inetrpetowalem na swoj sposob :))

Mam jeszcze problem z innym programem ale najpierw musze dokonczyc ten.

pozdrawiam serdecznie Michal S.

PS. ostatnio wzialem sie jeszcze za programowanie w VisualBasicu dla Excela, a
na prace dyplomowa pisalem program w C++ Builder, tak wiec jak widzicie cos
tam wiedzy mam ale zdecydowanie za malo doswiadczenia.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek_at_nospam_WYTNIJ.gazeta.pl>
Subject: =?ISO-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Wed, 3 Nov 2004 22:30:37 +0000 (UTC)


mi15_at_nospam_poczta.onet.pl napisał(a):

Szczerze mowiac jestem troche poczatkujacym choc napisalem juz pare programow
na rozne mikrokontrolery, problem polega na tym ze programuje od czasu do
..

Jeśli Cię uraziłem to bardzo przepraszam ,nie było to moim zamiarem.
Chciałem zwrócić tylko uwagę na zawiłości języka C (sam dopiero się "wgryzam")
i jak to jedno małe poleconko może "anulować" nam ileśtam poprzedzających je
poleceń.

Pozdrawiam
Piotrek Sz.
PS
Ja również piszę w kilku językach i czasami mi się myli np. AmigaE(taaak
jescze uzywam) z Clipperem czy FoxPro, lub asm dla 51 z asmem dla 680xx czy
AVR ... :)
Poprostu Wieża Babel ;-)


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: =?iso-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Wed, 3 Nov 2004 19:01:06 +0100


Jacek R. Radzikowski wrote:

ATSD to porzadny kompilator powinien to zoptymalizowac do jednej
operacji.

Rejestr maski przerwan to rejestr specjalnego przeznaczenia,
kompilator nie ma prawa nawet o tym "pomyslec".

Pozdrawiam
Piotr Wyderski



Poprzedni Następny
Wiadomość
Spis treści
From: "Jacek R. Radzikowski" <jacek_at_nospam_spamer.die.die.die.piranet.org>
Subject: Re: =?ISO-8859-2?Q?Niedzia=B3a?= INT1 w AT90s8515
Date: Thu, 4 Nov 2004 23:20:05 +0000 (UTC)


Piotr Wyderski <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> wrote:
Jacek R. Radzikowski wrote:
ATSD to porzadny kompilator powinien to zoptymalizowac do jednej
operacji.
Rejestr maski przerwan to rejestr specjalnego przeznaczenia,
kompilator nie ma prawa nawet o tym "pomyslec".

W sumie to nie tylko rejestry, ale wszystkie zmienne zadeklarowane
jako volatile

pzdr.
j.

Pozdrawiam
Piotr Wyderski





Poprzedni Następny
Wiadomość
Spis treści
From: Wojtek Kaniewski <wojtekka_at_nospam_SPAM.SPAM.SPAM>
Subject: Re: =?ISO-8859-2?Q?Niedzia=B3a_INT1_w_AT90s8515?=
Date: Wed, 03 Nov 2004 20:33:56 +0100


Jacek R. Radzikowski wrote:
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.

ciekawe, co by wyszło po optymalizacji czegoś takiego:

for (;;) {
PORTA = _BV(0);
PORTA |= _BV(1);
PORTA |= _BV(2);
PORTA |= _BV(3);
PORTA |= _BV(4);
PORTA |= _BV(5);
PORTA |= _BV(6);
PORTA |= _BV(7);
}

w.

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: Niedziała INT1 w AT90s8515
Date: Wed, 03 Nov 2004 11:13:40 +0100


On 3 Nov 2004 05:30:19 +0100, mi15_at_nospam_poczta.onet.pl wrote:
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.




Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: =?iso-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Wed, 3 Nov 2004 19:08:36 +0100



J.F. wrote:

P.S. W C sa struktury bitowe ..

I tak i nie, tzn. standard nie okresla w ktorym miejscu
zostanie przydzielone wskazane pole bitowe, wiec zapomnij
o definiowaniu w ten sposob struktury rejestrow specjalnych.
W tym zastosowaniu nie maja one zadnego sensu. Poza
tym patrzylem kiedys w jaki sposob kompilator (gcc)
korzysta z pol bitowych -- zdisasemblowalem kod,
popatrzylem, podnioslo mi sie cisnienie, przestalem
korzystac z tego mechanizmu... :-)

Pozdrawiam
Piotr Wyderski



Poprzedni Następny
Wiadomość
Spis treści
From: Jan Dubiec <jdx_at_nospam_SPAMTRAP.slackware.pl>
Subject: Re: =?iso-8859-2?q?Niedzia=B3a?= INT1 w AT90s8515
Date: 04 Nov 2004 01:26:09 +0100


On Wed, 3 Nov 2004 19:08:36 +0100, "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> wrote:
J.F. wrote:

P.S. W C sa struktury bitowe ..

I tak i nie, tzn. standard nie okresla w ktorym miejscu
zostanie przydzielone wskazane pole bitowe, wiec zapomnij
o definiowaniu w ten sposob struktury rejestrow specjalnych.
A jakie miejsce masz na myśli? Pytam ponieważ ja w sam raz używam pól
bitowych właśnie do definiowania struktur SFR-ów. :-)

Regards,
/J.D.
--
Jan Dubiec, jdx#slackware.pl, mobile: +48 506 790442

Głęboka wiara wymaga płytkiego rozumu i nikłej wiedzy.

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: =?iso-8859-2?Q?Re:_Niedzia=B3a_INT1_w_AT90s8515?=
Date: Thu, 4 Nov 2004 14:34:33 +0100


Jan Dubiec wrote:

I tak i nie, tzn. standard nie okresla w ktorym miejscu
zostanie przydzielone wskazane pole bitowe, wiec zapomnij
o definiowaniu w ten sposob struktury rejestrow specjalnych.
A jakie miejsce masz na myśli?

Standard ISO C99, ustep 6.7.2.1:

"An implementation may allocate any addressable storage unit large
enough to hold a bit-field. If enough space remains, a bit-field
that immediately follows another bit-field in a structure shall be
packed into adjacent bits of the same unit. The order of
allocation of bit-fields with a unit (high-order to low-order or
low-order to high-order) is implementation defined. The alignment
of the addressable storage unit is unspecified."

Pytam ponieważ ja w sam raz używam pól
bitowych właśnie do definiowania struktur SFR-ów. :-)

No to korzystasz z niezdefiniowanego zachowania. :-)
Standard nie gwarantuje Ci, ze bity zostana przydzielone
polom w kolejnosci np. od najmniej znaczacego do najbardziej
znaczacego. Taka rzecz musi byc jasno okreslona w dokumentacji
kompilatora (jako rozszerzenie/doprecyzowanie standardu);
w przeciwnym przypadku nie wolno na niej opierac wiary
w poprawna konstrukcje programu. :-)

Pozdrawiam
Piotr Wyderski