#include #include #ifndef DEFS_H #define DEFS_H #define PORTN_MAX 0 #ifdef DDRA # if defined(PORTA7) # define PORTAN 8 # elif defined(PORTA6) # define PORTAN 7 # elif defined(PORTA5) # define PORTAN 6 # elif defined(PORTA4) # define PORTAN 5 # elif defined(PORTA3) # define PORTAN 4 # elif defined(PORTA2) # define PORTAN 3 # elif defined(PORTA1) # define PORTAN 2 # elif defined(PORTA0) # define PORTAN 1 # else # define PORTAN 0 # endif #else # define PORTAN 0 #endif #ifdef DDRB # if defined(PORTB7) # define PORTBN 8 # elif defined(PORTB6) # define PORTBN 7 # elif defined(PORTB5) # define PORTBN 6 # elif defined(PORTB4) # define PORTBN 5 # elif defined(PORTB3) # define PORTBN 4 # elif defined(PORTB2) # define PORTBN 3 # elif defined(PORTB1) # define PORTBN 2 # elif defined(PORTB0) # define PORTBN 1 # else # define PORTBN 0 # endif #else # define PORTAN 0 #endif #ifdef DDRC # if defined(PORTC7) # define PORTCN 8 # elif defined(PORTC6) # define PORTCN 7 # elif defined(PORTC5) # define PORTCN 6 # elif defined(PORTC4) # define PORTCN 5 # elif defined(PORTC3) # define PORTCN 4 # elif defined(PORTC2) # define PORTCN 3 # elif defined(PORTC1) # define PORTCN 2 # elif defined(PORTC0) # define PORTCN 1 # else # define PORTCN 0 # endif #else # define PORTCN 0 #endif #ifdef DDRD # if defined(PORTD7) # define PORTDN 8 # elif defined(PORTD6) # define PORTDN 7 # elif defined(PORTD5) # define PORTDN 6 # elif defined(PORTD4) # define PORTDN 5 # elif defined(PORTD3) # define PORTDN 4 # elif defined(PORTD2) # define PORTDN 3 # elif defined(PORTD1) # define PORTDN 2 # elif defined(PORTD0) # define PORTDN 1 # else # define PORTDN 0 # endif #else # define PORTDN 0 #endif #ifdef DDRE # if defined(PORTE7) # define PORTEN 8 # elif defined(PORTE6) # define PORTEN 7 # elif defined(PORTE5) # define PORTEN 6 # elif defined(PORTE4) # define PORTEN 5 # elif defined(PORTE3) # define PORTEN 4 # elif defined(PORTE2) # define PORTEN 3 # elif defined(PORTE1) # define PORTEN 2 # elif defined(PORTE0) # define PORTEN 1 # else # define PORTEN 0 # endif #else # define PORTEN 0 #endif #ifdef DDRF # if defined(PORTF7) # define PORTFN 8 # elif defined(PORTF6) # define PORTFN 7 # elif defined(PORTF5) # define PORTFN 6 # elif defined(PORTF4) # define PORTFN 5 # elif defined(PORTF3) # define PORTFN 4 # elif defined(PORTF2) # define PORTFN 3 # elif defined(PORTF1) # define PORTFN 2 # elif defined(PORTF0) # define PORTFN 1 # else # define PORTFN 0 # endif #else # define PORTFN 0 #endif #ifdef DDRG # if defined(PORTG7) # define PORTGN 8 # elif defined(PORTG6) # define PORTGN 7 # elif defined(PORTG5) # define PORTGN 6 # elif defined(PORTG4) # define PORTGN 5 # elif defined(PORTG3) # define PORTGN 4 # elif defined(PORTG2) # define PORTGN 3 # elif defined(PORTG1) # define PORTGN 2 # elif defined(PORTG0) # define PORTGN 1 # else # define PORTGN 0 # endif #else # define PORTGN 0 #endif #ifdef DDRH # if defined(PORTH7) # define PORTHN 8 # elif defined(PORTH6) # define PORTHN 7 # elif defined(PORTH5) # define PORTHN 6 # elif defined(PORTH4) # define PORTHN 5 # elif defined(PORTH3) # define PORTHN 4 # elif defined(PORTH2) # define PORTHN 3 # elif defined(PORTH1) # define PORTHN 2 # elif defined(PORTH0) # define PORTHN 1 # else # define PORTHN 0 # endif #else # define PORTHN 0 #endif #if defined (__AVR_AT90PWM1__) || defined (__AVR_AT90PWM2__) || defined (__AVR_AT90PWM2B__) || \ defined (__AVR_AT90PWM3__) || defined (__AVR_AT90PWM3B__) || defined (__AVR_AT90PWM216__) || \ defined (__AVR_AT90PWM316__) || defined (__AVR_AT90PWM161__) || defined (__AVR_AT90PWM81__) #undef PORTE_EXC #elif defined (__AVR_ATtiny26__) || defined (__AVR_ATtiny261__) || defined (__AVR_ATtiny261A__) || \ defined (__AVR_ATtiny461__) || defined (__AVR_ATtiny461A__) || defined (__AVR_ATtiny861__) || \ defined (__AVR_ATtiny861A__) || defined (__AVR_ATtiny87__) || defined (__AVR_ATtiny167__) || \ defined (__AVR_ATA5505__) #undef PORTB_EXC #define PORTB_EXC 7 #elif defined (__AVR_ATtiny4__) || defined (__AVR_ATtiny5__) || defined (__AVR_ATtiny9__) || \ defined (__AVR_ATtiny10__) || defined (__AVR_ATtiny20__) || defined (__AVR_ATtiny441__) || \ defined (__AVR_ATtiny841__) || defined (__AVR_ATtiny24__) || defined (__AVR_ATtiny24A__) || \ defined (__AVR_ATtiny44__) || defined (__AVR_ATtiny44A__) || defined (__AVR_ATtiny84__) #undef PORTB_EXC #define PORTB_EXC 3 #elif defined (__AVR_ATtiny40__) || defined (__AVR_ATtiny1634__) #undef PORTC_EXC #define PORTC_EXC 3 #elif defined (__AVR_ATtiny43U__) #undef PORTA_EXC #define PORTA_EXC 7 #elif defined (__AVR_ATtiny828__) #undef PORTD_EXC #define PORTD_EXC 2 #elif defined (__AVR_ATA5782__) || defined (__AVR_ATA5831__) #undef PORTC_EXC #define PORTC_EXC 0 #elif defined (__AVR_ATmega16M1__) || defined (__AVR_ATmega32M1__) || defined (__AVR_ATmega64M1__) || \ defined (__AVR_ATmega32C1__) || defined (__AVR_ATmega64C1__) #undef PORTE_EXC #define PORTE_EXC 0 #elif defined (__AVR_AT90USB82__) || defined (__AVR_AT90USB162__) || defined (__AVR_ATmega8U2__) || \ defined (__AVR_ATmega16U2__) || defined (__AVR_ATmega32U2__) #undef PORTC_EXC #define PORTC_EXC 1 #elif defined (__AVR_ATmega8HVA__) || defined (__AVR_ATmega16HVA__) || defined (__AVR_ATmega16HVA2__) || \ defined (__AVR_ATtiny2313__) || defined (__AVR_ATtiny2313A__) || defined (__AVR_ATtiny4313__) #undef PORTA_EXC #define PORTA_EXC 2 #elif defined (__AVR_ATmega165__) || defined (__AVR_ATmega165A__) || defined (__AVR_ATmega165P__) || \ defined (__AVR_ATmega325__) || defined (__AVR_ATmega325A__) || defined (__AVR_ATmega325P__) || \ defined (__AVR_ATmega325PA__) || defined (__AVR_ATmega3250__) || defined (__AVR_ATmega3250A__) || \ defined (__AVR_ATmega3250P__) || defined (__AVR_ATmega3250PA__) || defined (__AVR_ATmega645__) || \ defined (__AVR_ATmega645A__) || defined (__AVR_ATmega645P__) || defined (__AVR_ATmega6450__) || \ defined (__AVR_ATmega6450A__) || defined (__AVR_ATmega6450P__) || defined (__AVR_ATmega165PA__) || \ defined (__AVR_ATmega6490__) || defined (__AVR_ATmega6490A__) || defined (__AVR_ATmega6490P__) || \ defined (__AVR_ATmega169__) || defined (__AVR_ATmega169A__) || defined (__AVR_ATmega169P__) || \ defined (__AVR_ATmega329__) || defined (__AVR_ATmega329A__) || defined (__AVR_ATmega3290P__) || \ defined (__AVR_ATmega329P__) || defined (__AVR_ATmega329PA__) || defined (__AVR_ATmega3290PA__) || \ defined (__AVR_ATmega3290__) || defined (__AVR_ATmega3290A__) || defined (__AVR_ATmega169PA__) || \ defined (__AVR_ATmega649__) || defined (__AVR_ATmega649A__) || defined (__AVR_ATmega649P__) #undef PORTG_EXC #define PORTG_EXC 5 #elif defined (__AVR_ATmega88PA__) || defined (__AVR_ATmega88PB__) || defined (__AVR_ATmega88P__) || \ defined (__AVR_ATmega88A__) || defined (__AVR_ATmega88__) || defined (__AVR_ATmega48P__) || \ defined (__AVR_ATmega48PB__) || defined (__AVR_ATmega48PA__) || defined (__AVR_ATmega48A__) || \ defined (__AVR_ATmega48__) || defined (__AVR_ATmega8A__) || defined (__AVR_ATmega8__) || \ defined (__AVR_ATmega168PA__) || defined (__AVR_ATmega168P__) || defined (__AVR_ATmega168A__) || \ defined (__AVR_ATmega168__) || defined (__AVR_ATmega328P__) || defined (__AVR_ATmega328__) || \ defined (__AVR_ATtiny48__) || defined (__AVR_ATtiny88__) || defined (__AVR_ATA6612C__) || \ defined (__AVR_ATA6613C__) || defined (__AVR_ATA6614Q__) #undef PORTC_EXC #define PORTC_EXC 6 #elif defined (__AVR_ATtiny13__) || defined (__AVR_ATtiny13A__) || defined (__AVR_ATtiny25__) || \ defined (__AVR_ATtiny45__) || defined (__AVR_ATtiny85__) || defined (__AVR_ATtiny15__) || \ defined (__AVR_ATtiny12__) || defined (__AVR_ATtiny11__) #undef PORTB_EXC #define PORTB_EXC 5 #endif #ifdef PORTA_EXC #define PORTA_EXC_MASK (~(1<<(PORTA_EXC+1))) #else #define PORTA_EXC_MASK 0xff #endif #ifdef PORTB_EXC #define PORTB_EXC_MASK (~(1<<(PORTB_EXC+1))) #else #define PORTB_EXC_MASK 0xff #endif #ifdef PORTC_EXC #define PORTC_EXC_MASK (~(1<<(PORTC_EXC+1))) #else #define PORTC_EXC_MASK 0xff #endif #ifdef PORTD_EXC #define PORTD_EXC_MASK (~(1<<(PORTD_EXC+1))) #else #define PORTD_EXC_MASK 0xff #endif #ifdef PORTE_EXC #define PORTE_EXC_MASK (~(1<<(PORTE_EXC+1))) #else #define PORTE_EXC_MASK 0xff #endif #ifdef PORTF_EXC #define PORTF_EXC_MASK (~(1<<(PORTF_EXC+1))) #else #define PORTF_EXC_MASK 0xff #endif #ifdef PORTG_EXC #define PORTG_EXC_MASK (~(1<<(PORTG_EXC+1))) #else #define PORTG_EXC_MASK 0xff #endif #ifdef PORTH_EXC #define PORTH_EXC_MASK (~(1<<(PORTH_EXC+1))) #else #define PORTH_EXC_MASK 0xff #endif #if PORTAN > 0 # define PORTA_MASK (((1< 0 # define PORTB_MASK (((1< 0 # define PORTC_MASK (((1< 0 #define PORTD_MASK (((1< 0 #define PORTE_MASK (((1< 0 #define PORTF_MASK (((1< 0 #define PORTG_MASK (((1< 0 #define PORTH_MASK (((1< PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTAN #endif #if PORTBN > PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTBN #endif #if PORTCN > PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTCN #endif #if PORTDN > PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTDN #endif #if PORTEN > PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTEN #endif #if PORTFN > PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTFN #endif #if PORTGN > PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTGN #endif #if PORTHN > PORTN_MAX #undef PORTN_MAX #define PORTN_MAX PORTHN #endif #endif /* DEFS_H */