Generic communication interface between the wireless board (mote) and the sensor board. Any kind of sensor board can be connected to the mote using this specification given it provides a SPI peripheral, one input pin with interrupt capability and one digital output. The sensor board must implement a special register set from which all required information can be retrieved. Protocol: http://is.gd/wuQorh Github: http://is.gd/ySj1L9

Dependencies:   mbed-src

Committer:
marcelobarrosalmeida
Date:
Tue Apr 08 16:34:20 2014 +0000
Revision:
1:acdf490d94a7
Adding accel to sensor list

Who changed what in which revision?

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