From 2a3a8e90a6d321690e5f1fb1bd323425203a95e0 Mon Sep 17 00:00:00 2001 From: serisman Date: Sun, 12 Feb 2023 16:17:22 -0600 Subject: [PATCH 1/3] Allow inclusion of Hardware Serial by menu item --- ch55xduino/ch55x/boards.txt | 33 +++++++++++++++++++ ch55xduino/ch55x/cores/ch55xduino/Arduino.h | 6 ++-- .../ch55x/cores/ch55xduino/HardwareSerial.h | 8 +++-- .../ch55x/cores/ch55xduino/HardwareSerial0.c | 23 ++++++------- .../cores/ch55xduino/HardwareSerial0ISR.c | 7 ++-- .../ch55x/cores/ch55xduino/HardwareSerial1.c | 8 +++-- .../cores/ch55xduino/HardwareSerial1ISR.c | 4 +-- .../cores/ch55xduino/genericPrintSelection.h | 8 +++++ .../cores/ch55xduino/genericPrintSerial0.c | 3 +- .../ch55xduino/genericPrintSerial0Float.c | 3 +- .../cores/ch55xduino/genericPrintSerial1.c | 3 +- .../ch55xduino/genericPrintSerial1Float.c | 3 +- ch55xduino/ch55x/cores/ch55xduino/main.c | 8 +++-- ch55xduino/ch55x/platform.txt | 11 ++++--- 14 files changed, 92 insertions(+), 36 deletions(-) diff --git a/ch55xduino/ch55x/boards.txt b/ch55xduino/ch55x/boards.txt index 510f8e69..788259c1 100644 --- a/ch55xduino/ch55x/boards.txt +++ b/ch55xduino/ch55x/boards.txt @@ -3,6 +3,7 @@ menu.usb_settings=USB Settings menu.upload_method=Upload method menu.clock=Clock Source +menu.uart=Hardware Serial ############################################################## ch552.name=CH552 Board @@ -34,6 +35,15 @@ ch552.build.mcu=CH552 ch552.upload.use_1200bps_touch=true ch552.upload.wait_for_upload_port=false +## Hardware UART Settings +ch552.menu.uart.nouart=No UART +ch552.menu.uart.uart0=UART0 +ch552.menu.uart.uart0.build.uart_flags=-DUART0 +ch552.menu.uart.uart1=UART1 +ch552.menu.uart.uart1.build.uart_flags=-DUART1 +ch552.menu.uart.uart0_uart1=UART0 & UART1 +ch552.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 + ## USB Memory Settings ## ---------------------------------------------- ch552.menu.usb_settings.usbcdc=Default CDC @@ -98,6 +108,11 @@ ch551.build.mcu=CH551 ch551.upload.use_1200bps_touch=true ch551.upload.wait_for_upload_port=false +## Hardware UART Settings +ch551.menu.uart.nouart=No UART +ch551.menu.uart.uart0=UART0 +ch551.menu.uart.uart0.build.uart_flags=-DUART0 + ## USB Memory Settings ## ---------------------------------------------- ch551.menu.usb_settings.usbcdc=Default CDC @@ -153,6 +168,15 @@ ch559.build.mcu=CH559 ch559.upload.use_1200bps_touch=true ch559.upload.wait_for_upload_port=false +## Hardware UART Settings +ch559.menu.uart.nouart=No UART +ch559.menu.uart.uart0=UART0 +ch559.menu.uart.uart0.build.uart_flags=-DUART0 +ch559.menu.uart.uart1=UART1 +ch559.menu.uart.uart1.build.uart_flags=-DUART1 +ch559.menu.uart.uart0_uart1=UART0 & UART1 +ch559.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 + ## USB Memory Settings ## ---------------------------------------------- ch559.menu.usb_settings.usbcdc=Default CDC @@ -200,6 +224,15 @@ ch549.build.mcu=CH549 ch549.upload.use_1200bps_touch=true ch549.upload.wait_for_upload_port=false +## Hardware UART Settings +ch549.menu.uart.nouart=No UART +ch549.menu.uart.uart0=UART0 +ch549.menu.uart.uart0.build.uart_flags=-DUART0 +ch549.menu.uart.uart1=UART1 +ch549.menu.uart.uart1.build.uart_flags=-DUART1 +ch549.menu.uart.uart0_uart1=UART0 & UART1 +ch549.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 + ## USB Memory Settings ## ---------------------------------------------- ch549.menu.usb_settings.usbcdc=Default CDC diff --git a/ch55xduino/ch55x/cores/ch55xduino/Arduino.h b/ch55xduino/ch55x/cores/ch55xduino/Arduino.h index e361dc29..247b0993 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/Arduino.h +++ b/ch55xduino/ch55x/cores/ch55xduino/Arduino.h @@ -284,7 +284,7 @@ char USBSerial_read(); #define USBSerial_println_fd(P,Q) ( Print_print_fd(USBSerial_write,(P),(Q) ) + Print_println(USBSerial_write) ) #define USBSerial_println_c(P) ( (USBSerial_write(P)) + Print_println(USBSerial_write) ) - +#if defined(UART0) #define Serial0_print_s(P) ( Print_print_s(Serial0_write,(P)) ) #define Serial0_print_sn(P,Q) ( Print_print_sn(Serial0_write,(P),(Q)) ) #define Serial0_print_i(P) ( Print_print_i(Serial0_write,(P)) ) @@ -305,8 +305,9 @@ char USBSerial_read(); #define Serial0_println_f(P) ( Print_print_f(Serial0_write,(P)) + Print_println(Serial0_write) ) #define Serial0_println_fd(P,Q) ( Print_print_fd(Serial0_write,(P),(Q) ) + Print_println(Serial0_write) ) #define Serial0_println_c(P) ( (Serial0_write(P)) + Print_println(Serial0_write) ) +#endif - +#if defined(UART1) #define Serial1_print_s(P) ( Print_print_s(Serial1_write,(P)) ) #define Serial1_print_sn(P,Q) ( Print_print_sn(Serial1_write,(P),(Q)) ) #define Serial1_print_i(P) ( Print_print_i(Serial1_write,(P)) ) @@ -327,6 +328,7 @@ char USBSerial_read(); #define Serial1_println_f(P) ( Print_print_f(Serial1_write,(P)) + Print_println(Serial1_write) ) #define Serial1_println_fd(P,Q) ( Print_print_fd(Serial1_write,(P),(Q) ) + Print_println(Serial1_write) ) #define Serial1_println_c(P) ( (Serial1_write(P)) + Print_println(Serial1_write) ) +#endif //10K lifecycle DataFlash access on CH551/CH552. #define eeprom_write_byte(ADDR,VAL) { DPL=(VAL);DPH=(ADDR);eeprom_write_byte_2_params_DPTR(); } diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h index 1afa57a3..b838f27c 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h @@ -5,10 +5,9 @@ #include #include "include/ch5xx.h" +#if defined(UART0) #define SERIAL0_TX_BUFFER_SIZE 16 #define SERIAL0_RX_BUFFER_SIZE 16 -#define SERIAL1_TX_BUFFER_SIZE 16 -#define SERIAL1_RX_BUFFER_SIZE 16 #define UART0_FLG_SENDING (1<<0) @@ -24,7 +23,11 @@ void Serial0_end(void); void uart0IntRxHandler(); void uart0IntTxHandler(); +#endif +#if defined(UART1) +#define SERIAL1_TX_BUFFER_SIZE 16 +#define SERIAL1_RX_BUFFER_SIZE 16 uint8_t Serial1(void); void Serial1_begin(unsigned long baud); @@ -38,5 +41,6 @@ void Serial1_end(void); void uart1IntRxHandler(); void uart1IntTxHandler(); +#endif #endif diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c index 4d9df03f..9a9a9dd6 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c @@ -1,7 +1,7 @@ /* created by Deqing Sun for use with CH55xduino */ - +#if defined(UART0) #include "HardwareSerial.h" __xdata unsigned char serial0Initialized; @@ -25,7 +25,7 @@ void Serial0_begin(unsigned long baud){ uint32_t x; uint8_t x2; - + x = 10 * F_CPU / baud / 16; //Make sure it doesn't overflow when baudrate is changed, default 9600 x2 = ((uint16_t)x) % 10; x /= 10; @@ -38,16 +38,16 @@ void Serial0_begin(unsigned long baud){ RCLK = 0; //UART0 receive clk TCLK = 0; //UART0 send clk PCON |= SMOD; - + TMOD = TMOD & ~ bT1_GATE & ~ bT1_CT & ~ MASK_T1_MOD | bT1_M1; //0X20,Timer1 as 8 bit autoload timer T2MOD = T2MOD | bTMR_CLK | bT1_CLK; //Timer1 clk selection. trade off: bTMR_CLK is low, will make Uart0 not accurate. bTMR_CLK is high, make T2 timeout is short, multiple timeout must be allowed in 1st edge, as reset may take long TH1 = 0-x; //baud/12 is real rate TR1 = 1; //start timer1 TI = 0; REN = 1; //Enable serial 0 receive - + ES = 1; //Enable serial 0 interrupt - + serial0Initialized = 1; } @@ -61,22 +61,22 @@ uint8_t Serial0_write(uint8_t SendDat) if (interruptOn) EA = 1; return 1; } - + uint8_t nextHeadPos = ((uint8_t)(uart0_tx_buffer_head + 1)) % SERIAL0_TX_BUFFER_SIZE; - + uint16_t waitWriteCount=0; while ((nextHeadPos == uart0_tx_buffer_tail) ){ //wait max 100ms or discard if (interruptOn) EA = 1; waitWriteCount++; - delayMicroseconds(5); + delayMicroseconds(5); if (waitWriteCount>=20000) return 0; } Transmit_Uart0_Buf[uart0_tx_buffer_head]=SendDat; - + uart0_tx_buffer_head = nextHeadPos; - + if (interruptOn) EA = 1; - + return 1; } @@ -98,3 +98,4 @@ uint8_t Serial0_read(void){ } return 0; } +#endif \ No newline at end of file diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c index ac5ccbe4..23dbde40 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c @@ -1,7 +1,7 @@ /* created by Deqing Sun for use with CH55xduino */ - +#if defined(UART0) #include "HardwareSerial.h" __xdata uint8_t Receive_Uart0_Buf[SERIAL0_RX_BUFFER_SIZE]; //arduino style serial buffer @@ -14,7 +14,7 @@ volatile __bit uart0_flag_sending=0; void uart0IntRxHandler(){ uint8_t nextHead = (uart0_rx_buffer_head + 1) % SERIAL0_RX_BUFFER_SIZE; - + if (nextHead != uart0_rx_buffer_tail) { Receive_Uart0_Buf[uart0_rx_buffer_head] = SBUF; uart0_rx_buffer_head = nextHead; @@ -32,5 +32,4 @@ void uart0IntTxHandler(){ } } } - - +#endif diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c index 55d6b6d9..75d6bce8 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c @@ -1,3 +1,4 @@ +#if defined(UART1) #include "HardwareSerial.h" __xdata unsigned char serial1Initialized; @@ -18,7 +19,7 @@ uint8_t Serial1(void){ } void Serial1_begin(unsigned long baud){ - + #if defined(CH551) || defined(CH552) U1SM0 = 0; U1SMOD = 1; //use mode 1 for serial 1 @@ -60,7 +61,7 @@ uint8_t Serial1_write(uint8_t SendDat) { uint8_t interruptOn = EA; EA = 0; - + if ( (uart1_tx_buffer_head == uart1_tx_buffer_tail) && (uart1_flag_sending==0) ){ //start to send uart1_flag_sending = 1; #if defined(CH551) || defined(CH552) @@ -86,7 +87,7 @@ uint8_t Serial1_write(uint8_t SendDat) Transmit_Uart1_Buf[uart1_tx_buffer_head]=SendDat; uart1_tx_buffer_head = nextHeadPos; - + if (interruptOn) EA = 1; return 1; @@ -110,3 +111,4 @@ uint8_t Serial1_read(void){ } return 0; } +#endif diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c index da92598b..a4f89618 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c @@ -1,3 +1,4 @@ +#if defined(UART1) #include "HardwareSerial.h" __xdata uint8_t Receive_Uart1_Buf[SERIAL1_RX_BUFFER_SIZE]; //arduino style serial buffer @@ -40,5 +41,4 @@ void uart1IntTxHandler(){ } } } - - +#endif diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h index 769f69bf..0b61c90b 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h @@ -13,6 +13,7 @@ void USBSerial_print_sn_func(char * s, __xdata uint8_t size); void USBSerial_print_f_func(float f); void USBSerial_print_fd_func(float f, __xdata uint8_t digits); +#if defined(UART0) void Serial0_print_i_func(long i); void Serial0_print_ib_func(long i, __xdata uint8_t base); void Serial0_print_u_func(unsigned long u); @@ -21,7 +22,9 @@ void Serial0_print_s_func(char * s); void Serial0_print_sn_func(char * s, __xdata uint8_t size); void Serial0_print_f_func(float f); void Serial0_print_fd_func(float f, __xdata uint8_t digits); +#endif +#if defined(UART1) void Serial1_print_i_func(long i); void Serial1_print_ib_func(long i, __xdata uint8_t base); void Serial1_print_u_func(unsigned long u); @@ -30,6 +33,7 @@ void Serial1_print_s_func(char * s); void Serial1_print_sn_func(char * s, __xdata uint8_t size); void Serial1_print_f_func(float f); void Serial1_print_fd_func(float f, __xdata uint8_t digits); +#endif void printNothing(); @@ -67,6 +71,7 @@ void printNothing(); ) #define USBSerial_println(...) {USBSerial_print(__VA_ARGS__);Print_println(USBSerial_write);} +#if defined(UART0) #define Serial0_print(...) SERIAL0_SELECT(__VA_ARGS__)(__VA_ARGS__) #define SERIAL0_SELECT(...) CONCAT(SERIAL0_SELECT_, NARG(__VA_ARGS__))(__VA_ARGS__) #define SERIAL0_SELECT_0() printNothing @@ -99,7 +104,9 @@ void printNothing(); unsigned long: _Generic((_2), default: Serial0_print_ub_func) \ ) #define Serial0_println(...) {Serial0_print(__VA_ARGS__);Print_println(Serial0_write);} +#endif +#if defined(UART1) #define Serial1_print(...) SERIAL1_SELECT(__VA_ARGS__)(__VA_ARGS__) #define SERIAL1_SELECT(...) CONCAT(SERIAL1_SELECT_, NARG(__VA_ARGS__))(__VA_ARGS__) #define SERIAL1_SELECT_0() printNothing @@ -132,6 +139,7 @@ void printNothing(); unsigned long: _Generic((_2), default: Serial1_print_ub_func) \ ) #define Serial1_println(...) {Serial1_print(__VA_ARGS__);Print_println(Serial1_write);} +#endif #define CONCAT(X, Y) CONCAT_(X, Y) diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c index 77fcec1f..f25233d7 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c @@ -2,7 +2,7 @@ created by Deqing Sun for use with CH55xduino need SDCC 13402 or higher version */ - +#if defined(UART0) #include "Arduino.h" void Serial0_print_i_func(long i) { @@ -23,3 +23,4 @@ void Serial0_print_s_func(char * s) { void Serial0_print_sn_func(char * s, __xdata uint8_t size) { Print_print_sn(Serial0_write, s, size); } +#endif \ No newline at end of file diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c index 3f666092..82c859eb 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c @@ -3,7 +3,7 @@ need SDCC 13402 or higher version float has a separate file to avoid unnecessary linking */ - +#if defined(UART0) #include "Arduino.h" void Serial0_print_f_func(float f) { @@ -13,3 +13,4 @@ void Serial0_print_f_func(float f) { void Serial0_print_fd_func(float f, __xdata uint8_t digits) { Print_print_fd(Serial0_write, f, digits); } +#endif diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c index 82e16d18..c2b11ef8 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c @@ -2,7 +2,7 @@ created by Deqing Sun for use with CH55xduino need SDCC 13402 or higher version */ - +#if defined(UART1) #include "Arduino.h" void Serial1_print_i_func(long i) { @@ -23,3 +23,4 @@ void Serial1_print_s_func(char * s) { void Serial1_print_sn_func(char * s, __xdata uint8_t size) { Print_print_sn(Serial1_write, s, size); } +#endif \ No newline at end of file diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c index 4bf4d7ed..5116e9b2 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c @@ -3,7 +3,7 @@ need SDCC 13402 or higher version float has a separate file to avoid unnecessary linking */ - +#if defined(UART1) #include "Arduino.h" void Serial1_print_f_func(float f) { @@ -13,3 +13,4 @@ void Serial1_print_f_func(float f) { void Serial1_print_fd_func(float f, __xdata uint8_t digits) { Print_print_fd(Serial1_write, f, digits); } +#endif diff --git a/ch55xduino/ch55x/cores/ch55xduino/main.c b/ch55xduino/ch55x/cores/ch55xduino/main.c index ad91ac79..940dafef 100755 --- a/ch55xduino/ch55x/cores/ch55xduino/main.c +++ b/ch55xduino/ch55x/cores/ch55xduino/main.c @@ -37,10 +37,11 @@ __idata __at (0x0C) volatile uint8_t timer0_overflow_count_5th_byte = 0; void Timer0Interrupt(void) __interrupt (INT_NO_TMR0) __using(1); //located in wiring.c, using register bank 1 +#if defined(UART0) void Uart0_ISR(void) __interrupt (INT_NO_UART0) { if (RI){ - uart0IntRxHandler(); + uart0IntRxHandler(); RI =0; } if (TI){ @@ -48,7 +49,9 @@ void Uart0_ISR(void) __interrupt (INT_NO_UART0) TI =0; } } +#endif +#if defined(UART1) void Uart1_ISR(void) __interrupt (INT_NO_UART1) { #if defined(CH551) || defined(CH552) @@ -82,6 +85,7 @@ void Uart1_ISR(void) __interrupt (INT_NO_UART1) } #endif } +#endif typedef void (*voidFuncPtr)(void); extern __xdata voidFuncPtr intFunc[]; @@ -130,5 +134,3 @@ unsigned char _sdcc_external_startup (void) __nonbanked { return 0; } - - diff --git a/ch55xduino/ch55x/platform.txt b/ch55xduino/ch55x/platform.txt index 0c95e5f1..d5e9a0eb 100644 --- a/ch55xduino/ch55x/platform.txt +++ b/ch55xduino/ch55x/platform.txt @@ -78,6 +78,7 @@ compiler.systemincludes="-I{compiler.syslibs.stdlib.path}/include" # This can be overridden in boards.txt build.extra_flags= +build.uart_flags= # These can be overridden in platform.local.txt compiler.c.extra_flags= @@ -92,13 +93,13 @@ compiler.elf2hex.extra_flags= # -------------------- ## Compile c files (re1) -recipe.c.o.pattern="{compiler.wrapper.path}/{compiler.c.wrapper}" "{compiler.path}/{compiler.c.cmd}" "{source_file}" "{object_file}" re1 {compiler.c.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} {compiler.systemincludes} +recipe.c.o.pattern="{compiler.wrapper.path}/{compiler.c.wrapper}" "{compiler.path}/{compiler.c.cmd}" "{source_file}" "{object_file}" re1 {compiler.c.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.uart_flags} {includes} {compiler.systemincludes} ## Compile c++ files (re2) -recipe.cpp.o.pattern="{compiler.wrapper.path}/{compiler.cpp.wrapper}" "{compiler.path}/{compiler.cpp.cmd}" "{source_file}" "{object_file}" re2 {compiler.cpp.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} {compiler.systemincludes} +recipe.cpp.o.pattern="{compiler.wrapper.path}/{compiler.cpp.wrapper}" "{compiler.path}/{compiler.cpp.cmd}" "{source_file}" "{object_file}" re2 {compiler.cpp.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.uart_flags} {includes} {compiler.systemincludes} ##FIXME Compile S files (re3) -recipe.S.o.pattern="{compiler.path}/{compiler.c.cmd}" re3 {compiler.S.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" +recipe.S.o.pattern="{compiler.path}/{compiler.c.cmd}" re3 {compiler.S.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.uart_flags} {includes} "{source_file}" -o "{object_file}" ## Create archives (re4) # archive_file_path is needed for backwards compatibility with IDE 1.6.5 or older, IDE 1.6.6 or newer overrides this value @@ -125,9 +126,9 @@ recipe.size.regex.data=^(?:\s+EXTERNAL RAM)\s+0x[A-Fa-f0-9]+\s+0x[A-Fa-f0-9]+\s+ ## Preprocessor (re11, re12) preproc.includes.flags=-M -MG -MP -recipe.preproc.includes="{compiler.path.wrapper}/{compiler.cpp.wrapper}" "{compiler.path}/{compiler.cpp.cmd}" re11 {compiler.cpp.flags} {preproc.includes.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" +recipe.preproc.includes="{compiler.path.wrapper}/{compiler.cpp.wrapper}" "{compiler.path}/{compiler.cpp.cmd}" re11 {compiler.cpp.flags} {preproc.includes.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.uart_flags} {includes} "{source_file}" preproc.macros.flags=-E -MC -recipe.preproc.macros="{compiler.wrapper.path}/{compiler.cpp.cmd}.sh" "{compiler.path}/{compiler.cpp.cmd}" "{source_file}" "{preprocessed_file_path}" re12 {compiler.cpp.flags} {preproc.macros.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} {compiler.systemincludes} +recipe.preproc.macros="{compiler.wrapper.path}/{compiler.cpp.cmd}.sh" "{compiler.path}/{compiler.cpp.cmd}" "{source_file}" "{preprocessed_file_path}" re12 {compiler.cpp.flags} {preproc.macros.flags} -mmcs51 -D{build.mcu} -DF_CPU={build.f_cpu} -DF_EXT_OSC={build.f_oscillator_external} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.uart_flags} {includes} {compiler.systemincludes} # vnproch55x From aacd73323808d2b3065389f87718050ab87afc0f Mon Sep 17 00:00:00 2001 From: serisman Date: Wed, 15 Feb 2023 23:58:42 -0600 Subject: [PATCH 2/3] Move 'No UART' to the end so UART0 is the default. --- ch55xduino/ch55x/boards.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ch55xduino/ch55x/boards.txt b/ch55xduino/ch55x/boards.txt index 788259c1..de968a1c 100644 --- a/ch55xduino/ch55x/boards.txt +++ b/ch55xduino/ch55x/boards.txt @@ -36,13 +36,13 @@ ch552.upload.use_1200bps_touch=true ch552.upload.wait_for_upload_port=false ## Hardware UART Settings -ch552.menu.uart.nouart=No UART ch552.menu.uart.uart0=UART0 ch552.menu.uart.uart0.build.uart_flags=-DUART0 ch552.menu.uart.uart1=UART1 ch552.menu.uart.uart1.build.uart_flags=-DUART1 ch552.menu.uart.uart0_uart1=UART0 & UART1 ch552.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 +ch552.menu.uart.nouart=No UART ## USB Memory Settings ## ---------------------------------------------- @@ -109,9 +109,9 @@ ch551.upload.use_1200bps_touch=true ch551.upload.wait_for_upload_port=false ## Hardware UART Settings -ch551.menu.uart.nouart=No UART ch551.menu.uart.uart0=UART0 ch551.menu.uart.uart0.build.uart_flags=-DUART0 +ch551.menu.uart.nouart=No UART ## USB Memory Settings ## ---------------------------------------------- @@ -169,13 +169,13 @@ ch559.upload.use_1200bps_touch=true ch559.upload.wait_for_upload_port=false ## Hardware UART Settings -ch559.menu.uart.nouart=No UART ch559.menu.uart.uart0=UART0 ch559.menu.uart.uart0.build.uart_flags=-DUART0 ch559.menu.uart.uart1=UART1 ch559.menu.uart.uart1.build.uart_flags=-DUART1 ch559.menu.uart.uart0_uart1=UART0 & UART1 ch559.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 +ch559.menu.uart.nouart=No UART ## USB Memory Settings ## ---------------------------------------------- @@ -225,13 +225,13 @@ ch549.upload.use_1200bps_touch=true ch549.upload.wait_for_upload_port=false ## Hardware UART Settings -ch549.menu.uart.nouart=No UART ch549.menu.uart.uart0=UART0 ch549.menu.uart.uart0.build.uart_flags=-DUART0 ch549.menu.uart.uart1=UART1 ch549.menu.uart.uart1.build.uart_flags=-DUART1 ch549.menu.uart.uart0_uart1=UART0 & UART1 ch549.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 +ch549.menu.uart.nouart=No UART ## USB Memory Settings ## ---------------------------------------------- From 87bfee1780a972a910b7a7a9343d6073b50e16ce Mon Sep 17 00:00:00 2001 From: serisman Date: Thu, 16 Feb 2023 18:02:27 -0600 Subject: [PATCH 3/3] Reverse UARTx to NO_UARTx logic --- ch55xduino/ch55x/boards.txt | 27 ++++++++++--------- ch55xduino/ch55x/cores/ch55xduino/Arduino.h | 4 +-- .../ch55x/cores/ch55xduino/HardwareSerial.h | 4 +-- .../ch55x/cores/ch55xduino/HardwareSerial0.c | 2 +- .../cores/ch55xduino/HardwareSerial0ISR.c | 2 +- .../ch55x/cores/ch55xduino/HardwareSerial1.c | 2 +- .../cores/ch55xduino/HardwareSerial1ISR.c | 2 +- .../cores/ch55xduino/genericPrintSelection.h | 8 +++--- .../cores/ch55xduino/genericPrintSerial0.c | 2 +- .../ch55xduino/genericPrintSerial0Float.c | 2 +- .../cores/ch55xduino/genericPrintSerial1.c | 2 +- .../ch55xduino/genericPrintSerial1Float.c | 2 +- ch55xduino/ch55x/cores/ch55xduino/main.c | 4 +-- 13 files changed, 32 insertions(+), 31 deletions(-) diff --git a/ch55xduino/ch55x/boards.txt b/ch55xduino/ch55x/boards.txt index de968a1c..00e76a05 100644 --- a/ch55xduino/ch55x/boards.txt +++ b/ch55xduino/ch55x/boards.txt @@ -36,13 +36,13 @@ ch552.upload.use_1200bps_touch=true ch552.upload.wait_for_upload_port=false ## Hardware UART Settings +ch552.menu.uart.uart0_uart1=UART0 & UART1 ch552.menu.uart.uart0=UART0 -ch552.menu.uart.uart0.build.uart_flags=-DUART0 +ch552.menu.uart.uart0.build.uart_flags=-DNO_UART1 ch552.menu.uart.uart1=UART1 -ch552.menu.uart.uart1.build.uart_flags=-DUART1 -ch552.menu.uart.uart0_uart1=UART0 & UART1 -ch552.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 +ch552.menu.uart.uart1.build.uart_flags=-DNO_UART0 ch552.menu.uart.nouart=No UART +ch552.menu.uart.nouart.build.uart_flags=-DNO_UART0 -DNO_UART1 ## USB Memory Settings ## ---------------------------------------------- @@ -110,8 +110,9 @@ ch551.upload.wait_for_upload_port=false ## Hardware UART Settings ch551.menu.uart.uart0=UART0 -ch551.menu.uart.uart0.build.uart_flags=-DUART0 +ch551.menu.uart.uart0.build.uart_flags=-DNO_UART1 ch551.menu.uart.nouart=No UART +ch551.menu.uart.nouart.build.uart_flags=-DNO_UART0 -DNO_UART1 ## USB Memory Settings ## ---------------------------------------------- @@ -169,13 +170,13 @@ ch559.upload.use_1200bps_touch=true ch559.upload.wait_for_upload_port=false ## Hardware UART Settings +ch559.menu.uart.uart0_uart1=UART0 & UART1 ch559.menu.uart.uart0=UART0 -ch559.menu.uart.uart0.build.uart_flags=-DUART0 +ch559.menu.uart.uart0.build.uart_flags=-DNO_UART1 ch559.menu.uart.uart1=UART1 -ch559.menu.uart.uart1.build.uart_flags=-DUART1 -ch559.menu.uart.uart0_uart1=UART0 & UART1 -ch559.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 +ch559.menu.uart.uart1.build.uart_flags=-DNO_UART0 ch559.menu.uart.nouart=No UART +ch559.menu.uart.nouart.build.uart_flags=-DNO_UART0 -DNO_UART1 ## USB Memory Settings ## ---------------------------------------------- @@ -225,13 +226,13 @@ ch549.upload.use_1200bps_touch=true ch549.upload.wait_for_upload_port=false ## Hardware UART Settings +ch549.menu.uart.uart0_uart1=UART0 & UART1 ch549.menu.uart.uart0=UART0 -ch549.menu.uart.uart0.build.uart_flags=-DUART0 +ch549.menu.uart.uart0.build.uart_flags=-DNO_UART1 ch549.menu.uart.uart1=UART1 -ch549.menu.uart.uart1.build.uart_flags=-DUART1 -ch549.menu.uart.uart0_uart1=UART0 & UART1 -ch549.menu.uart.uart0_uart1.build.uart_flags=-DUART0 -DUART1 +ch549.menu.uart.uart1.build.uart_flags=-DNO_UART0 ch549.menu.uart.nouart=No UART +ch549.menu.uart.nouart.build.uart_flags=-DNO_UART0 -DNO_UART1 ## USB Memory Settings ## ---------------------------------------------- diff --git a/ch55xduino/ch55x/cores/ch55xduino/Arduino.h b/ch55xduino/ch55x/cores/ch55xduino/Arduino.h index 247b0993..6b0baaa6 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/Arduino.h +++ b/ch55xduino/ch55x/cores/ch55xduino/Arduino.h @@ -284,7 +284,7 @@ char USBSerial_read(); #define USBSerial_println_fd(P,Q) ( Print_print_fd(USBSerial_write,(P),(Q) ) + Print_println(USBSerial_write) ) #define USBSerial_println_c(P) ( (USBSerial_write(P)) + Print_println(USBSerial_write) ) -#if defined(UART0) +#if !defined(NO_UART0) #define Serial0_print_s(P) ( Print_print_s(Serial0_write,(P)) ) #define Serial0_print_sn(P,Q) ( Print_print_sn(Serial0_write,(P),(Q)) ) #define Serial0_print_i(P) ( Print_print_i(Serial0_write,(P)) ) @@ -307,7 +307,7 @@ char USBSerial_read(); #define Serial0_println_c(P) ( (Serial0_write(P)) + Print_println(Serial0_write) ) #endif -#if defined(UART1) +#if !defined(NO_UART1) #define Serial1_print_s(P) ( Print_print_s(Serial1_write,(P)) ) #define Serial1_print_sn(P,Q) ( Print_print_sn(Serial1_write,(P),(Q)) ) #define Serial1_print_i(P) ( Print_print_i(Serial1_write,(P)) ) diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h index b838f27c..396b86ff 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial.h @@ -5,7 +5,7 @@ #include #include "include/ch5xx.h" -#if defined(UART0) +#if !defined(NO_UART0) #define SERIAL0_TX_BUFFER_SIZE 16 #define SERIAL0_RX_BUFFER_SIZE 16 @@ -25,7 +25,7 @@ void uart0IntRxHandler(); void uart0IntTxHandler(); #endif -#if defined(UART1) +#if !defined(NO_UART1) #define SERIAL1_TX_BUFFER_SIZE 16 #define SERIAL1_RX_BUFFER_SIZE 16 diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c index 9a9a9dd6..21e01d0f 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0.c @@ -1,7 +1,7 @@ /* created by Deqing Sun for use with CH55xduino */ -#if defined(UART0) +#if !defined(NO_UART0) #include "HardwareSerial.h" __xdata unsigned char serial0Initialized; diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c index 23dbde40..8f1e6ef3 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial0ISR.c @@ -1,7 +1,7 @@ /* created by Deqing Sun for use with CH55xduino */ -#if defined(UART0) +#if !defined(NO_UART0) #include "HardwareSerial.h" __xdata uint8_t Receive_Uart0_Buf[SERIAL0_RX_BUFFER_SIZE]; //arduino style serial buffer diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c index 75d6bce8..fa778842 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1.c @@ -1,4 +1,4 @@ -#if defined(UART1) +#if !defined(NO_UART1) #include "HardwareSerial.h" __xdata unsigned char serial1Initialized; diff --git a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c index a4f89618..b905dcd1 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c +++ b/ch55xduino/ch55x/cores/ch55xduino/HardwareSerial1ISR.c @@ -1,4 +1,4 @@ -#if defined(UART1) +#if !defined(NO_UART1) #include "HardwareSerial.h" __xdata uint8_t Receive_Uart1_Buf[SERIAL1_RX_BUFFER_SIZE]; //arduino style serial buffer diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h index 0b61c90b..2af2849a 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSelection.h @@ -13,7 +13,7 @@ void USBSerial_print_sn_func(char * s, __xdata uint8_t size); void USBSerial_print_f_func(float f); void USBSerial_print_fd_func(float f, __xdata uint8_t digits); -#if defined(UART0) +#if !defined(NO_UART0) void Serial0_print_i_func(long i); void Serial0_print_ib_func(long i, __xdata uint8_t base); void Serial0_print_u_func(unsigned long u); @@ -24,7 +24,7 @@ void Serial0_print_f_func(float f); void Serial0_print_fd_func(float f, __xdata uint8_t digits); #endif -#if defined(UART1) +#if !defined(NO_UART1) void Serial1_print_i_func(long i); void Serial1_print_ib_func(long i, __xdata uint8_t base); void Serial1_print_u_func(unsigned long u); @@ -71,7 +71,7 @@ void printNothing(); ) #define USBSerial_println(...) {USBSerial_print(__VA_ARGS__);Print_println(USBSerial_write);} -#if defined(UART0) +#if !defined(NO_UART0) #define Serial0_print(...) SERIAL0_SELECT(__VA_ARGS__)(__VA_ARGS__) #define SERIAL0_SELECT(...) CONCAT(SERIAL0_SELECT_, NARG(__VA_ARGS__))(__VA_ARGS__) #define SERIAL0_SELECT_0() printNothing @@ -106,7 +106,7 @@ void printNothing(); #define Serial0_println(...) {Serial0_print(__VA_ARGS__);Print_println(Serial0_write);} #endif -#if defined(UART1) +#if !defined(NO_UART1) #define Serial1_print(...) SERIAL1_SELECT(__VA_ARGS__)(__VA_ARGS__) #define SERIAL1_SELECT(...) CONCAT(SERIAL1_SELECT_, NARG(__VA_ARGS__))(__VA_ARGS__) #define SERIAL1_SELECT_0() printNothing diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c index f25233d7..3434dd40 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0.c @@ -2,7 +2,7 @@ created by Deqing Sun for use with CH55xduino need SDCC 13402 or higher version */ -#if defined(UART0) +#if !defined(NO_UART0) #include "Arduino.h" void Serial0_print_i_func(long i) { diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c index 82c859eb..58f5d505 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial0Float.c @@ -3,7 +3,7 @@ need SDCC 13402 or higher version float has a separate file to avoid unnecessary linking */ -#if defined(UART0) +#if !defined(NO_UART0) #include "Arduino.h" void Serial0_print_f_func(float f) { diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c index c2b11ef8..e4851ae2 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1.c @@ -2,7 +2,7 @@ created by Deqing Sun for use with CH55xduino need SDCC 13402 or higher version */ -#if defined(UART1) +#if !defined(NO_UART1) #include "Arduino.h" void Serial1_print_i_func(long i) { diff --git a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c index 5116e9b2..0917b084 100644 --- a/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c +++ b/ch55xduino/ch55x/cores/ch55xduino/genericPrintSerial1Float.c @@ -3,7 +3,7 @@ need SDCC 13402 or higher version float has a separate file to avoid unnecessary linking */ -#if defined(UART1) +#if !defined(NO_UART1) #include "Arduino.h" void Serial1_print_f_func(float f) { diff --git a/ch55xduino/ch55x/cores/ch55xduino/main.c b/ch55xduino/ch55x/cores/ch55xduino/main.c index 940dafef..5546db97 100755 --- a/ch55xduino/ch55x/cores/ch55xduino/main.c +++ b/ch55xduino/ch55x/cores/ch55xduino/main.c @@ -37,7 +37,7 @@ __idata __at (0x0C) volatile uint8_t timer0_overflow_count_5th_byte = 0; void Timer0Interrupt(void) __interrupt (INT_NO_TMR0) __using(1); //located in wiring.c, using register bank 1 -#if defined(UART0) +#if !defined(NO_UART0) void Uart0_ISR(void) __interrupt (INT_NO_UART0) { if (RI){ @@ -51,7 +51,7 @@ void Uart0_ISR(void) __interrupt (INT_NO_UART0) } #endif -#if defined(UART1) +#if !defined(NO_UART1) void Uart1_ISR(void) __interrupt (INT_NO_UART1) { #if defined(CH551) || defined(CH552)