X-Git-Url: http://git.kpe.io/?p=avr_serial_lcd.git;a=blobdiff_plain;f=serial_lcd.h;h=ad4bbc9bdda73f1172e8ea57dbc537e5051ed287;hp=d02e589c13c8ba6e7ee3889d4bb67850f8907fd0;hb=8147823cf64e37f6f43838ffa9e056ea48e30c32;hpb=debfa9107d3c94c1534808fe9ca260b8f4521e30 diff --git a/serial_lcd.h b/serial_lcd.h index d02e589..ad4bbc9 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,64 @@ typedef struct { // CodeVision Compiler #elif defined(__CODEVISIONAVR__) + +#if __CODEVISIONAVR__ >= 2 #include +#else +#include +#endif -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 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 sleep_enable() MCUCR |= (1<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 REGISTER_VAR(V,GNUR,IAR) register V -#define cli() asm("cli") -#define sei() asm("sei") -#define wdt_reset() asm("wdr") +#define ISR(vec) interrupt [ ## vec ## ] void vec ## _handler(void) #else #error Unsupported compiler