Hat einer den Plan mit signal?
In dem AVR manual wird SIGNAL(signame) definiert als:
-------
6.25.2.3 #define SIGNAL(signame)
Value:
void signame (void) __attribute__ ((signal)); \
void signame (void)
#include <avr/interrupt.h>
Introduces an interrupt handler function that runs with global
interrupts initially disabled. This is the same as the ISR macro.
------
1.Heißt das soviel, dass für IRSs mit SIGNAL(signame) GIE nicht gesetzt
sein brauch um die IRS zu entern oder was ist mit "initially" gemeint?
2.Wenn in einer signal IRS0 eine andere Signal IRS1 enabled wird, dann
wird
normalerweise erst wider in die Mainmode zurückgewechselt, bevor IRS1
geentert werden?
Hat einer den Plan mit signal?
Hallo,
man schreibt ISR nicht IRS,
denn das kommt von Interrupt Service Routine, nicht Interrupt Rountinen Service
Mit SIGNAL wird nur die Funktion angelegt, und in die entsprechende Adresse der Interrupt Vectoren eingetragen.
Was mit dem global IRQ gemeint ist, wenn ein solcher IRQ aufgetreten ist und die Routine aufgerufen wird, werden alle andern IRQs unterdrückt, also disabled, es kann so kein anderer IRQ dazwischenfunken, auch nicht derselbe nochmal.
Der AVR "merkt" sich das aber und ruft diese gleich nach dem globalen erlauben der IRQs auf, ausser man löscht die IRQ-flags vorher.
Wenn die IRQs global von vorn herein schon nicht erlaubt werden, wird diese Routine auch nicht aufgerufen !
Danke schön...................
Wird beim Verlassen einer Signal IRQ das Global Enable automatisch wieder gesetzt?
Das wird automatisch von der Hardware gesetzt (egal ob SIGNAL oder nicht).
Disclaimer: none. Sue me.
Lesezeichen