X-Git-Url: http://git.kpe.io/?p=avr_serial_lcd.git;a=blobdiff_plain;f=serial_lcd.h;h=ae4a58e7bcff48e1eb2b42d05c554bd1acf04200;hp=d02e589c13c8ba6e7ee3889d4bb67850f8907fd0;hb=33392d88dc86a994345ea22358d6bde02fc9c93e;hpb=90c5c097702cec99a4e16e2f390325469bb7bf0a diff --git a/serial_lcd.h b/serial_lcd.h index d02e589..ae4a58e 100644 --- a/serial_lcd.h +++ b/serial_lcd.h @@ -43,13 +43,13 @@ typedef struct unsigned bit6:1; unsigned bit7:1; } _io_reg; +#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)_SFR_MEM_ADDR(rg))->bit##bt #define FLASH_DECLARE(x) const x __attribute__((progmem)) #define NO_INIT_DECLARE(x) x __attribute__((section (".noinit"))) #define INLINE_FUNC_DECLARE(x) inline x __attribute__((always_inline)) #define PGM_READ_BYTE(x) pgm_read_byte(x) #define NOP() asm volatile("nop"); -#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)_SFR_MEM_ADDR(rg))->bit##bt #define REGISTER_VAR(V,GNU,IAR) register volatile V asm(GNU) #define NO_RETURN_FUNC(fn) fn __attribute__((noreturn)); \ fn @@ -104,22 +104,11 @@ typedef __flash unsigned int prog_uint32_t; // Below #include requires ICC v7.16+ #include -typedef struct { - unsigned bit0:1; - unsigned bit1:1; - unsigned bit2:1; - unsigned bit3:1; - unsigned bit4:1; - unsigned bit5:1; - unsigned bit6:1; - unsigned bit7:1; -} _io_reg; #define NOP() asm("nop"); // ImageCraft does not support inline functions #define inline #define INLINE_FUNC_DECLARE(x) x -#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)&rg)->bit##bt #define NO_RETURN_FUNC(fn) fn #define MAIN_FUNC() void main(void) #define MAIN_FUNC_LAST() @@ -136,44 +125,69 @@ typedef struct { // CodeVision Compiler #elif defined(__CODEVISIONAVR__) + #include +#include +#include -typedef struct { - unsigned bit0:1; - unsigned bit1:1; - unsigned bit2:1; - unsigned bit3:1; - unsigned bit4:1; - unsigned bit5:1; - unsigned bit6:1; - unsigned bit7:1; -} _io_reg; +#if defined(_CHIP_ATTINY2313_) || defined(_CHIP_ATTINY2313V_) + #if !defined(WDTCSR) + #define WDTCSR WDTCR + #endif +// Below are bit position definitions for the ATtiny2313 + #define UCSZ0 1 + #define UCSZ1 2 + #define TXEN 3 + #define RXEN 4 + #define DOR 3 + #define FE 4 + #define RXC 7 + #define RXCIE 7 + #define PD1 1 + #define PD2 2 + #define PD3 3 + #define PD4 4 + #define PD5 5 + #define PD6 6 + #define PB7 7 + #define CS02 2 + #define WGM01 1 + #define OCIE0A 0 + #define WDP0 0 + #define WDP1 1 + #define WDP2 2 + #define WDE 3 + #define WDCE 4 + #define WDP3 5 + #define WDRF 3 + #define SM0 4 + #define SM1 6 + #define SE 5 + #define USART_RX_vect USART_RXC + #define TIMER0_COMPA_vect TIM0_COMPA +#endif #define FLASH_DECLARE(x) flash x -#define ASM(a) asm(a) -#define NOP() asm("nop"); +#define ASM(a) #asm(a) +#define NOP() #asm("nop"); +#define cli() #asm("cli") +#define sei() #asm("sei") +#define wdt_reset() #asm("wdr") +#define sleep_cpu() #asm("sleep") +#define REGISTER_VAR(V,GNU,IAR) register V #define inline #define INLINE_FUNC_DECLARE(x) x -#define REGISTER_BIT(rg,bt) ((volatile _io_reg*)&rg)->bit##bt #define NEAR_VAR(x) x #define NO_RETURN_FUNC(fn) fn -#define MAIN_FUNC(fn) fn #define MAIN_FUNC() void main(void) #define MAIN_FUNC_LAST() +#define PGM_READ_BYTE(x) (*(x)) -// 2007/11/29 - ImageCraft states they will support _Pragma() like IAR -// in a "few months". At that point, REGISTER_VAR and NO_INIT_DECLARE can -// be supported. REGISTER_VAR will need to be expanded with 4th variable to -// hold register number for ImageCraft. -// noinit for ImageCraft requires #pragma data:noinit -//#define NO_INIT_DECLARE(x) _Pragma(data:noinit); x; _Pragma(data:data); #define NO_INIT_DECLARE(x) x -//#define REGISTER_VAR(V,GNUR,IAR,ICC) _Pragma(global_register V ## : ## ICC) -#define REGISTER_VAR(V,GNUR,IAR) V +#define ISR(vec) interrupt [ ## vec ## ] void vec ## _handler(void) -#define cli() asm("cli") -#define sei() asm("sei") -#define wdt_reset() asm("wdr") +#define _delay_us(us) delay_us(us) +#define _delay_ms(ms) delay_ms(ms) #else #error Unsupported compiler