.r_ocrh = OCR1AH, // 16 bits timers have two bytes of it
.com = AVR_IO_REGBITS(TCCR1A, COM1A0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTB, PB5),
+ .foc = AVR_IO_REGBIT(TCCR1C, FOC1A),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK1, OCIE1A),
.raised = AVR_IO_REGBIT(TIFR1, OCF1A),
.r_ocrh = OCR1BH,
.com = AVR_IO_REGBITS(TCCR1A, COM1B0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTB, PB6),
+ .foc = AVR_IO_REGBIT(TCCR1C, FOC1B),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK1, OCIE1B),
.raised = AVR_IO_REGBIT(TIFR1, OCF1B),
.r_ocrh = OCR1CH,
.com = AVR_IO_REGBITS(TCCR1A, COM1C0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTB, PB7), // same as timer0A
+ .foc = AVR_IO_REGBIT(TCCR1C, FOC1C),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK1, OCIE1C),
.raised = AVR_IO_REGBIT(TIFR1, OCF1C),
.r_ocrh = OCR3AH, // 16 bits timers have two bytes of it
.com = AVR_IO_REGBITS(TCCR3A, COM3A0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTE, PE3),
+ .foc = AVR_IO_REGBIT(TCCR3C, FOC3A),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK3, OCIE3A),
.raised = AVR_IO_REGBIT(TIFR3, OCF3A),
.r_ocrh = OCR3BH,
.com = AVR_IO_REGBITS(TCCR3A, COM3B0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTE, PE4),
+ .foc = AVR_IO_REGBIT(TCCR3C, FOC3B),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK3, OCIE3B),
.raised = AVR_IO_REGBIT(TIFR3, OCF3B),
.r_ocrh = OCR3CH,
.com = AVR_IO_REGBITS(TCCR3A, COM3C0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTE, PE5),
+ .foc = AVR_IO_REGBIT(TCCR3C, FOC3C),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK3, OCIE3C),
.raised = AVR_IO_REGBIT(TIFR3, OCF3C),
.r_ocrh = OCR4AH, // 16 bits timers have two bytes of it
.com = AVR_IO_REGBITS(TCCR4A, COM4A0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTH, PH3),
+ .foc = AVR_IO_REGBIT(TCCR4C, FOC4A),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK4, OCIE4A),
.raised = AVR_IO_REGBIT(TIFR4, OCF4A),
.r_ocrh = OCR4BH,
.com = AVR_IO_REGBITS(TCCR4A, COM4B0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTH, PH4),
+ .foc = AVR_IO_REGBIT(TCCR4C, FOC4B),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK4, OCIE4B),
.raised = AVR_IO_REGBIT(TIFR4, OCF4B),
.r_ocrh = OCR4CH,
.com = AVR_IO_REGBITS(TCCR4A, COM4C0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTH, PH5),
+ .foc = AVR_IO_REGBIT(TCCR4C, FOC4C),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK4, OCIE4C),
.raised = AVR_IO_REGBIT(TIFR4, OCF4C),
.r_ocrh = OCR5AH, // 16 bits timers have two bytes of it
.com = AVR_IO_REGBITS(TCCR5A, COM5A0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTL, PL3),
+ .foc = AVR_IO_REGBIT(TCCR5C, FOC5A),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK5, OCIE5A),
.raised = AVR_IO_REGBIT(TIFR5, OCF5A),
.r_ocrh = OCR5BH,
.com = AVR_IO_REGBITS(TCCR5A, COM5B0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTL, PL4),
+ .foc = AVR_IO_REGBIT(TCCR5C, FOC5B),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK5, OCIE5B),
.raised = AVR_IO_REGBIT(TIFR5, OCF5B),
.r_ocrh = OCR5CH,
.com = AVR_IO_REGBITS(TCCR5A, COM5C0, 0x3),
.com_pin = AVR_IO_REGBIT(PORTL, PL5),
+ .foc = AVR_IO_REGBIT(TCCR5C, FOC5C),
.interrupt = {
.enable = AVR_IO_REGBIT(TIMSK5, OCIE5C),
.raised = AVR_IO_REGBIT(TIFR5, OCF5C),