Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Domanda sugli interrupt

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Domanda sugli interrupt

Messaggioda Foto UtenteRabeluk » 31 mag 2013, 19:25

salve ,

non ho capito bene una cosa sugli interrupt.... il bit 'interrupt enable' per uno specifico interrupt (AVR_assembly)
deve essere sempre resettato alla fine della routine relativa all'interrupt se voglio che si ripeta sempre oppure bisogna solo usare RETI per resettare il 'Global Interrupt Enable'?
Avatar utente
Foto UtenteRabeluk
116 1 4 9
Sostenitore
Sostenitore
 
Messaggi: 765
Iscritto il: 30 gen 2011, 22:26

0
voti

[2] Re: Domanda sugli interrupt

Messaggioda Foto UtenteRabeluk » 1 giu 2013, 12:44

#-o
Avatar utente
Foto UtenteRabeluk
116 1 4 9
Sostenitore
Sostenitore
 
Messaggi: 765
Iscritto il: 30 gen 2011, 22:26

1
voti

[3] Re: Domanda sugli interrupt

Messaggioda Foto Utentebladeblaze » 1 giu 2013, 13:18

Per quello che riguarda i PIC della Microchip, dato che oramai mi porto i datasheet a letto per leggere e studiare, so che devi resettare il bit via software, altrimenti non si genereranno altri interrupt, a meno che l'interrupt che ha settato il bit sia un low level e si generi un iterrupt high level.
In ogni caso va resettato via software.
Poi tutto quello che leggi scritto da me prendilo pure con le pinze, perché sicuramente, anzi probabilmente sbaglierò.
Per quanto riguarda quelli della Atmel non ho mai letto un datasheet, ma sicuramente se ci butti un occhio sarà probabilmente scritto e riscritto se il reset è automatico.
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 245
Iscritto il: 1 dic 2011, 0:42
Località: Trento

0
voti

[4] Re: Domanda sugli interrupt

Messaggioda Foto UtenteRabeluk » 1 giu 2013, 13:29

sul datasheet parla solo del bit globale (bit I che si trova in sreg ) che dopo ogni interrupt si disabilita e per riattivarlo quando si esce da un interrupt invece di usare un semplice ret si usa reti...

e poi parla dei flag relativi allo specifico interrupt,anche se quelli credo non centrino con questa cosa
Avatar utente
Foto UtenteRabeluk
116 1 4 9
Sostenitore
Sostenitore
 
Messaggi: 765
Iscritto il: 30 gen 2011, 22:26

1
voti

[5] Re: Domanda sugli interrupt

Messaggioda Foto Utentebladeblaze » 1 giu 2013, 13:37

Guarda, ho dato una breve occhiata in giro.
Da quello che ho capito, il microchip di suo in automatico non lo fa, ma ci sono dei compilatori che implementano in automatico il codice per resettare.
Quindi dipende.
Ho poi trovato alcuni tutorial semplici:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=89843&start=all&postdays=0&postorder=asc PART 5 punto 6
http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html
http://www.atmel.com/Images/io.pdf Ultima pagina
http://www.atmel.com/Images/doc8468.pdf Pagina 5.
Secondo me dovresti dire quale compilatore usi e quale microcontrollore. Poi vedrai che qualcuno più esperto di me ti risponde; da quello che ho capito Foto UtenteTardoFreak gli Atmel li mastica come mentine :mrgreen:
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 245
Iscritto il: 1 dic 2011, 0:42
Località: Trento

1
voti

[6] Re: Domanda sugli interrupt

Messaggioda Foto UtenteTardoFreak » 1 giu 2013, 13:43

Sono di fretta ma ricordo (ma è meglio verificare) che con gli AVR non bisogna resettare proprio nessun bit. [-X
Sui PIC invece si, e non solo su quelli. ;-)
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[7] Re: Domanda sugli interrupt

Messaggioda Foto Utentebladeblaze » 1 giu 2013, 13:55

Mi sa che ha ragione lui.
Note that in the case of the assembly version, we need to add a "reti" instruction at the end of our interrupt instead of the usual "ret" instruction to return to the main program's execution; this special instruction has the dual function of exiting the ISR, and automatically re-enabling the Global Interrupt Enable bit. This happens inside the C version too when the function returns, we just don't see it normally.

This raises the next point; by default, interrupts are themselves not interruptable. When an interrupt fires, the AVR CPU will automatically disable the Global Interrupt Enable bit, to prevent the ISR from being itself interrupted. This is to prevent stack overflows from too many interrupts occurring at once and to prevent the ISRs from running too long, as most uses of interrupts are to have minimal latency when processing an event. It's perfectly possible to set the Global Interrupt Enable bit again as part of the ISR so that nested interrupts can occur, but this is highly not recommended as it is dangerous.

Citazione dal link 1
Comunque mi sembra che la guida che ti ho postato al primo link è esplicativa.
Il bit globale viene resettato con reti, il bit dello specifico interrupt invece dipende.
A te interessava un bit di un iterrupt specifico oppure uno schema generale su quali bit singolarmente vengono resettati e come?
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 245
Iscritto il: 1 dic 2011, 0:42
Località: Trento

0
voti

[8] Re: Domanda sugli interrupt

Messaggioda Foto UtenteRabeluk » 1 giu 2013, 14:06

ora sto lavorando sugli enable dei timercounter in TIMSK

ho impostato un interrupt sull'interrupt del timercounter 0 (TCNT0)

volevo sapere se alla fine della routine relativa a questo interrupt devo resettare il bit relativo in TIMSK oppure basta solo riabilitare il 'global interrupt enable' con reti :D

grazie delle risposte proverò a spulciare per benino tra quei link oltre a continuare a dormire col datasheet :D
Avatar utente
Foto UtenteRabeluk
116 1 4 9
Sostenitore
Sostenitore
 
Messaggi: 765
Iscritto il: 30 gen 2011, 22:26

0
voti

[9] Re: Domanda sugli interrupt

Messaggioda Foto Utentebladeblaze » 1 giu 2013, 14:11

I datasheet prima di andare a letto sono n volte più efficaci della melatonina :mrgreen: .

Grazie a chi mi vota, ma sono piuttosto immeritati
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 245
Iscritto il: 1 dic 2011, 0:42
Località: Trento

0
voti

[10] Re: Domanda sugli interrupt

Messaggioda Foto UtenteRabeluk » 1 giu 2013, 14:18

è il mio modo di ringraziare chi mi aiuta :ok:
è l'unico senso che riesco a dare ai voti :mrgreen: :mrgreen:
Avatar utente
Foto UtenteRabeluk
116 1 4 9
Sostenitore
Sostenitore
 
Messaggi: 765
Iscritto il: 30 gen 2011, 22:26

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti