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.
Fork of 4DGL-uLCD-SE by
Revision 4:74df7fc26fef, committed 2013-11-20
- Comitter:
- 4180_1
- Date:
- Wed Nov 20 03:25:53 2013 +0000
- Parent:
- 3:9ba47197d94f
- Child:
- 5:8936798c19a3
- Commit message:
- ver1.3
Changed in this revision
--- a/uLCD_4DGL.h Mon Nov 18 03:05:40 2013 +0000
+++ b/uLCD_4DGL.h Wed Nov 20 03:25:53 2013 +0000
@@ -26,7 +26,7 @@
#endif
// Common WAIT value in millisecond
-#define TEMPO 0.1
+#define TEMPO 0.05
// 4DGL Functions values
#define AUTOBAUD '\x55'
@@ -301,6 +301,7 @@
void freeBUFFER (void);
void writeBYTE (char);
+ void writeBYTEfast (char);
int writeCOMMAND(char *, int);
int writeCOMMANDnull(char *, int);
int readVERSION (char *, int);
@@ -316,3 +317,4 @@
+
--- a/uLCD_4DGL_Graphics.cpp Mon Nov 18 03:05:40 2013 +0000
+++ b/uLCD_4DGL_Graphics.cpp Wed Nov 20 03:25:53 2013 +0000
@@ -205,12 +205,13 @@
writeBYTE(w & 0xFF);
writeBYTE((h >> 8) & 0xFF);
writeBYTE(h & 0xFF);
+ wait_ms(1);
for (int i=0; i<w*h; i++) {
red5 = (colors[i] >> (16 + 3)) & 0x1F; // get red on 5 bits
green6 = (colors[i] >> (8 + 2)) & 0x3F; // get green on 6 bits
blue5 = (colors[i] >> (0 + 3)) & 0x1F; // get blue on 5 bits
- writeBYTE(((red5 << 3) + (green6 >> 3)) & 0xFF); // first part of 16 bits color
- writeBYTE(((green6 << 5) + (blue5 >> 0)) & 0xFF); // second part of 16 bits color
+ writeBYTEfast(((red5 << 3) + (green6 >> 3)) & 0xFF); // first part of 16 bits color
+ writeBYTEfast(((green6 << 5) + (blue5 >> 0)) & 0xFF); // second part of 16 bits color
}
int resp=0;
while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
@@ -305,3 +306,4 @@
writeCOMMAND(command, 2);
}
+
--- 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;
