blablabla

Dependencies:   MAG3110 MMA8451Q SLCD- TSI USBDevice mbed

Committer:
Osator
Date:
Wed Apr 16 12:20:00 2014 +0000
Revision:
0:339b7abfa147
blablabla

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Osator 0:339b7abfa147 1 #include "SLCD.h"
Osator 0:339b7abfa147 2 #include "LCDconfig.h"
Osator 0:339b7abfa147 3
Osator 0:339b7abfa147 4
Osator 0:339b7abfa147 5 const uint8_t WF_ORDERING_TABLE[ ] = {
Osator 0:339b7abfa147 6 CHAR1a, // LCD81 --- Pin:5 LCDnAddress=51
Osator 0:339b7abfa147 7 CHAR1b, // LCD82 --- Pin:6 LCDnAddress=52
Osator 0:339b7abfa147 8 CHAR2a, // LCD83 --- Pin:7 LCDnAddress=53
Osator 0:339b7abfa147 9 CHAR2b, // LCD84 --- Pin:8 LCDnAddress=54
Osator 0:339b7abfa147 10 CHAR3a, // LCD85 --- Pin:9 LCDnAddress=55
Osator 0:339b7abfa147 11 CHAR3b, // LCD86 --- Pin:10 LCDnAddress=56
Osator 0:339b7abfa147 12 CHAR4a, // LCD87 --- Pin:11 LCDnAddress=57
Osator 0:339b7abfa147 13 CHAR4b, // LCD88 --- Pin:12 LCDnAddress=58
Osator 0:339b7abfa147 14 CHARCOM0, // LCD77 --- Pin:1 LCDnAddress=4D
Osator 0:339b7abfa147 15 CHARCOM1, // LCD78 --- Pin:2 LCDnAddress=4E
Osator 0:339b7abfa147 16 CHARCOM2, // LCD79 --- Pin:3 LCDnAddress=4F
Osator 0:339b7abfa147 17 CHARCOM3, // LCD80 --- Pin:4 LCDnAddress=50
Osator 0:339b7abfa147 18 };
Osator 0:339b7abfa147 19
Osator 0:339b7abfa147 20 const char ASCII_TO_WF_CODIFICATION_TABLE [ ] = {
Osator 0:339b7abfa147 21
Osator 0:339b7abfa147 22 /*
Osator 0:339b7abfa147 23 segA
Osator 0:339b7abfa147 24 ________
Osator 0:339b7abfa147 25 | |
Osator 0:339b7abfa147 26 segF | | segB
Osator 0:339b7abfa147 27 | |
Osator 0:339b7abfa147 28 -segG--
Osator 0:339b7abfa147 29 | |
Osator 0:339b7abfa147 30 segE | | segC
Osator 0:339b7abfa147 31 |________|
Osator 0:339b7abfa147 32 segD
Osator 0:339b7abfa147 33 */
Osator 0:339b7abfa147 34
Osator 0:339b7abfa147 35 ( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 0, offset=0
Osator 0:339b7abfa147 36 (!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = 1, offset=4
Osator 0:339b7abfa147 37 ( SEGD+ SEGE+!SEGF+ SEGG) , (!SEGC+ SEGB+ SEGA) ,//Char = 2, offset=8
Osator 0:339b7abfa147 38 ( SEGD+!SEGE+!SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 3, offset=12
Osator 0:339b7abfa147 39 (!SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = 4, offset=16
Osator 0:339b7abfa147 40 ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = 5, offset=20
Osator 0:339b7abfa147 41 ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = 6, offset=24
Osator 0:339b7abfa147 42 (!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 7, offset=28
Osator 0:339b7abfa147 43 ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 8, offset=32
Osator 0:339b7abfa147 44 ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 9, offset=36
Osator 0:339b7abfa147 45 (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = :, offset=40
Osator 0:339b7abfa147 46 (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = ;, offset=44
Osator 0:339b7abfa147 47 (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = <, offset=48
Osator 0:339b7abfa147 48 ( SEGD+!SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = =, offset=52
Osator 0:339b7abfa147 49 (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = >, offset=56
Osator 0:339b7abfa147 50 (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ?, offset=60
Osator 0:339b7abfa147 51 ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = @, offset=64
Osator 0:339b7abfa147 52 (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = A, offset=68
Osator 0:339b7abfa147 53 ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = B, offset=72
Osator 0:339b7abfa147 54 ( SEGD+ SEGE+ SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = C, offset=76
Osator 0:339b7abfa147 55 ( SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = D, offset=80
Osator 0:339b7abfa147 56 ( SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = E, offset=84
Osator 0:339b7abfa147 57 (!SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = F, offset=88
Osator 0:339b7abfa147 58 ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = G, offset=92
Osator 0:339b7abfa147 59 (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = H, offset=96
Osator 0:339b7abfa147 60 (!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = I, offset=100
Osator 0:339b7abfa147 61 ( SEGD+ SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = J, offset=104
Osator 0:339b7abfa147 62 (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = K, offset=108
Osator 0:339b7abfa147 63 ( SEGD+ SEGE+ SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = L, offset=112
Osator 0:339b7abfa147 64 (!SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = M, offset=116
Osator 0:339b7abfa147 65 (!SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = N, offset=120
Osator 0:339b7abfa147 66 ( SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = O, offset=124
Osator 0:339b7abfa147 67 (!SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+ SEGB+ SEGA) ,//Char = P, offset=128
Osator 0:339b7abfa147 68 ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = Q, offset=132
Osator 0:339b7abfa147 69 (!SEGD+ SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = R, offset=136
Osator 0:339b7abfa147 70 ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = S, offset=140
Osator 0:339b7abfa147 71 ( SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = T, offset=144
Osator 0:339b7abfa147 72 ( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = U, offset=148
Osator 0:339b7abfa147 73 ( SEGD+ SEGE+!SEGF+!SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = V, offset=152
Osator 0:339b7abfa147 74 ( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = W, offset=156
Osator 0:339b7abfa147 75 (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = X, offset=160
Osator 0:339b7abfa147 76 ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = Y, offset=164
Osator 0:339b7abfa147 77 ( SEGD+!SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = Z, offset=168
Osator 0:339b7abfa147 78 ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = [, offset=172
Osator 0:339b7abfa147 79 ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = \, offset=176
Osator 0:339b7abfa147 80 ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ], offset=180
Osator 0:339b7abfa147 81 ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ^, offset=184
Osator 0:339b7abfa147 82 ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = _, offset=188
Osator 0:339b7abfa147 83 ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = `, offset=192
Osator 0:339b7abfa147 84 (!SEGD+!SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = -, offset=196 //LG+ added '-'
Osator 0:339b7abfa147 85 };
Osator 0:339b7abfa147 86
Osator 0:339b7abfa147 87 SLCD::SLCD()
Osator 0:339b7abfa147 88 {
Osator 0:339b7abfa147 89 init();
Osator 0:339b7abfa147 90 CharPosition = 0;
Osator 0:339b7abfa147 91 }
Osator 0:339b7abfa147 92
Osator 0:339b7abfa147 93 void SLCD::init()
Osator 0:339b7abfa147 94 {
Osator 0:339b7abfa147 95 SIM->SCGC5 |= SIM_SCGC5_SLCD_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;
Osator 0:339b7abfa147 96
Osator 0:339b7abfa147 97 // configure pins for LCD operation
Osator 0:339b7abfa147 98 PORTC->PCR[20] = 0x00000000; //VLL2
Osator 0:339b7abfa147 99 PORTC->PCR[21] = 0x00000000; //VLL1
Osator 0:339b7abfa147 100 PORTC->PCR[22] = 0x00000000; //VCAP2
Osator 0:339b7abfa147 101 PORTC->PCR[23] = 0x00000000; //VCAP1
Osator 0:339b7abfa147 102 // Enable IRCLK
Osator 0:339b7abfa147 103 MCG->C1 |= MCG_C1_IRCLKEN_MASK | MCG_C1_IREFSTEN_MASK;
Osator 0:339b7abfa147 104 MCG->C2 |= MCG_C2_IRCS_MASK ; //0 32KHZ internal reference clock; 1= 4MHz irc
Osator 0:339b7abfa147 105
Osator 0:339b7abfa147 106 //Check if the Fast reference has its divide by 2 enabled (default):
Osator 0:339b7abfa147 107 if ((MCG->SC & MCG_SC_FCRDIV_MASK) != 1<<1)
Osator 0:339b7abfa147 108 error("Invalid clock configuration for SLCD\n");
Osator 0:339b7abfa147 109 LCD->GCR = 0x0;
Osator 0:339b7abfa147 110 LCD->AR = 0x0;
Osator 0:339b7abfa147 111
Osator 0:339b7abfa147 112 // LCD configurartion
Osator 0:339b7abfa147 113 LCD->GCR = ( LCD_GCR_RVEN_MASK*_LCDRVEN
Osator 0:339b7abfa147 114 | LCD_GCR_RVTRIM(_LCDRVTRIM) //0-15
Osator 0:339b7abfa147 115 | LCD_GCR_CPSEL_MASK*_LCDCPSEL
Osator 0:339b7abfa147 116 | LCD_GCR_LADJ(_LCDLOADADJUST) //0-3
Osator 0:339b7abfa147 117 | LCD_GCR_VSUPPLY_MASK*_LCDSUPPLY //0-1
Osator 0:339b7abfa147 118 |!LCD_GCR_FDCIEN_MASK
Osator 0:339b7abfa147 119 | LCD_GCR_ALTDIV(1) //divide by something
Osator 0:339b7abfa147 120 |!LCD_GCR_LCDDOZE_MASK
Osator 0:339b7abfa147 121 |!LCD_GCR_LCDSTP_MASK
Osator 0:339b7abfa147 122 |!LCD_GCR_LCDEN_MASK //WILL BE ENABLE ON SUBSEQUENT STEP
Osator 0:339b7abfa147 123 | LCD_GCR_SOURCE_MASK*1
Osator 0:339b7abfa147 124 | LCD_GCR_ALTSOURCE_MASK*0
Osator 0:339b7abfa147 125 | LCD_GCR_LCLK(0) //0-7
Osator 0:339b7abfa147 126 | LCD_GCR_DUTY(_LCDDUTY) //0-7
Osator 0:339b7abfa147 127 );
Osator 0:339b7abfa147 128 uint8_t i;
Osator 0:339b7abfa147 129 uint32_t *p_pen;
Osator 0:339b7abfa147 130 uint8_t pen_offset; // 0 or 1
Osator 0:339b7abfa147 131 uint8_t pen_bit; // 0 to 31
Osator 0:339b7abfa147 132 LCD->PEN[0] = 0x0;
Osator 0:339b7abfa147 133 LCD->PEN[1] = 0x0;
Osator 0:339b7abfa147 134 LCD->BPEN[0] = 0x0;
Osator 0:339b7abfa147 135 LCD->BPEN[1] = 0x0;
Osator 0:339b7abfa147 136 p_pen = (uint32_t *)&LCD->PEN[0];
Osator 0:339b7abfa147 137 for (i=0; i<_LCDUSEDPINS; i++) {
Osator 0:339b7abfa147 138 pen_offset = WF_ORDERING_TABLE[i]/32;
Osator 0:339b7abfa147 139 pen_bit = WF_ORDERING_TABLE[i]%32;
Osator 0:339b7abfa147 140 p_pen[pen_offset] |= 1 << pen_bit;
Osator 0:339b7abfa147 141 if (i>= _LCDFRONTPLANES) { // Pin is a backplane
Osator 0:339b7abfa147 142 p_pen[pen_offset+2] |= 1 << pen_bit; // Enable BPEN
Osator 0:339b7abfa147 143 LCD->WF8B[(uint8_t)WF_ORDERING_TABLE[i]] = 1 << (i - _LCDFRONTPLANES); // fill with 0x01, 0x02, etc
Osator 0:339b7abfa147 144 }
Osator 0:339b7abfa147 145 }
Osator 0:339b7abfa147 146 LCD->GCR |= LCD_GCR_LCDEN_MASK;
Osator 0:339b7abfa147 147 }
Osator 0:339b7abfa147 148
Osator 0:339b7abfa147 149 int SLCD::_putc(int c)
Osator 0:339b7abfa147 150 {
Osator 0:339b7abfa147 151 Write_Char(c);
Osator 0:339b7abfa147 152 return 0;
Osator 0:339b7abfa147 153 }
Osator 0:339b7abfa147 154
Osator 0:339b7abfa147 155 void SLCD::Write_Char (char lbValue)
Osator 0:339b7abfa147 156 {
Osator 0:339b7abfa147 157 if (CharPosition >= _CHARNUM)
Osator 0:339b7abfa147 158 CharPosition = 0;
Osator 0:339b7abfa147 159
Osator 0:339b7abfa147 160 if (lbValue == '.') {
Osator 0:339b7abfa147 161 // Use built-in dot
Osator 0:339b7abfa147 162 DP(CharPosition-1, true);
Osator 0:339b7abfa147 163 return;
Osator 0:339b7abfa147 164 }
Osator 0:339b7abfa147 165
Osator 0:339b7abfa147 166 uint8_t char_val;
Osator 0:339b7abfa147 167 uint8_t temp;
Osator 0:339b7abfa147 168 uint8_t *lbpLCDWF;
Osator 0:339b7abfa147 169 uint8_t lbCounter;
Osator 0:339b7abfa147 170 uint16_t arrayOffset;
Osator 0:339b7abfa147 171 uint8_t position;
Osator 0:339b7abfa147 172
Osator 0:339b7abfa147 173 lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
Osator 0:339b7abfa147 174 /* only ascii character if value not writeable write as @ */
Osator 0:339b7abfa147 175 if (lbValue>='a' && lbValue<='z') {
Osator 0:339b7abfa147 176 lbValue -= 32; // UpperCase
Osator 0:339b7abfa147 177 }
Osator 0:339b7abfa147 178 if (lbValue<ASCCI_TABLE_START || lbValue >ASCCI_TABLE_END) {
Osator 0:339b7abfa147 179 if (lbValue!='-') //LG+
Osator 0:339b7abfa147 180 lbValue = BLANK_CHARACTER; // default value as space
Osator 0:339b7abfa147 181 }
Osator 0:339b7abfa147 182 //if(lbValue=='-') lbValue += (-ASCCI_TABLE_START+3+(196)/4); else //LG+
Osator 0:339b7abfa147 183 if(lbValue=='-') lbValue = 196/4; else //LG+
Osator 0:339b7abfa147 184 lbValue -=ASCCI_TABLE_START; // Remove the offset to search in the ascci table
Osator 0:339b7abfa147 185 arrayOffset = (lbValue * _CHAR_SIZE); // Compensate matrix offset
Osator 0:339b7abfa147 186 // ensure bLCD position is in valid limit
Osator 0:339b7abfa147 187 lbCounter = 0; //number of writings to complete one char
Osator 0:339b7abfa147 188 while (lbCounter<_CHAR_SIZE) {
Osator 0:339b7abfa147 189 position = (CharPosition) *_LCDTYPE + lbCounter;
Osator 0:339b7abfa147 190 temp=0;
Osator 0:339b7abfa147 191 if (lbCounter==1) {
Osator 0:339b7abfa147 192 temp = lbpLCDWF[WF_ORDERING_TABLE[position]] & 0x01;//bit 0 has the special symbol information
Osator 0:339b7abfa147 193 }
Osator 0:339b7abfa147 194 char_val = ASCII_TO_WF_CODIFICATION_TABLE[arrayOffset + lbCounter];
Osator 0:339b7abfa147 195 lbpLCDWF[WF_ORDERING_TABLE[position]] = char_val | temp;
Osator 0:339b7abfa147 196 // if (char_val==0) lbCounter = _CHAR_SIZE; //end of this character
Osator 0:339b7abfa147 197 lbCounter++;
Osator 0:339b7abfa147 198 }
Osator 0:339b7abfa147 199 CharPosition++;
Osator 0:339b7abfa147 200 }
Osator 0:339b7abfa147 201
Osator 0:339b7abfa147 202 void SLCD::Home (void)
Osator 0:339b7abfa147 203 {
Osator 0:339b7abfa147 204 CharPosition = 0;
Osator 0:339b7abfa147 205 }
Osator 0:339b7abfa147 206
Osator 0:339b7abfa147 207 void SLCD::Contrast (uint8_t lbContrast)
Osator 0:339b7abfa147 208 {
Osator 0:339b7abfa147 209 lbContrast &= 0x0F; //Forced to the only values accepted
Osator 0:339b7abfa147 210 LCD->GCR |= LCD_GCR_RVTRIM(lbContrast);
Osator 0:339b7abfa147 211 }
Osator 0:339b7abfa147 212
Osator 0:339b7abfa147 213 void SLCD::clear()
Osator 0:339b7abfa147 214 {
Osator 0:339b7abfa147 215 All_Segments(0);
Osator 0:339b7abfa147 216 }
Osator 0:339b7abfa147 217
Osator 0:339b7abfa147 218 void SLCD::All_Segments (int mode)
Osator 0:339b7abfa147 219 {
Osator 0:339b7abfa147 220 uint8_t lbTotalBytes = _CHARNUM * _LCDTYPE;
Osator 0:339b7abfa147 221 uint8_t lbCounter=0;
Osator 0:339b7abfa147 222 uint8_t *lbpLCDWF;
Osator 0:339b7abfa147 223
Osator 0:339b7abfa147 224 lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
Osator 0:339b7abfa147 225 while (lbCounter < lbTotalBytes) {
Osator 0:339b7abfa147 226 if (mode==1) {
Osator 0:339b7abfa147 227 lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[lbCounter++]]=_ALLON;
Osator 0:339b7abfa147 228 } else {
Osator 0:339b7abfa147 229 lbpLCDWF[WF_ORDERING_TABLE[lbCounter++]]=0;
Osator 0:339b7abfa147 230 }
Osator 0:339b7abfa147 231 }
Osator 0:339b7abfa147 232 }
Osator 0:339b7abfa147 233
Osator 0:339b7abfa147 234 void SLCD::DP(int pos, bool on)
Osator 0:339b7abfa147 235 {
Osator 0:339b7abfa147 236 uint8_t *lbpLCDWF;
Osator 0:339b7abfa147 237 int tableLoc;
Osator 0:339b7abfa147 238 switch (pos) {
Osator 0:339b7abfa147 239 case 0:
Osator 0:339b7abfa147 240 tableLoc = 1;
Osator 0:339b7abfa147 241 break;
Osator 0:339b7abfa147 242 case 1:
Osator 0:339b7abfa147 243 tableLoc = 3;
Osator 0:339b7abfa147 244 break;
Osator 0:339b7abfa147 245 case 2:
Osator 0:339b7abfa147 246 tableLoc = 5;
Osator 0:339b7abfa147 247 break;
Osator 0:339b7abfa147 248 default:
Osator 0:339b7abfa147 249 return; // Bad position
Osator 0:339b7abfa147 250 }
Osator 0:339b7abfa147 251 lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
Osator 0:339b7abfa147 252 if (on) {
Osator 0:339b7abfa147 253 lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[tableLoc]]|=1;
Osator 0:339b7abfa147 254 } else {
Osator 0:339b7abfa147 255 lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[tableLoc]]&=~1;
Osator 0:339b7abfa147 256 }
Osator 0:339b7abfa147 257 }
Osator 0:339b7abfa147 258
Osator 0:339b7abfa147 259 void SLCD::DP1 (int mode)
Osator 0:339b7abfa147 260 {
Osator 0:339b7abfa147 261 DP(0, mode==1);
Osator 0:339b7abfa147 262 }
Osator 0:339b7abfa147 263
Osator 0:339b7abfa147 264 void SLCD::DP2 (int mode)
Osator 0:339b7abfa147 265 {
Osator 0:339b7abfa147 266 DP(1, mode==1);
Osator 0:339b7abfa147 267 }
Osator 0:339b7abfa147 268
Osator 0:339b7abfa147 269 void SLCD::DP3 (int mode)
Osator 0:339b7abfa147 270 {
Osator 0:339b7abfa147 271 DP(2, mode==1);
Osator 0:339b7abfa147 272 }
Osator 0:339b7abfa147 273
Osator 0:339b7abfa147 274 void SLCD::Colon (int mode)
Osator 0:339b7abfa147 275 {
Osator 0:339b7abfa147 276 uint8_t *lbpLCDWF;
Osator 0:339b7abfa147 277 lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
Osator 0:339b7abfa147 278 if (mode==1) {
Osator 0:339b7abfa147 279 lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[7]]|=1;
Osator 0:339b7abfa147 280 } else {
Osator 0:339b7abfa147 281 lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[7]]&=~1;
Osator 0:339b7abfa147 282 }
Osator 0:339b7abfa147 283 }
Osator 0:339b7abfa147 284
Osator 0:339b7abfa147 285 void SLCD::blink(int blink)
Osator 0:339b7abfa147 286 {
Osator 0:339b7abfa147 287 if (( blink > 7) || (blink < 0))
Osator 0:339b7abfa147 288 LCD->AR &= ~LCD_AR_BLINK_MASK;
Osator 0:339b7abfa147 289 else
Osator 0:339b7abfa147 290 LCD->AR |= LCD_AR_BLINK_MASK | blink;
Osator 0:339b7abfa147 291 }
Osator 0:339b7abfa147 292
Osator 0:339b7abfa147 293 void SLCD::deepsleepEnable(bool enable)
Osator 0:339b7abfa147 294 {
Osator 0:339b7abfa147 295 MCG->C1 &= ~MCG_C1_IREFSTEN_MASK;
Osator 0:339b7abfa147 296 MCG->C1 |= enable << MCG_C1_IREFSTEN_SHIFT;
Osator 0:339b7abfa147 297 LCD->GCR &= ~LCD_GCR_LCDSTP_MASK;
Osator 0:339b7abfa147 298 LCD->GCR |= (!enable) << LCD_GCR_LCDSTP_SHIFT;
Osator 0:339b7abfa147 299 }