/************************************************************************** * * Copyright (C) 2007 Steve Karg * * SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0 * *********************************************************************/ #ifndef IAR2GCC_H #define IAR2GCC_H #if !defined(F_CPU) #define F_CPU (7372800) #endif /* IAR */ #if defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ASM__) #include #include /* BitValue is used alot in GCC examples */ #ifndef _BV #define _BV(bit_num) (1 << (bit_num)) #endif /* inline function */ static inline void _delay_us( uint8_t microseconds) { do { __delay_cycles(F_CPU / 1000000UL); } while (microseconds--); } #if (__VER__ > 700) #define DDA0 DDRA0 #define DDA1 DDRA1 #define DDA2 DDRA2 #define DDA3 DDRA3 #define DDA4 DDRA4 #define DDA5 DDRA5 #define DDA6 DDRA6 #define DDA7 DDRA7 #define DDD0 DDRD0 #define DDD1 DDRD1 #define DDD2 DDRD2 #define DDD3 DDRD3 #define DDD4 DDRD4 #define DDD5 DDRD5 #define DDD6 DDRD6 #define DDD7 DDRD7 #endif #endif /* Input/Output Registers */ #if defined(__GNUC__) #include typedef struct { unsigned char bit0:1; unsigned char bit1:1; unsigned char bit2:1; unsigned char bit3:1; unsigned char bit4:1; unsigned char bit5:1; unsigned char bit6:1; unsigned char bit7:1; } BitRegisterType; #ifndef true #define true 1 #endif #ifndef false #define false 0 #endif #define GPIO_BITREG(port,bitnum) \ ((volatile BitRegisterType*)_SFR_MEM_ADDR(port) \ )->bit ## bitnum #define PINA_Bit0 GPIO_BITREG(PINA,0) #define PINA_Bit1 GPIO_BITREG(PINA,1) #define PINA_Bit2 GPIO_BITREG(PINA,2) #define PINA_Bit3 GPIO_BITREG(PINA,3) #define PINA_Bit4 GPIO_BITREG(PINA,4) #define PINA_Bit5 GPIO_BITREG(PINA,5) #define PINA_Bit6 GPIO_BITREG(PINA,6) #define PINA_Bit7 GPIO_BITREG(PINA,7) #define PORTA_Bit0 GPIO_BITREG(PORTA,0) #define PORTA_Bit1 GPIO_BITREG(PORTA,1) #define PORTA_Bit2 GPIO_BITREG(PORTA,2) #define PORTA_Bit3 GPIO_BITREG(PORTA,3) #define PORTA_Bit4 GPIO_BITREG(PORTA,4) #define PORTA_Bit5 GPIO_BITREG(PORTA,5) #define PORTA_Bit6 GPIO_BITREG(PORTA,6) #define PORTA_Bit7 GPIO_BITREG(PORTA,7) #define PINB_Bit0 GPIO_BITREG(PINB,0) #define PINB_Bit1 GPIO_BITREG(PINB,1) #define PINB_Bit2 GPIO_BITREG(PINB,2) #define PINB_Bit3 GPIO_BITREG(PINB,3) #define PINB_Bit4 GPIO_BITREG(PINB,4) #define PINB_Bit5 GPIO_BITREG(PINB,5) #define PINB_Bit6 GPIO_BITREG(PINB,6) #define PINB_Bit7 GPIO_BITREG(PINB,7) #define PORTB_Bit0 GPIO_BITREG(PORTB,0) #define PORTB_Bit1 GPIO_BITREG(PORTB,1) #define PORTB_Bit2 GPIO_BITREG(PORTB,2) #define PORTB_Bit3 GPIO_BITREG(PORTB,3) #define PORTB_Bit4 GPIO_BITREG(PORTB,4) #define PORTB_Bit5 GPIO_BITREG(PORTB,5) #define PORTB_Bit6 GPIO_BITREG(PORTB,6) #define PORTB_Bit7 GPIO_BITREG(PORTB,7) #define PINC_Bit0 GPIO_BITREG(PINC,0) #define PINC_Bit1 GPIO_BITREG(PINC,1) #define PINC_Bit2 GPIO_BITREG(PINC,2) #define PINC_Bit3 GPIO_BITREG(PINC,3) #define PINC_Bit4 GPIO_BITREG(PINC,4) #define PINC_Bit5 GPIO_BITREG(PINC,5) #define PINC_Bit6 GPIO_BITREG(PINC,6) #define PINC_Bit7 GPIO_BITREG(PINC,7) #define PORTC_Bit0 GPIO_BITREG(PORTC,0) #define PORTC_Bit1 GPIO_BITREG(PORTC,1) #define PORTC_Bit2 GPIO_BITREG(PORTC,2) #define PORTC_Bit3 GPIO_BITREG(PORTC,3) #define PORTC_Bit4 GPIO_BITREG(PORTC,4) #define PORTC_Bit5 GPIO_BITREG(PORTC,5) #define PORTC_Bit6 GPIO_BITREG(PORTC,6) #define PORTC_Bit7 GPIO_BITREG(PORTC,7) #define PIND_Bit0 GPIO_BITREG(PIND,0) #define PIND_Bit1 GPIO_BITREG(PIND,1) #define PIND_Bit2 GPIO_BITREG(PIND,2) #define PIND_Bit3 GPIO_BITREG(PIND,3) #define PIND_Bit4 GPIO_BITREG(PIND,4) #define PIND_Bit5 GPIO_BITREG(PIND,5) #define PIND_Bit6 GPIO_BITREG(PIND,6) #define PIND_Bit7 GPIO_BITREG(PIND,7) #define PORTD_Bit0 GPIO_BITREG(PORTD,0) #define PORTD_Bit1 GPIO_BITREG(PORTD,1) #define PORTD_Bit2 GPIO_BITREG(PORTD,2) #define PORTD_Bit3 GPIO_BITREG(PORTD,3) #define PORTD_Bit4 GPIO_BITREG(PORTD,4) #define PORTD_Bit5 GPIO_BITREG(PORTD,5) #define PORTD_Bit6 GPIO_BITREG(PORTD,6) #define PORTD_Bit7 GPIO_BITREG(PORTD,7) #define GPIOR0_Bit0 GPIO_BITREG(GPIOR0,0) #define GPIOR0_Bit1 GPIO_BITREG(GPIOR0,1) #define GPIOR0_Bit2 GPIO_BITREG(GPIOR0,2) #define GPIOR0_Bit3 GPIO_BITREG(GPIOR0,3) #define GPIOR0_Bit4 GPIO_BITREG(GPIOR0,4) #define GPIOR0_Bit5 GPIO_BITREG(GPIOR0,5) #define GPIOR0_Bit6 GPIO_BITREG(GPIOR0,6) #define GPIOR0_Bit7 GPIO_BITREG(GPIOR0,7) #define GPIOR1_Bit0 GPIO_BITREG(GPIOR1,0) #define GPIOR1_Bit1 GPIO_BITREG(GPIOR1,1) #define GPIOR1_Bit2 GPIO_BITREG(GPIOR1,2) #define GPIOR1_Bit3 GPIO_BITREG(GPIOR1,3) #define GPIOR1_Bit4 GPIO_BITREG(GPIOR1,4) #define GPIOR1_Bit5 GPIO_BITREG(GPIOR1,5) #define GPIOR1_Bit6 GPIO_BITREG(GPIOR1,6) #define GPIOR1_Bit7 GPIO_BITREG(GPIOR1,7) #define GPIOR2_Bit0 GPIO_BITREG(GPIOR2,0) #define GPIOR2_Bit1 GPIO_BITREG(GPIOR2,1) #define GPIOR2_Bit2 GPIO_BITREG(GPIOR2,2) #define GPIOR2_Bit3 GPIO_BITREG(GPIOR2,3) #define GPIOR2_Bit4 GPIO_BITREG(GPIOR2,4) #define GPIOR2_Bit5 GPIO_BITREG(GPIOR2,5) #define GPIOR2_Bit6 GPIO_BITREG(GPIOR2,6) #define GPIOR2_Bit7 GPIO_BITREG(GPIOR2,7) #endif /* Global Interrupts */ #if defined(__GNUC__) #define __enable_interrupt() sei() #define __disable_interrupt() cli() #endif /* Interrupts */ #if defined(__ICCAVR__) #define PRAGMA(x) _Pragma( #x ) #define ISR(vec) PRAGMA( vector=vec ) __interrupt void handler_##vec(void) #endif #if defined(__GNUC__) #include #endif /* Flash */ #if defined(__ICCAVR__) #define FLASH_DECLARE(x) __flash x #endif #if defined(__GNUC__) #define FLASH_DECLARE(x) x __attribute__((__progmem__)) #endif /* EEPROM */ #if defined(__ICCAVR__) #define EEPROM_DECLARE(x) __eeprom x #endif #if defined(__GNUC__) #include #define EEPROM_DECLARE(x) x __attribute__((section (".eeprom"))) #endif /* IAR intrinsic routines */ #if defined(__GNUC__) /* FIXME: intrinsic routines: map to assembler for size/speed */ #define __multiply_unsigned(x,y) ((x)*(y)) /* FIXME: __root means to not optimize or strip */ #define __root #endif #endif