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
|