📄 comms.lst
字号:
230 3 while(EP0CS & bmEPBUSY);
231 3 i2c_slad = SETUPDAT[2];
232 3 AddrPtr = SETUPDAT[4];
233 3 //EZUSB_WriteI2C(i2c_slad, 0x01, &AddrPtr); //0x01 = length
234 3 //EZUSB_ReadI2C(i2c_slad, 0x01, EP0BUF); //0x01 = length
235 3
236 3 *EP0BUF = ReadSMBUSData(SETUPDAT[2], SETUPDAT[4]);
237 3
238 3 //added for adm1032 test
239 3 //*EP0BUF = ReadSMBUSDataWithExtraClocks(SETUPDAT[2]);
240 3
241 3 //*EP0BUF = TstCntr++;
C51 COMPILER V7.07 COMMS 02/08/2007 14:49:17 PAGE 5
242 3
243 3 EP0BCH = 0;
244 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
245 3 }
246 2 if (SETUPDAT[0] == VR_DOWNLOAD)
247 2 {
248 3 EP0BCH = 0;
249 3 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
250 3 i2c_slad = SETUPDAT[2];
251 3 DataVals[0] = SETUPDAT[4]; //AddrPtr
252 3 DataVals[1] = SETUPDAT[5]; //DataOut
253 3 //EZUSB_WriteI2C(i2c_slad, 0x02, DataVals); //0x02 = length
254 3 WriteSMBUSData(SETUPDAT[2], SETUPDAT[4], SETUPDAT[5]);
255 3 }
256 2 break;
257 2
258 2 case VR_I2C_SMBUS3DATA:
259 2 if (SETUPDAT[0] == VR_UPLOAD)
260 2 {
261 3 while(EP0CS & bmEPBUSY);
262 3 i2c_slad = SETUPDAT[2];
263 3 AddrPtr = SETUPDAT[4];
264 3 //EZUSB_WriteI2C(i2c_slad, 0x01, &AddrPtr); //0x01 = length
265 3 //EZUSB_ReadI2C(i2c_slad, 0x01, EP0BUF); //0x01 = length
266 3
267 3 *EP0BUF = ReadSMBUS3Data(SETUPDAT[2], SETUPDAT[4], SETUPDAT[5]);
268 3
269 3 //added for adm1032 test
270 3 //*EP0BUF = ReadSMBUSDataWithExtraClocks(SETUPDAT[2]);
271 3
272 3 //*EP0BUF = TstCntr++;
273 3
274 3 EP0BCH = 0;
275 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
276 3 }
277 2 if (SETUPDAT[0] == VR_DOWNLOAD)
278 2 {
279 3 EP0BCH = 0;
280 3 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
281 3 i2c_slad = SETUPDAT[2];
282 3 DataVals[0] = SETUPDAT[4]; //AddrPtr
283 3 DataVals[1] = SETUPDAT[5]; //DataOut
284 3 //EZUSB_WriteI2C(i2c_slad, 0x02, DataVals); //0x02 = length
285 3 WriteSMBUS3Data(SETUPDAT[2], SETUPDAT[4], SETUPDAT[5], SETUPDAT[6]);
286 3 }
287 2 break;
288 2
289 2 case VR_I2C_SWITCH:
290 2 if (SETUPDAT[0] == VR_UPLOAD)
291 2 {
292 3 while(EP0CS & bmEPBUSY);
293 3 i2c_slad = SETUPDAT[2];
294 3 //EZUSB_ReadI2C(SETUPDAT[2], 0x01, EP0BUF); //0x01 = length
295 3 *EP0BUF = ReadSWITCHData(SETUPDAT[2]);
296 3 EP0BCH = 0;
297 3 EP0BCL = 1; // Arm endpoint with # bytes to transfer
298 3 }
299 2 if (SETUPDAT[0] == VR_DOWNLOAD)
300 2 {
301 3 EP0BCH = 0;
302 3 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
303 3 i2c_slad = SETUPDAT[2];
C51 COMPILER V7.07 COMMS 02/08/2007 14:49:17 PAGE 6
304 3 //EZUSB_WriteI2C(i2c_slad, 0x01, &SETUPDAT[4]); //0x02 = length
305 3 WriteSWITCHData(SETUPDAT[2], SETUPDAT[4]);
306 3 }
307 2 break;
308 2
309 2 case VR_PORT_ACCESS:
310 2 if (SETUPDAT[0] == VR_UPLOAD)
311 2 {
312 3 while(EP0CS & bmEPBUSY);
313 3 *(EP0BUF+0) = IOA;
314 3 *(EP0BUF+1) = OEA;
315 3 *(EP0BUF+2) = IOB;
316 3 *(EP0BUF+3) = OEB;
317 3 *(EP0BUF+4) = IOD;
318 3 *(EP0BUF+5) = OED;
319 3 EP0BCH = 0;
320 3 EP0BCL = SETUPDAT[6]; // Arm endpoint with # bytes to transfer
321 3 }
322 2 if (SETUPDAT[0] == VR_DOWNLOAD)
323 2 {
324 3 EP0BCH = 0;
325 3 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
326 3
327 3 IOB = SETUPDAT[2];
328 3 OEB = SETUPDAT[4];
329 3 }
330 2 break;
331 2
332 2 case VR_Heater:
333 2 if (SETUPDAT[0] == VR_UPLOAD)
334 2 {
335 3 while(EP0CS & bmEPBUSY);
336 3
337 3 *EP0BUF = Heater1PWM;
338 3 *(EP0BUF+1) = Heater2PWM;
339 3 *(EP0BUF+2) = IOB;
340 3
341 3 EP0BCH = 0;
342 3 EP0BCL = SETUPDAT[6];
343 3 }
344 2 if (SETUPDAT[0] == VR_DOWNLOAD)
345 2 {
346 3 EP0BCH = 0;
347 3 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
348 3
349 3 if(SETUPDAT[2] == 1)
350 3 Heater1PWM = SETUPDAT[4] << 1;
351 3 else
352 3 Heater2PWM = SETUPDAT[4] << 1;
353 3
354 3 EP0BCH = 0;
355 3 EP0BCL = 1;
356 3 }
357 2 break;
358 2
359 2 case VR_ReadBlock:
360 2 if (SETUPDAT[0] == VR_UPLOAD)
361 2 {
362 3 while(EP0CS & bmEPBUSY);
363 3
364 3 ReadBlockData(SETUPDAT[2],SETUPDAT[6],SETUPDAT[4]);
365 3
C51 COMPILER V7.07 COMMS 02/08/2007 14:49:17 PAGE 7
366 3 EP0BCH = 0;
367 3 EP0BCL = SETUPDAT[6];
368 3 }
369 2 /* if (SETUPDAT[0] == VR_DOWNLOAD)
370 2 {
371 2 EP0BCH = 0;
372 2 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
373 2
374 2 DeviceAddress = SETUPDAT[2]; // set device address for block reads
375 2 BlockReadEnabled = TRUE; // enablr block read loop
376 2 DataCollected = TRUE;
377 2
378 2 *EP0BUF = 1;
379 2 EP0BCH = 0;
380 2 EP0BCL = 1;
381 2 } */
382 2 break;
383 2
384 2 }
385 1 return(FALSE);
386 1 }
387
388 void ReadBlockData(BYTE DevAddr, BYTE Num, BYTE StartAddr)
389 {
390 1 BYTE i;
391 1
392 1 for(i=0 ; i<Num ; i++)
393 1 *(EP0BUF+i) = ReadSMBUSData(DevAddr, (BYTE)(StartAddr+i));
394 1 }
395
396 void WriteSMBUSData(BYTE DevAddr, BYTE AddrPtr, BYTE DataOut)
397 {
398 1 while (I2CS & bmSTOP); //wait for previous transaction to end
399 1 I2CS |= bmSTART; //set start
400 1 I2DAT = (DevAddr << 1); //set device address + write bit
401 1 while((I2CS & 1) == 0); //wait for DONE
402 1 I2DAT = AddrPtr; //set address pointer
403 1 while((I2CS & 1) == 0); //wait for DONE
404 1 I2DAT = DataOut; //set data
405 1 while((I2CS & 1) == 0); //wait for DONE
406 1 I2CS |= bmSTOP;
407 1 }
408 void WriteSMBUS3Data(BYTE DevAddr, BYTE AddrPtr, BYTE DataOut, BYTE DataOut2)// Gerard
409 {
410 1 while (I2CS & bmSTOP); //wait for previous transaction to end
411 1 I2CS |= bmSTART; //set start
412 1 I2DAT = (DevAddr << 1); //set device address + write bit
413 1 while((I2CS & 1) == 0); //wait for DONE
414 1 I2DAT = AddrPtr; //set address pointer
415 1 while((I2CS & 1) == 0); //wait for DONE
416 1 I2DAT = DataOut; //set data
417 1 while((I2CS & 1) == 0); //wait for DONE
418 1 I2DAT = DataOut2; //set data
419 1 while((I2CS & 1) == 0); //wait for DONE
420 1 I2CS |= bmSTOP;
421 1 }
422 BYTE ReadSMBUSData(BYTE DevAddr, BYTE AddrPtr)
423 {
424 1 BYTE TempVal;
425 1 WORD i=0;
426 1
427 1 while (I2CS & bmSTOP); //wait for previous transaction to end
C51 COMPILER V7.07 COMMS 02/08/2007 14:49:17 PAGE 8
428 1 I2CS |= bmSTART; //set start
429 1 I2DAT = (DevAddr << 1); //set device address + write bit
430 1 while((I2CS & 1) == 0); //wait for DONE
431 1 I2DAT = AddrPtr; //set address pointer
432 1 while((I2CS & 1) == 0); //wait for DONE
433 1 //I2CS |= bmSTOP; //stop transaction
434 1 //while (I2CS & bmSTOP); //wait for previous transaction to end
435 1 I2CS |= bmSTART; //set start
436 1 I2DAT = (DevAddr << 1) | 1; //set device address + read bit
437 1 while((I2CS & 1) == 0); //wait for DONE
438 1 I2CS |= bmLASTRD; //set last-read bit
439 1 TempVal = I2DAT; //reading this starts the 9 read clocks
440 1 while((I2CS & 1) == 0); //wait for DONE
441 1 I2CS |= bmSTOP; //stop transaction
442 1 return(I2DAT);
443 1 }
444
445 BYTE ReadSMBUS3Data(BYTE DevAddr, BYTE AddrPtr, BYTE DataOut)//Gerard
446 {
447 1 BYTE TempVal;
448 1 WORD i=0;
449 1
450 1 while (I2CS & bmSTOP); //wait for previous transaction to end
451 1 I2CS |= bmSTART; //set start
452 1 I2DAT = (DevAddr << 1); //set device address + write bit
453 1 while((I2CS & 1) == 0); //wait for DONE
454 1 I2DAT = AddrPtr; //set address pointer
455 1 while((I2CS & 1) == 0); //wait for DONE
456 1 I2DAT = DataOut; //set address pointer
457 1 while((I2CS & 1) == 0); //wait for DONE
458 1 //I2CS |= bmSTOP; //stop transaction
459 1 //while (I2CS & bmSTOP); //wait for previous transaction to end
460 1 I2CS |= bmSTART; //set start
461 1 I2DAT = (DevAddr << 1) | 1; //set device address + read bit
462 1 while((I2CS & 1) == 0); //wait for DONE
463 1 I2CS |= bmLASTRD; //set last-read bit
464 1 TempVal = I2DAT; //reading this starts the 9 read clocks
465 1 while((I2CS & 1) == 0); //wait for DONE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -