>> However, IMHO a more elegant C++ solution would be to define
>> the interrupt
>> handler as a private function within the class.
> Avr-gcc is expecting a fixed name for the vector. See avr-libc for how
> the ISR macro is defined.
>
> Note that there is no C++ maintainer for AVR GCC.
>
> Eric Weddington
Sorry - I forgot to say the problem lies with C++ mangling function names,
so if the private class method is, say:
void TIMER0_OVF_vect(void) __attribute__ ((signal, __INTR_ATTRS))
{
Flags |= TIMER0_OVERFLOW; // indicate the event type
TCNT0 = TIMER0_TIMEOUT; // restart the timeout
}
avr-gcc helpfully replies with:
Main.c(28): warning: '_ZN7cTimer011__vector_16Ev' appears to be a misspelled
signal handler
and of course does not bother to link the handler. Manually adding the line:
ISR_ALIAS(TIMER0_OVF_vect, _ZN7cTimer011__vector_16Ev);
after the class definition makes everything work, but my question is: is it
possible to do this without the cutting and pasting?
Ron Kreymborg
_______________________________________________
AVR-chat mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-chat