BayEOS-Arduino  1.8.0_0.0.4
HW_PIC32MX795F512L.h
1 // *** Hardwarespecific functions ***
3 {
4 }
5 
6 void UTFT::LCD_Writ_Bus(char VH,char VL, byte mode)
7 {
8  switch (mode)
9  {
10  case 1:
11  if (display_serial_mode==SERIAL_4PIN)
12  {
13  if (VH==1)
14  sbi(P_SDA, B_SDA);
15  else
16  cbi(P_SDA, B_SDA);
17  pulse_low(P_SCL, B_SCL);
18  }
19  else
20  {
21  if (VH==1)
22  sbi(P_RS, B_RS);
23  else
24  cbi(P_RS, B_RS);
25  }
26 
27  if (VL & 0x80)
28  sbi(P_SDA, B_SDA);
29  else
30  cbi(P_SDA, B_SDA);
31  pulse_low(P_SCL, B_SCL);
32  if (VL & 0x40)
33  sbi(P_SDA, B_SDA);
34  else
35  cbi(P_SDA, B_SDA);
36  pulse_low(P_SCL, B_SCL);
37  if (VL & 0x20)
38  sbi(P_SDA, B_SDA);
39  else
40  cbi(P_SDA, B_SDA);
41  pulse_low(P_SCL, B_SCL);
42  if (VL & 0x10)
43  sbi(P_SDA, B_SDA);
44  else
45  cbi(P_SDA, B_SDA);
46  pulse_low(P_SCL, B_SCL);
47  if (VL & 0x08)
48  sbi(P_SDA, B_SDA);
49  else
50  cbi(P_SDA, B_SDA);
51  pulse_low(P_SCL, B_SCL);
52  if (VL & 0x04)
53  sbi(P_SDA, B_SDA);
54  else
55  cbi(P_SDA, B_SDA);
56  pulse_low(P_SCL, B_SCL);
57  if (VL & 0x02)
58  sbi(P_SDA, B_SDA);
59  else
60  cbi(P_SDA, B_SDA);
61  pulse_low(P_SCL, B_SCL);
62  if (VL & 0x01)
63  sbi(P_SDA, B_SDA);
64  else
65  cbi(P_SDA, B_SDA);
66  pulse_low(P_SCL, B_SCL);
67  break;
68  case 8:
69  LATECLR = 0xFF;
70  LATESET = VH;
71  *P_WR &= ~B_WR;
72  *P_WR |= B_WR;
73  LATECLR = 0xFF;
74  LATESET = VL;
75  *P_WR &= ~B_WR;
76  *P_WR |= B_WR;
77  break;
78  case 16:
79 #ifdef AQUALED_SHIELD
80  LATACLR = 0xFF;
81  LATASET = VL & 0xFF;
82 #else
83  LATDCLR = 0xFF;
84  LATDSET = VL & 0xFF;
85 #endif
86  LATECLR = 0xFF;
87  LATESET = VH & 0xFF;
88  *P_WR &= ~B_WR;
89  *P_WR |= B_WR;
90  break;
91  case LATCHED_16:
92  asm("nop"); // Mode is unsupported
93  break;
94  }
95 }
96 
97 void UTFT::_set_direction_registers(byte mode)
98 {
99  if (mode!=LATCHED_16)
100  {
101  TRISE=0;
102  if (mode==16)
103 #ifdef AQUALED_SHIELD
104  TRISA=0;
105 #else
106  TRISD=0;
107 #endif
108  }
109  else
110  {
111  asm("nop"); // Mode is unsupported
112  }
113 }
114 
115 void UTFT::_fast_fill_16(int ch, int cl, long pix)
116 {
117  long blocks;
118 
119 #ifdef AQUALED_SHIELD
120  LATACLR = 0xFF;
121  LATASET = cl & 0xFF;
122 #else
123  LATDCLR = 0xFF;
124  LATDSET = cl & 0xFF;
125 #endif
126  LATECLR = 0xFF;
127  LATESET = ch & 0xFF;
128 
129  blocks = pix/16;
130  for (int i=0; i<blocks; i++)
131  {
132  *P_WR &= ~B_WR; *P_WR |= B_WR;
133  *P_WR &= ~B_WR; *P_WR |= B_WR;
134  *P_WR &= ~B_WR; *P_WR |= B_WR;
135  *P_WR &= ~B_WR; *P_WR |= B_WR;
136  *P_WR &= ~B_WR; *P_WR |= B_WR;
137  *P_WR &= ~B_WR; *P_WR |= B_WR;
138  *P_WR &= ~B_WR; *P_WR |= B_WR;
139  *P_WR &= ~B_WR; *P_WR |= B_WR;
140  *P_WR &= ~B_WR; *P_WR |= B_WR;
141  *P_WR &= ~B_WR; *P_WR |= B_WR;
142  *P_WR &= ~B_WR; *P_WR |= B_WR;
143  *P_WR &= ~B_WR; *P_WR |= B_WR;
144  *P_WR &= ~B_WR; *P_WR |= B_WR;
145  *P_WR &= ~B_WR; *P_WR |= B_WR;
146  *P_WR &= ~B_WR; *P_WR |= B_WR;
147  *P_WR &= ~B_WR; *P_WR |= B_WR;
148  }
149  if ((pix % 16) != 0)
150  for (int i=0; i<(pix % 16)+1; i++)
151  {
152  *P_WR &= ~B_WR; *P_WR |= B_WR;
153  }
154 }
155 
156 void UTFT::_fast_fill_8(int ch, long pix)
157 {
158  long blocks;
159 
160  LATECLR = 0xFF;
161  LATESET = ch;
162 
163  blocks = pix/16;
164  for (int i=0; i<blocks; i++)
165  {
166  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
167  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
168  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
169  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
170  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
171  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
172  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
173  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
174  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
175  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
176  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
177  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
178  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
179  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
180  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
181  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
182  }
183  if ((pix % 16) != 0)
184  for (int i=0; i<(pix % 16)+1; i++)
185  {
186  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
187  }
188 }
void _hw_special_init()
Definition: HW_CC3200.h:2