Difference between revisions of "Custom Interrupts - AVR"
(XML Import to change Variable types into Variable Types) |
|||
Line 23: | Line 23: | ||
'''Handler code:''' | '''Handler code:''' | ||
− | <font style="color:#000080"> ISR(USART_RXC_vect) // USART receive vector | + | <font style="color:#000080"> ISR(USART_RXC_vect) // USART receive vector</font> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Line 57: | Line 51: | ||
'''Handler code:''' | '''Handler code:''' | ||
− | <font style="color:#000080"> ISR(ANA_COMP_vect) // analogue comparator interrupt vector | + | <font style="color:#000080"> ISR(ANA_COMP_vect) // analogue comparator interrupt vector</font> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Line 93: | Line 81: | ||
'''Handler code:''' | '''Handler code:''' | ||
− | <font style="color:#000080"> ISR(TIMER1_CAPT_vect) // input capture vector | + | <font style="color:#000080"> ISR(TIMER1_CAPT_vect) // input capture vector</font> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Revision as of 11:09, 10 June 2013
Target AVR Processor ( ATMEGA8, 16, 32 )
(Note: For other AVR devices you may have to refer to the device datasheet to obtain the correct code)
USART Receive
The Flowcode RS232 component can be used to set the Baud rate and configure the mode of operation, and the ReceiveRS232Char function can be used in the handler macro to read the data (clearing the interrupt).
Enable code:
UCSRB |= ((1 << RXCIE) | (1 << RXEN)); // enable USART receiver and receive interrupts
Disable code:
UCSRB &= ~(1 << RXCIE); // disable USART receive interrupts
Handler code:
ISR(USART_RXC_vect) // USART receive vector
Analogue Comparator
Enable code:
SFIOR &= ~(1 << ACME); // disable multiplexer input
ACSR |= (1 << ACIE); // enable comparator interrupts - interrupt when comparator output toggles
'Disable code:
ACSR &= ~(1 << ACIE); // disable comparator interrupts
Handler code:
ISR(ANA_COMP_vect) // analogue comparator interrupt vector
The state of the comparator input can be read into a Flowcode variable 'compstate' with the following C code line:
FCV_COMPSTATE = ACSR & (1 << ACO);
Timer1 Rollover
Enable code:
TCCR1B = 0x45; // positive edge trigger with no noise canceler, prescaler = /1024
TIMSK |= (1 << TICIE1); // enable input capture interrupts
Disable code:
TIMSK &= ~(1 << TICIE1); // disable input capture interrupts
Handler code:
ISR(TIMER1_CAPT_vect) // input capture vector
The captured 16-bit count value can be read into a Flowcode variable 'captval' with the following C code line:
FCV_CAPTVAL = ICR1;
** captval must be declared as an integer variable **