Knoen: signal.h ska inte behövas om du använder ISR(UART_RX_vect).
Detta är jag lite osäker på: men är det inte så att vid ISR så stängs globala avbrott av under tiden avbrottet körs, men vid SIGNAL lämnas globala avbrott påslaget. (I ditt fall antar jag att du inte vill ha avbrott i avbrottet och man ska alltså betrakta det som ett avbrott och inte en signal?)
Edit: Har blandat friskt.. I tidigare versioner av AVR-libc fanns det SIGNAL()(ej nästlade) och INTERRUPT()(nästlade avbrott), nu har ISR() ersatt dem båda och är ej nästlad som default.
Senast redigerad av oJsan 14 januari 2007, 14:37:05, redigerad totalt 1 gång.
/** \def SIGNAL(signame)
\ingroup avr_interrupts
\code#include <avr/interrupt.h>\endcode
Introduces an interrupt handler function that runs with global interrupts
initially disabled.
This is the same as the ISR macro.
\note Do not use anymore in new code, it will be deprecated
in a future release.
*/
taget ifrån interrupt.h
Interrupt vektorn, kan hetta lite olika men har oftast är flera namn definerade
exempel
Ok, har inte hängt med i uppdateringarna av avr-libc. I tidigare versioner var det två varianter som jag skrev, (fast jag hade blandat ihop dom två). I nyaste versionen av AVR-libc (1.4.5) är det bara ISR() som gäller, SIGNAL och INTERRUPT är 'deprecated', dvs utgående syntax. Det går dock att få nästlade avbrott genom att deklarera avbrottsrutinen på ett speciellt sätt.