Bezpieczne opuszczanie procedury obsługi przerwania w AVR 8515: RET czy Rjmp?
Opuszczanie handlera w AVR
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Opuszczanie handlera w AVR
Date: Sun, 13 Jun 2004 12:40:36 +0200
Witam,
czy na AVR 8515 mozna w bezpieczny sposob opuscic
procedure obslugi przerwania za pomoca ret albo rjmp
(oczywiscie po odpowiednim poprawieniu ramki stosu),
czy tez ma on wbudowane mechanizmy koniecznie
wymagajace reti?
Podrawiam
Piotr Wyderski
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.ipartners.pl!not-for-mai
From: Marcin Stanisz <mstanisz_at_nospam_poczta.bzdury.onet.pl>
Subject: Re: Opuszczanie handlera w AVR
Date: 13 Jun 2004 11:52:15 GMT
W artykule <cahb2k$i65$1_at_nospam_news.dialog.net.pl> Piotr Wyderski napisal(a):
czy na AVR 8515 mozna w bezpieczny sposob opuscic
procedure obslugi przerwania za pomoca ret albo rjmp
(oczywiscie po odpowiednim poprawieniu ramki stosu),
czy tez ma on wbudowane mechanizmy koniecznie
wymagajace reti?
Oprócz zdjęcia adresu powrotu ze stosu włącza przerwania (ustawia flagę
I w SREG). I tyle.
Marcin Stanisz
--
"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!www.wizzard.one.pl!new
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: Opuszczanie handlera w AVR
Date: Sun, 13 Jun 2004 13:54:57 +0200
czy na AVR 8515 mozna w bezpieczny sposob opuscic
procedure obslugi przerwania za pomoca ret albo rjmp
(oczywiscie po odpowiednim poprawieniu ramki stosu),
czy tez ma on wbudowane mechanizmy koniecznie
wymagajace reti?
RETI rozni sie od RET wylacznie tym, ze ponownie wlacza przerwania.
Sekwencja RETI od SEI; RETI; rozni sie tym, ze po reti wykonany zostanie
przynajmniej jeden rozkaz przed przyjeciem kolejnego przerwania,
natomiast w tym drugim przypadku nie - tym drugim rozkazem bedzie ret.
Wykorzystanie rjmp sensu nie ma bo przeciez nie wiesz w ktorym miejscu
wystapilo przerwanie, musialbys ten adres pobierac ze stosu.
--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.internetia.pl!newsfeed.tpinternet.pl!news.dialog.net.pl!not-for-mai
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: Opuszczanie handlera w AVR
Date: Sun, 13 Jun 2004 15:22:07 +0200
T.M.F. wrote:
RETI rozni sie od RET wylacznie tym, ze ponownie wlacza przerwania.
Wiec moge bezpiecznie zrobic sztuczke polegajaca na umieszczeniu
procedury obslugi przerwania wewnatrz innej procedury; dzieki wam
obu za wyjasnienie watpliwosci.
Wykorzystanie rjmp sensu nie ma bo przeciez nie wiesz w ktorym miejscu
wystapilo przerwanie
Rzecz w tym, ze prawie dokladnie wiem, bo to przerwanie
z komparatora, uruchamiane w scisle okreslonym miejscu.
musialbys ten adres pobierac ze stosu.
Pobieram, ale nie jako adres powrotny, lecz do uscislenia
co to znaczy "prawie" w powyzszym akapicie i skorygowania
zawartsci licznika. :-)
Pozdrawiam
Piotr Wyderski
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: Opuszczanie handlera w AVR
Date: Mon, 14 Jun 2004 17:56:34 +0200
On Sun, 13 Jun 2004 15:22:07 +0200, Piotr Wyderski wrote:
RETI rozni sie od RET wylacznie tym, ze ponownie wlacza przerwania.
Wiec moge bezpiecznie zrobic sztuczke polegajaca na umieszczeniu
procedury obslugi przerwania wewnatrz innej procedury; dzieki wam
obu za wyjasnienie watpliwosci.
Nie bardzo rozumiem co chcesz osiagnac .. ale z przerwaniami uwazaj.
Wykorzystanie rjmp sensu nie ma bo przeciez nie wiesz w ktorym miejscu
wystapilo przerwanie
Rzecz w tym, ze prawie dokladnie wiem, bo to przerwanie
z komparatora, uruchamiane w scisle okreslonym miejscu.
To po co przerwanie ? :-)
J.
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.dialog.net.pl!not-for-mai
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: Opuszczanie handlera w AVR
Date: Mon, 14 Jun 2004 17:59:06 +0200
J.F. wrote:
Nie bardzo rozumiem co chcesz osiagnac ..
Konwerter ADC dual slope z mozliwie dokladnym licznikiem.
Konkretnie to w chwili obecnej wyglada tak:
; analog to digital conversion
adc_convert:
clr ZL
clr ZH
; enable comparator interrupt source
sbi ACSR,ACIE
; enter capacitor charging mode
cbi DDRB,PB2
cbi PORTD,PD6
adc_loop:
; analog comparator interrupt will break the loop
adiw ZL,0x02
rjmp adc_loop
; analog comparator interrupt handler
irq_comparator:
; disable comparator interrupt source
cbi ACSR,ACIE
sei
; enter capacitor discharging mode
sbi PORTD,PD6
sbi DDRB,PB2
; get the return address
pop tmp
pop tmp
; check whether the value should be adjusted
cpi tmp,low(adc_loop + 0x01)
brne adc_done
; adjust the counter value
sbiw ZL,0x01
adc_done:
ret
To po co przerwanie ? :-)
Wlasnie do przerwania... wiecznej petli. :-)
Pozdrawiam
Piotr Wyderski
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.atman.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai