Changes for page Front I/O

Last modified by Kevin Wiki on 2024/07/07 22:48

From version 7.5
edited by Kevin Wiki
on 2024/07/05 10:29
Change comment: There is no comment for this version
To version 2.2
edited by Kevin Wiki
on 2024/07/04 17:53
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -6,14 +6,19 @@
6 6  
7 7  There is a single cable that controls four parts, each half side of I/O LED and center column of blue LEDs.
8 8  
9 -[[image:xserve io main cable and PCB pinout.drawio.png||alt="xserve io main cable pinout.drawio.png"]]
9 +== Sub-paragraph ==
10 10  
11 -(% class="wikigeneratedid" %)
12 -[[attach:xserve io main cable and PCB pinout.drawio.svg||target="_blank"]]
11 +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
13 13  
14 -(% class="wikigeneratedid" %)
15 -This cable allows us to communicate with 4 chips using two data lines, audio & service switch, case switch and (yet to be documented) compute LEDs
13 +== Sub-paragraph ==
16 16  
15 +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
16 +
17 +=== Sub-sub paragraph ===
18 +
19 +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
20 +
21 +
17 17  = How we got here =
18 18  
19 19  Measure out the ground and power signals by comparing with other chips on board. E.g. we find [SAA1064T] datasheet, locate the GND (Vee) and 5V (Vcc) and measure connectivity (0 ohm resistance) between chip pins and cable pins. This gives us pins GND 2 & 8 and PWR 16 & 22.
... ... @@ -146,124 +146,27 @@
146 146  }
147 147  {{/code}}
148 148  
149 -== SAA1064T data for driving center IO LED stack ==
150 -
151 -Center IO stack is a stack of 24 LED's, 23 blue and 1 green for ethernet activity. These are duplicated next to each other and driven by each their SAA1064T chips. Earlier we found the i2c address and just by playing around figured out that 4 segments of 1 byte binary values are used to set ship register.
152 -
153 -{{code language="C++"}}
154 -void fillColumns() {
155 - Serial.println("filling columns");
156 - Wire.beginTransmission(saa1064);
157 - Wire.write(1);
158 - Wire.write(0x7F); // 127 - 1111111
159 - Wire.write(0x7F); // 127 - 1111111
160 - Wire.write(0x7F); // 127 - 1111111
161 - Wire.write(0x1F); // 31 - 11111
162 - Wire.endTransmission();
163 -
164 - colsFilled = 1;
165 -}
166 -{{/code}}
167 -
168 -(% class="wikigeneratedid" %)
169 -~-~- Here the last byte we send only is 5 bits since we only have 5 LEDs instead of 6 to address (total of 24). Also note that we start the transmission with a single bit. ~-~-
170 -
171 171  == Pinouts voltages from MLB ==
172 172  
173 173  Powered off:
174 174  
175 175  * PWR fail LED - 0.00 V
176 -* UID LED - 4.5V
177 177  * OH/Fan fail LED - 4.72 V
178 178  * NIC1 LED - 0.8 - 2.6 V
179 179  * NIC2 LED - 2.95 V
180 -* UID SW - 2.8V
181 181  * HDD LED - 0.00 V
182 -* Power LED P3V3 - 0.00V
183 183  * Power LED - 0.00 V after unplug grows
184 184  
185 185  Powered on:
186 186  
187 187  * PWR tail LED - 3.47 V
188 -* UID LED - 4.85V
189 189  * OH/Fan failed LED - 5 V
190 190  * NIC 1 LED - 1.2 - 2.9 V
191 191  * NIC 2 LED - 3.2 V
192 -* UID SW - 3V
193 193  * HDD LED - 3 V
194 -* Power LED P3V3 - 3.30V
195 195  * Power LED - 0.87 V
196 196  
197 -= Controlling top I/O LED =
198 198  
199 -On the top row we have the following input/output devices in order from left to right;
200 -
201 -Left side:
202 -
203 -* physical lock
204 -* lock LED
205 -* warning/service button
206 -* warning/service LED
207 -* locate button
208 -* power LED (red & green)
209 -* fan LED (red & green)
210 -* temperature LED (red & green)
211 -* compute LED (unknown)
212 -
213 -Right side:
214 -
215 -* power LED (red & green)
216 -* fan LED (red & green)
217 -* temperature LED (red & green)
218 -* compute LED (unknown)
219 -* lock switch
220 -
221 -Each sides bank of LEDs are driven by each their PCA9554 shift register. The registers represent the following LEDs: (Note that Lock LED is only present for the LEFT side)
222 -
223 -|=(% scope="row" %)Register|1|2|3|4|5|6|7
224 -|=Device|Power LED Green|Power LED Red|Fan LED Green|Fan LED Red|Temperature LED Green|Temperature LED Red|Lock LED
225 -
226 -To control each LED we shift either a 0 to turn off or 1 to turn on. Since each device shares a single red/green LED (power LED green & power LED red) setting both to 1 at the same time will always leave it red. That is when power LED green and power LED red are both enabled, red always takes precedence.
227 -
228 -Use following script to power LEDs one at a time:
229 -
230 -{{code language="c++"}}
231 -#include <PCA9554.h> // Load the PCA9554 Library
232 -
233 -PCA9554 ioCon1(0x24); // Create an object at this address
234 -
235 -uint8_t mapIO = 0b10000000;
236 -
237 -void shiftL() {
238 - mapIO = (mapIO << 1) | ((mapIO & 0x80) >> 7);
239 -}
240 -
241 -void write() {
242 - Serial.println("writing to PCA9554 device");
243 -
244 - for (int i = 0; i < 8; ++i) {
245 - ioCon1.digitalWrite(i, (mapIO & (1 << i)) ? 0 : 1);
246 - }
247 -}
248 -
249 -void setup()
250 -{
251 - Serial.begin(9600);
252 - Serial.println("Setup");
253 -
254 - ioCon1.portMode(ALLOUTPUT);
255 -}
256 -
257 -void loop()
258 -{
259 - write();
260 - shiftL();
261 -
262 - delay(500);
263 -}
264 -{{/code}}
265 -
266 -
267 267  
268 268  )))
269 269  
... ... @@ -285,6 +285,5 @@
285 285  
286 286  
287 287  
288 -
289 289  )))
290 290  )))
xserve io main cable and PCB pinout.drawio.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.kevin
Size
... ... @@ -1,1 +1,0 @@
1 -88.9 KB
Content
xserve io main cable and PCB pinout.drawio.svg
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.kevin
Size
... ... @@ -1,1 +1,0 @@
1 -83.3 KB
Content