Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: ulcd_demo ulcd_accel internet_clock 4180_Final_Project ... more
Fork of 4DGL-uLCD-SE by
Diff: uLCD_4DGL_main.cpp
- Revision:
- 4:74df7fc26fef
- Parent:
- 2:edae99e4abe7
- Child:
- 5:8936798c19a3
--- a/uLCD_4DGL_main.cpp Mon Nov 18 03:05:40 2013 +0000
+++ b/uLCD_4DGL_main.cpp Wed Nov 20 03:25:53 2013 +0000
@@ -64,7 +64,7 @@
{
_cmd.putc(c);
- wait_ms(1);
+ wait_ms(1); //mbed is too fast for LCD at high baud rates in long commands
#if DEBUGMODE
pc.printf(" Char sent : 0x%02X\n",c);
@@ -73,6 +73,18 @@
}
//******************************************************************************************************
+void uLCD_4DGL :: writeBYTEfast(char c) // send a BYTE command to screen
+{
+
+ _cmd.putc(c);
+ //wait_ms(0.0); //mbed is too fast for LCD at high baud rates - but not in some commands
+
+#if DEBUGMODE
+ pc.printf(" Char sent : 0x%02X\n",c);
+#endif
+
+}
+//******************************************************************************************************
void uLCD_4DGL :: freeBUFFER(void) // Clear serial buffer before writing command
{
@@ -90,8 +102,12 @@
int i, resp = 0;
freeBUFFER();
writeBYTE(0xFF);
- for (i = 0; i < number; i++) writeBYTE(command[i]); // send command to serial port
-
+ for (i = 0; i < number; i++) {
+ if (i<16)
+ writeBYTEfast(command[i]); // send command to serial port
+ else
+ writeBYTE(command[i]); // send command to serial port but slower
+ }
while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
if (_cmd.readable()) resp = _cmd.getc(); // read response if any
switch (resp) {
@@ -134,8 +150,12 @@
int i, resp = 0;
freeBUFFER();
writeBYTE(0x00); //command has a null prefix byte
- for (i = 0; i < number; i++) writeBYTE(command[i]); // send command to serial port
-
+ for (i = 0; i < number; i++) {
+ if (i<16)
+ writeBYTEfast(command[i]); // send command to serial port
+ else
+ writeBYTE(command[i]); // send command to serial port
+ }
while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
if (_cmd.readable()) resp = _cmd.getc(); // read response if any
switch (resp) {
@@ -215,8 +235,7 @@
newbaud = BAUD_4800;
break;
case 9600 :
- newbaud = char(BAUD_9600 >>8);
- newbaud = char(BAUD_9600 % 256);
+ newbaud = BAUD_9600;
break;
case 14400 :
newbaud = BAUD_14400;
