Sida 2 av 2
Postat: 14 januari 2007, 10:21:12
av oJsan
Stinrew skrev:Nej
oJsan det har han inte!
sbi(UCSRB, 7);
Jo
Stinrew det hade han visst det!
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.
Postat: 14 januari 2007, 11:35:31
av exile
oJsan: Nej, båda kör med global interrupt disabled,
Kod: Markera allt
/** \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
Kod: Markera allt
#define USART_RXC_vect _VECTOR(11)
#define SIG_USART_RECV _VECTOR(11)
#define SIG_UART_RECV _VECTOR(11)
taget ifrån iom16.h
Anledningen till namn byten är att namnen ska stämman med databladen, vilket bör underlätta för den som programmerar ^^
Postat: 14 januari 2007, 14:32:50
av oJsan
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.
Postat: 14 januari 2007, 17:32:27
av Stinrew

Vad pinsamt det blev.
