From 399234677dfc4f593cc1eae90345fa9ce181089e Mon Sep 17 00:00:00 2001 From: Sasha Kovar Date: Fri, 2 May 2025 11:58:24 -1000 Subject: [PATCH] Add Serial/Serial2 begin3 and writeChar --- esp32/builtins.h | 4 ++++ esp32/platform.fs | 18 +++++++++++++++++- site/ESP32forth.html | 4 +++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/esp32/builtins.h b/esp32/builtins.h index 13141d0..8462dbb 100644 --- a/esp32/builtins.h +++ b/esp32/builtins.h @@ -175,10 +175,12 @@ static cell_t ResizeFile(cell_t fd, cell_t size); #define REQUIRED_SERIAL_SUPPORT \ XV(serial, "Serial.begin", SERIAL_BEGIN, Serial.begin(tos); DROP) \ + XV(serial, "Serial.begin3", SERIAL_BEGIN3, Serial.begin(n2, SERIAL_8N1, n1, n0); DROPn(3)) \ XV(serial, "Serial.end", SERIAL_END, Serial.end()) \ XV(serial, "Serial.available", SERIAL_AVAILABLE, PUSH Serial.available()) \ XV(serial, "Serial.readBytes", SERIAL_READ_BYTES, n0 = Serial.readBytes(b1, n0); NIP) \ XV(serial, "Serial.write", SERIAL_WRITE, n0 = Serial.write(b1, n0); NIP) \ + XV(serial, "Serial.writeChar", SERIAL_WRITECHAR, n0 = Serial.write(n0)) \ XV(serial, "Serial.flush", SERIAL_FLUSH, Serial.flush()) \ XV(serial, "Serial.setDebugOutput", SERIAL_DEBUG_OUTPUT, Serial.setDebugOutput(n0); DROP) @@ -187,10 +189,12 @@ static cell_t ResizeFile(cell_t fd, cell_t size); #else # define OPTIONAL_SERIAL2_SUPPORT \ XV(serial, "Serial2.begin", SERIAL2_BEGIN, Serial2.begin(tos); DROP) \ + XV(serial, "Serial2.begin3", SERIAL2_BEGIN3, Serial2.begin(n2, SERIAL_8N1, n1, n0); DROPn(3)) \ XV(serial, "Serial2.end", SERIAL2_END, Serial2.end()) \ XV(serial, "Serial2.available", SERIAL2_AVAILABLE, PUSH Serial2.available()) \ XV(serial, "Serial2.readBytes", SERIAL2_READ_BYTES, n0 = Serial2.readBytes(b1, n0); NIP) \ XV(serial, "Serial2.write", SERIAL2_WRITE, n0 = Serial2.write(b1, n0); NIP) \ + XV(serial, "Serial2.writeChar", SERIAL2_WRITECHAR, n0 = Serial2.write(n0)) \ XV(serial, "Serial2.flush", SERIAL2_FLUSH, Serial2.flush()) \ XV(serial, "Serial2.setDebugOutput", SERIAL2_DEBUG_OUTPUT, Serial2.setDebugOutput(n0); DROP) #endif diff --git a/esp32/platform.fs b/esp32/platform.fs index 3a0f4b8..7735c2c 100644 --- a/esp32/platform.fs +++ b/esp32/platform.fs @@ -40,12 +40,28 @@ also ledc also serial also SPIFFS ( Map Arduino / ESP32 things to shorter names. ) : pin ( n pin# -- ) swap digitalWrite ; : adc ( n -- n ) analogRead ; +: duty ( n n -- ) 255 min 8191 255 */ ledcWrite ; +: freq ( n n -- ) 1000 * 13 ledcAttach drop ; +: tone ( n n -- ) 1000 * ledcWriteTone drop ; ( Basic Ardiuno Constants ) 0 constant LOW 1 constant HIGH + 1 constant INPUT -2 constant OUTPUT +\ 2 constant OUTPUT +\ // Changed OUTPUT from 0x02 to behave the same as Arduino pinMode(pin,OUTPUT) +\ // where you can read the state of pin even when it is set as OUTPUT +3 constant OUTPUT +4 constant PULLUP +5 constant INPUT_PULLUP +8 constant PULLDOWN +9 constant INPUT_PULLDOWN +16 constant OPEN_DRAIN +18 constant OUTPUT_OPEN_DRAIN +192 constant ANALOG + + 2 constant LED ( Startup Setup ) diff --git a/site/ESP32forth.html b/site/ESP32forth.html index 2c1a443..6774c51 100644 --- a/site/ESP32forth.html +++ b/site/ESP32forth.html @@ -352,10 +352,12 @@ REALLOC ( a n -- a | 0 ) System realloc These words are inside the Serial vocabulary.
 Serial.begin ( baud -- )   Start serial port
+Serial.begin3 ( baud rxPin txPin -- )   Start serial port
 Serial.end ( -- )   End serial port
 Serial.available ( -- f )   Is serial data available
 Serial.readBytes ( a n -- n )   Read serial bytes, return number gotten
 Serial.write ( a n -- n )   Write serial bytes
+Serial.writeChar ( c -- n )   Write serial character
 Serial.flush ( -- )   Flush serial buffer
 
@@ -500,6 +502,7 @@ SPIFFS.end ( -- ) SPIFFS.format ( -- f ) SPIFFS.totalBytes ( -- n ) SPIFFS.usedBytes ( -- n ) +SPIFFS.exists ( z -- f ) Test if file exists for path (omitting "/spiffs") like z" /blocks.fb"
WebServer (DEPRECATED)
@@ -1231,4 +1234,3 @@ New variables can be declared in each word and are scoped to that word. Y(MY_WORD, cell_t foo = n0; DROP; char *x = c0; DROP; \ PUSH my_func(foo, x)) \ -