| 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
 
 
  |