| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630 | /* * pin_defs.h * optiboot helper defining the default pin assignments (LED, SOFT_UART) * for the various chips that are supported.  This also has some ugly macros * for selecting among various UARTs and LED possibilities using command-line * defines like "UART=2 LED=B5" * * Copyright 2013-2015 by Bill Westfield. * Copyright 2010 by Peter Knight. * This software is licensed under version 2 of the Gnu Public Licence. * See optiboot.c for details. *//*------------------------------------------------------------------------ */#if    defined(__AVR_ATmega168__)       \    || defined(__AVR_ATmega168P__)      \    || defined(__AVR_ATmega328__)       \    || defined(__AVR_ATmega328P__)      \    || defined(__AVR_ATmega88)          \    || defined(__AVR_ATmega8__)         \    || defined(__AVR_ATmega88__)/*------------------------------------------------------------------------ *//* * Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, * Duemilanove, Uno, Nano, and many other Ardunio-like boards. */#if !defined(LED)#define LED B5#endif/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTD#define UART_PIN    PIND#define UART_DDR    DDRD#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/* * Handle devices with up to 4 uarts (eg m1280.)  Rather inelegantly. * Note that mega8/m32 still needs special handling, because ubrr is handled * differently. */#if (SOFT_UART == 0)#if UART == 0#if defined(UDR0)# define UART_SRA UCSR0A# define UART_SRB UCSR0B# define UART_SRC UCSR0C# define UART_SRL UBRR0L# define UART_UDR UDR0#elif defined(UDR)# define UART_SRA UCSRA# define UART_SRB UCSRB# define UART_SRC UCSRC# define UART_SRL UBRRL# define UART_UDR UDR#elif defined(LINDAT)# define LIN_UART 1# define UART_SRA UCSRA# define UART_SRB UCSRB# define UART_SRC UCSRC# define UART_SRL UBRRL# define UART_UDR LINDAT#else# error UART == 0, but no UART0 on device#endif#elif UART == 1#if !defined(UDR1)#error UART == 1, but no UART1 on device#endif# define UART_SRA UCSR1A# define UART_SRB UCSR1B# define UART_SRC UCSR1C# define UART_SRL UBRR1L# define UART_UDR UDR1#elif UART == 2#if !defined(UDR2)#error UART == 2, but no UART2 on device#endif# define UART_SRA UCSR2A# define UART_SRB UCSR2B# define UART_SRC UCSR2C# define UART_SRL UBRR2L# define UART_UDR UDR2#elif UART == 3#if !defined(UDR3)#error UART == 3, but no UART3 on device#endif# define UART_SRA UCSR3A# define UART_SRB UCSR3B# define UART_SRC UCSR3C# define UART_SRL UBRR3L# define UART_UDR UDR3#endif#endif //end #if SOFT_UART==0#if    defined(__AVR_ATmega8__)         \    || defined (__AVR_ATmega32__)       \    || defined (__AVR_ATmega16__)  //Name conversion R.Wiersma  #define UCSR0A        UCSRA  #define UDR0          UDR  #define UDRE0         UDRE  #define RXC0          RXC  #define TXC0          TXC  #define FE0           FE  #define TIFR1         TIFR  #define WDTCSR        WDTCR#endif#if    defined (__AVR_ATmega32__)       \    || defined (__AVR_ATmega16__)  #define WDCE          WDTOE#endif/*------------------------------------------------------------------------ *//* Sanguino support (and other 40pin DIP cpus) *//*------------------------------------------------------------------------ *//*------------------------------------------------------------------------ */#if defined(__AVR_ATmega8515__) || defined(__AVR_ATmega162__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B0#endif/* Fix register names */#if defined(__AVR_ATmega8515__)#define UCSR0A  UCSRA#define UDR0    UDR#define UDRE0   UDRE#define RXC0    RXC#define FE0     FE#endif#define TIFR1   TIFR#define WDTCSR  WDTCR/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTD#define UART_PIN    PIND#define UART_DDR    DDRD#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif#if    defined(__AVR_ATmega8535__)              \    || defined(__AVR_ATmega16__)                \    || defined(__AVR_ATmega32__)                \    || defined(__AVR_ATmega164A__)              \    || defined(__AVR_ATmega164P__)              \    || defined(__AVR_ATmega324A__)              \    || defined(__AVR_ATmega324P__)              \    || defined(__AVR_ATmega324PA__)             \    || defined(__AVR_ATmega644__)               \    || defined(__AVR_ATmega644P__)              \    || defined(__AVR_ATmega1284__)              \    || defined(__AVR_ATmega1284P__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B0#endif#if     defined(__AVR_ATmega8535__)     \    ||  defined(__AVR_ATmega16__)       \    ||  defined(__AVR_ATmega32__)/* Fix register names */#define UCSR0A  UCSRA#define UDR0    UDR#define UDRE0   UDRE#define RXC0    RXC#define FE0     FE#define TIFR1   TIFR#define WDTCSR  WDTCR#endif#if defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__)#define WDCE        WDTOE#endif/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTD#define UART_PIN    PIND#define UART_DDR    DDRD#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega324PB__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B0#endif/* Fix missing register names */#define MPCM0   MPCM#define U2X0    U2X#define UPE0    UPE#define DOR0    DOR#define FE0     FE#define UDRE0   UDRE#define TXC0    TXC#define RXC0    RXC#define TXB80   TXB8#define RXB80   RXB8#define UCSZ02  UCSZ2#define TXEN0   TXEN#define RXEN0   RXEN#define UDRIE0  UDRIE#define TXCIE0  TXCIE#define RXCIE0  RXCIE#define UCPOL0  UCPOL#define UCSZ00  UCSZ0#define UCSZ01  UCSZ1#define USBS0   USBS#define UPM00   UPM0#define UPM01   UPM1#define UMSEL00 UMSEL0#define UMSEL01 UMSEL1#define MPCM1   MPCM#define U2X1    U2X#define UPE1    UPE#define DOR1    DOR#define FE1     FE#define UDRE1   UDRE#define TXC1    TXC#define RXC1    RXC#define TXB81   TXB8#define RXB81   RXB8#define UCSZ12  UCSZ2#define TXEN1   TXEN#define RXEN1   RXEN#define UDRIE1  UDRIE#define TXCIE1  TXCIE#define RXCIE1  RXCIE#define UCPOL1  UCPOL#define UCSZ10  UCSZ0#define UCSZ11  UCSZ1#define USBS1   USBS#define UPM10   UPM0#define UPM11   UPM1#define UMSEL10 UMSEL0#define UMSEL11 UMSEL1#define MPCM2   MPCM#define U2X2    U2X#define UPE2    UPE#define DOR2    DOR#define FE2     FE#define UDRE2   UDRE#define TXC2    TXC#define RXC2    RXC#define TXB82   TXB8#define RXB82   RXB8#define UCSZ22  UCSZ2#define TXEN2   TXEN#define RXEN2   RXEN#define UDRIE2  UDRIE#define TXCIE2  TXCIE#define RXCIE2  RXCIE#define UCPOL2  UCPOL#define UCSZ20  UCSZ0#define UCSZ21  UCSZ1#define USBS2   USBS#define UPM20   UPM0#define UPM21   UPM1#define UMSEL20 UMSEL0#define UMSEL21 UMSEL1/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTD#define UART_PIN    PIND#define UART_DDR    DDRD#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B5#endif#define TIFR1 TIFR#define WDTCSR WDTCR//#define MCUSR MCUCSR//#define SPMCR SPMCSR/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ *//* Mega support */#if    defined(__AVR_ATmega640__)       \    || defined(__AVR_ATmega1280__)      \    || defined(__AVR_ATmega128RFA1__)   \    || defined(__AVR_ATmega2560__)/*------------------------------------------------------------------------ *//* Onboard LED is connected to pin PB7 on Arduino Mega */#if !defined(LED)#define LED         B7#endif/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B5#endif/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega169__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B5#endif/* Fix register names */#define UCSR0A UCSRA#define UCSR0B UCSRB#define UCSR0C UCSRC#define UBRR0L UBRRL#define UDR0 UDR#define UDRE0 UDRE#define RXC0 RXC#define FE0 FE#define WDTCSR WDTCR#define U2X0 U2X#define RXEN0 RXEN#define TXEN0 TXEN#define UCSZ00 UCSZ0#define UCSZ01 UCSZ1/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega169P__) || defined(__AVR_ATmega329__) || defined(__AVR_ATmega329P__) \|| defined(__AVR_ATmega3290__) || defined(__AVR_ATmega3290P__) || defined(__AVR_ATmega649__) \|| defined(__AVR_ATmega649P__) || defined(__AVR_ATmega6490__) || defined(__AVR_ATmega6490P__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B5#endif/* Fix register names */#define WDTCSR WDTCR/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B5#endif/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega169__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B5#endif/* Fix register names */#define UCSR0A UCSRA#define UCSR0B UCSRB#define UCSR0C UCSRC#define UBRR0L UBRRL#define UDR0 UDR#define UDRE0 UDRE#define RXC0 RXC#define FE0 FE#define WDTCSR WDTCR#define U2X0 U2X#define RXEN0 RXEN#define TXEN0 TXEN#define UCSZ00 UCSZ0#define UCSZ01 UCSZ1/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega169P__) || defined(__AVR_ATmega329__) || defined(__AVR_ATmega329P__) \|| defined(__AVR_ATmega3290__) || defined(__AVR_ATmega3290P__) || defined(__AVR_ATmega649__) \|| defined(__AVR_ATmega649P__) || defined(__AVR_ATmega6490__) || defined(__AVR_ATmega6490P__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         B5#endif/* Fix register names */#define WDTCSR WDTCR/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTE#define UART_PIN    PINE#define UART_DDR    DDRE#define UART_TX_BIT 1#define UART_RX_BIT 0#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) \|| defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U6__) \|| defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) \|| defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)/*------------------------------------------------------------------------ *//* Fix different register names */#define MPCM0   MPCM1#define U2X0    U2X1#define UPE0    UPE1#define DOR0    DOR1#define FE0     FE1#define UDRE0   UDRE1#define TXC0    TXC1#define RXC0    RXC1#define TXB80   TXB81#define RXB80   RXB81#define UCSZ02  UCSZ12#define TXEN0   TXEN1#define RXEN0   RXEN1#define UDRIE0  UDRIE1#define TXCIE0  TXCIE1#define RXCIE0  RXCIE1#define UCPOL0  UCPOL1#define UCSZ00  UCSZ10#define UCSZ01  UCSZ11#define USBS0   USBS1#define UPM00   UPM10#define UPM01   UPM11#define UMSEL00 UMSEL10#define UMSEL01 UMSEL11/* Ports for soft UART */#if SOFT_UART#define UART_PORT   PORTD#define UART_PIN    PIND#define UART_DDR    DDRD#define UART_TX_BIT 3#define UART_RX_BIT 2#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         D5 // because of Arduino Uno USB-MCU TXLED#endif#endif // AtmegaXYu2/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         C7 // because of Arduino Micro LED_BUILTIN (D13)#endif#endif // AtmegaXYu4/*------------------------------------------------------------------------ */#if defined(__AVR_ATmega32U6__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         C6 // because of PWM (OSC3A)#endif#endif // AtmegaXYu6/*------------------------------------------------------------------------ */#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) \|| defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)/*------------------------------------------------------------------------ */#if !defined(LED)#define LED         C6 // because of PWM (OSC3A)#endif#endif // At90usbXYz6/7#endif // usbmcus/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny1634__)/*------------------------------------------------------------------------ *//* LED is on C0 */#if !defined(LED)#define LED     C0#endif#define TIFR1 TIFR#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 2#define UART_RX_BIT 3#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny841__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED     B2#endif#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 2#define UART_RX_BIT 3#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny441__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B2#endif#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 2#define UART_RX_BIT 3#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny84__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B2#endif#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 1#define UART_RX_BIT 2#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny44__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B2#endif#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 1#define UART_RX_BIT 2#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny85__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B2#endif#if SOFT_UART#define UART_PORT   PORTB#define UART_PIN    PINB#define UART_DDR    DDRB#define UART_TX_BIT 0#define UART_RX_BIT 1#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny45__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B2#endif#if SOFT_UART#define UART_PORT   PORTB#define UART_PIN    PINB#define UART_DDR    DDRB#define UART_TX_BIT 0#define UART_RX_BIT 1#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny861__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B3#endif#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 6#define UART_RX_BIT 7#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny461__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B3#endif#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 6#define UART_RX_BIT 7#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny88__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B5#endif#if SOFT_UART#define UART_PORT   PORTD#define UART_PIN    PIND#define UART_DDR    DDRD#define UART_TX_BIT 6#define UART_RX_BIT 7#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny48__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED   B5#endif#if SOFT_UART#define UART_PORT   PORTD#define UART_PIN    PIND#define UART_DDR    DDRD#define UART_TX_BIT 6#define UART_RX_BIT 7#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny167__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED     A3#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny87__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED     A3#endif#endif/*------------------------------------------------------------------------ */#if defined(__AVR_ATtiny828__)/*------------------------------------------------------------------------ *//* LED is on B2 */#if !defined(LED)#define LED     B0#endif#define UDRE0 UDRE#define FE0 FE#define RXC0 RXC#define UCSZ00 UCSZ0#define UCSZ01 UCSZ1#define TXEN0 TXEN#define RXEN0 RXEN#define U2X0 U2X#if SOFT_UART#define UART_PORT   PORTA#define UART_PIN    PINA#define UART_DDR    DDRA#define UART_TX_BIT 2#define UART_RX_BIT 3#endif#endif/* * A bunch of macros to enable the LED to be specified as "B5" for bit 5 * of port B, and similar. * We define symbols for all the legal combination of port/bit on a chip, * and do pre-processor tests to see if there's a match.  This ends up * being very verbose, but it is pretty easy to generate semi-automatically. * (We wouldn't need this if the preprocessor could do string compares.) */// Symbols for each PortA bit.#define A0 0x100#define A1 0x101#define A2 0x102#define A3 0x103#define A4 0x104#define A5 0x105#define A6 0x106#define A7 0x107// If there is no PORTA on this chip, don't allow these to be used//   (and indicate the error by redefining LED)#if !defined(PORTA)#if LED >= A0 && LED <= A7#undef LED#define LED -1#endif#endif#define B0 0x200#define B1 0x201#define B2 0x202#define B3 0x203#define B4 0x204#define B5 0x205#define B6 0x206#define B7 0x207#if !defined(PORTB)#if LED >= B0 && LED <= B7#undef LED#define LED -1#endif#endif#define C0 0x300#define C1 0x301#define C2 0x302#define C3 0x303#define C4 0x304#define C5 0x305#define C6 0x306#define C7 0x307#if !(defined(PORTC))#if LED >= C0 && LED <= C7#undef LED#define LED -1#endif#endif#define D0 0x400#define D1 0x401#define D2 0x402#define D3 0x403#define D4 0x404#define D5 0x405#define D6 0x406#define D7 0x407#if !(defined(PORTD))#if LED >= D0 && LED <= D7#undef LED#define LED -1#endif#endif#define E0 0x500#define E1 0x501#define E2 0x502#define E3 0x503#define E4 0x504#define E5 0x505#define E6 0x506#define E7 0x507#if !(defined(PORTE))#if LED >= E0 && LED <= E7#undef LED#define LED -1#endif#endif#define F0 0x600#define F1 0x601#define F2 0x602#define F3 0x603#define F4 0x604#define F5 0x605#define F6 0x606#define F7 0x607#if !(defined(PORTF))#if LED >= F0 && LED <= F7#undef LED#define LED -1#endif#endif#define G0 0x700#define G1 0x701#define G2 0x702#define G3 0x703#define G4 0x704#define G5 0x705#define G6 0x706#define G7 0x707#if !defined(PORTG)#if LED >= G0 && LED <= G7#undef LED#define LED -1#endif#endif#define H0 0x800#define H1 0x801#define H2 0x802#define H3 0x803#define H4 0x804#define H5 0x805#define H6 0x806#define H7 0x807#if !(defined(PORTH))#if LED >= H0 && LED <= H7#undef LED#define LED -1#endif#endif#define J0 0xA00#define J1 0xA01#define J2 0xA02#define J3 0xA03#define J4 0xA04#define J5 0xA05#define J6 0xA06#define J7 0xA07#if !(defined(PORTJ))#if LED >= J0 && LED <= J7#undef LED#define LED -1#endif#endif#define K0 0xB00#define K1 0xB01#define K2 0xB02#define K3 0xB03#define K4 0xB04#define K5 0xB05#define K6 0xB06#define K7 0xB07#if !(defined(PORTK))#if LED >= K0 && LED <= K7#undef LED#define LED -1#endif#endif#define L0 0xC00#define L1 0xC01#define L2 0xC02#define L3 0xC03#define L4 0xC04#define L5 0xC05#define L6 0xC06#define L7 0xC07#if !(defined(PORTL))#if LED >= L0 && LED <= L7#undef LED#define LED -1#endif#endif/* * A statement like "#if LED == B0" will evaluate (in the preprocessor) * to #if C0 == B0, and then to #if 0x301 == 0x201 */#if LED == B0#define LED_NAME "B0"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB0#elif LED == B1#define LED_NAME "B1"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB1#elif LED == B2#define LED_NAME "B2"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB2#elif LED == B3#define LED_NAME "B3"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB3#elif LED == B4#define LED_NAME "B4"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB4#elif LED == B5#define LED_NAME "B5"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB5#elif LED == B6#define LED_NAME "B6"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB6#elif LED == B7#define LED_NAME "B7"#undef LED#define LED_DDR     DDRB#define LED_PORT    PORTB#define LED_PIN     PINB#define LED         PINB7#elif LED == C0#define LED_NAME "C0"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC0#elif LED == C1#define LED_NAME "C1"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC1#elif LED == C2#define LED_NAME "C2"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC2#elif LED == C3#define LED_NAME "C3"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC3#elif LED == C4#define LED_NAME "C4"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC4#elif LED == C5#define LED_NAME "C5"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC5#elif LED == C6#define LED_NAME "C6"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC6#elif LED == C7#define LED_NAME "C7"#undef LED#define LED_DDR     DDRC#define LED_PORT    PORTC#define LED_PIN     PINC#define LED         PINC7#elif LED == D0#define LED_NAME "D0"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND0#elif LED == D1#define LED_NAME "D1"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND1#elif LED == D2#define LED_NAME "D2"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND2#elif LED == D3#define LED_NAME "D3"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND3#elif LED == D4#define LED_NAME "D4"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND4#elif LED == D5#define LED_NAME "D5"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND5#elif LED == D6#define LED_NAME "D6"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND6#elif LED == D7#define LED_NAME "D7"#undef LED#define LED_DDR     DDRD#define LED_PORT    PORTD#define LED_PIN     PIND#define LED         PIND7#elif LED == E0#define LED_NAME "E0"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE0#elif LED == E1#define LED_NAME "E1"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE1#elif LED == E2#define LED_NAME "E2"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE2#elif LED == E3#define LED_NAME "E3"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE3#elif LED == E4#define LED_NAME "E4"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE4#elif LED == E5#define LED_NAME "E5"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE5#elif LED == E6#define LED_NAME "E6"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE6#elif LED == E7#define LED_NAME "E7"#undef LED#define LED_DDR     DDRE#define LED_PORT    PORTE#define LED_PIN     PINE#define LED         PINE7#elif LED == F0#define LED_NAME "F0"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF0#elif LED == F1#define LED_NAME "F1"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF1#elif LED == F2#define LED_NAME "F2"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF2#elif LED == F3#define LED_NAME "F3"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF3#elif LED == F4#define LED_NAME "F4"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF4#elif LED == F5#define LED_NAME "F5"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF5#elif LED == F6#define LED_NAME "F6"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF6#elif LED == F7#define LED_NAME "F7"#undef LED#define LED_DDR     DDRF#define LED_PORT    PORTF#define LED_PIN     PINF#define LED         PINF7#elif LED == G0#define LED_NAME "G0"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING0#elif LED == G1#define LED_NAME "G1"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING1#elif LED == G2#define LED_NAME "G2"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING2#elif LED == G3#define LED_NAME "G3"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING3#elif LED == G4#define LED_NAME "G4"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING4#elif LED == G5#define LED_NAME "G5"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING5#elif LED == G6#define LED_NAME "G6"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING6#elif LED == G7#define LED_NAME "G7"#undef LED#define LED_DDR     DDRG#define LED_PORT    PORTG#define LED_PIN     PING#define LED         PING7#elif LED == H0#define LED_NAME "H0"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH0#elif LED == H1#define LED_NAME "H1"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH1#elif LED == H2#define LED_NAME "H2"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH2#elif LED == H3#define LED_NAME "H3"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH3#elif LED == H4#define LED_NAME "H4"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH4#elif LED == H5#define LED_NAME "H5"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH5#elif LED == H6#define LED_NAME "H6"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH6#elif LED == H7#define LED_NAME "H7"#undef LED#define LED_DDR     DDRH#define LED_PORT    PORTH#define LED_PIN     PINH#define LED         PINH7#elif LED == J0#define LED_NAME "J0"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ0#elif LED == J1#define LED_NAME "J1"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ1#elif LED == J2#define LED_NAME "J2"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ2#elif LED == J3#define LED_NAME "J3"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ3#elif LED == J4#define LED_NAME "J4"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ4#elif LED == J5#define LED_NAME "J5"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ5#elif LED == J6#define LED_NAME "J6"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ6#elif LED == J7#define LED_NAME "J7"#undef LED#define LED_DDR     DDRJ#define LED_PORT    PORTJ#define LED_PIN     PINJ#define LED         PINJ7#elif LED == K0#define LED_NAME "K0"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK0#elif LED == K1#define LED_NAME "K1"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK1#elif LED == K2#define LED_NAME "K2"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK2#elif LED == K3#define LED_NAME "K3"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK3#elif LED == K4#define LED_NAME "K4"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK4#elif LED == K5#define LED_NAME "K5"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK5#elif LED == K6#define LED_NAME "K6"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK6#elif LED == K7#define LED_NAME "K7"#undef LED#define LED_DDR     DDRK#define LED_PORT    PORTK#define LED_PIN     PINK#define LED         PINK7#elif LED == L0#define LED_NAME "L0"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL0#elif LED == L1#define LED_NAME "L1"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL1#elif LED == L2#define LED_NAME "L2"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL2#elif LED == L3#define LED_NAME "L3"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL3#elif LED == L4#define LED_NAME "L4"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL4#elif LED == L5#define LED_NAME "L5"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL5#elif LED == L6#define LED_NAME "L6"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL6#elif LED == L7#define LED_NAME "L7"#undef LED#define LED_DDR     DDRL#define LED_PORT    PORTL#define LED_PIN     PINL#define LED         PINL7#elif LED == A0#define LED_NAME "A0"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA0#elif LED == A1#define LED_NAME "A1"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA1#elif LED == A2#define LED_NAME "A2"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA2#elif LED == A3#define LED_NAME "A3"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA3#elif LED == A4#define LED_NAME "A4"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA4#elif LED == A5#define LED_NAME "A5"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA5#elif LED == A6#define LED_NAME "A6"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA6#elif LED == A7#define LED_NAME "A7"#undef LED#define LED_DDR     DDRA#define LED_PORT    PORTA#define LED_PIN     PINA#define LED         PINA7#else// Stop compilation right away, so we don't get more errors.#if LED == -1#error Unrecognized LED name.  Should be like "B5"// Stop compilation right away, so we don't get more errors.#pragma GCC diagnostic warning "-Wfatal-errors"#error Nonexistent LED PORT.  Check datasheet.#endif#pragma GCC diagnostic warning "-Wfatal-errors"#error Unrecognized LED name.  Should be like "B5"#endif#ifdef RS485#include "pins_rs485.h"#endif#if SOFT_UART && defined(SOFTTX) && defined(SOFTRX)#include "pins_softuart.h"#endif
 |