void in() { const char *s = "abcdef"; showByte((byte_pointer) s, sizeof(s)); int a = 1; int b = 1; int c = a ^ b; printf("%d", c); int arr[] = { 1, 2, 3, 4, 5, 6 }; reverse_array(arr, 6); int i; for (i = 0; i < 6; i++) { printf("%d", arr[i]); } printf("\n--show int--\n"); showInt(100); }
// slave operations void i2cSlaveReceiveService(u08 receiveDataLength, u08* receiveData) { u08 i; // this function will run when a master somewhere else on the bus // addresses us and wishes to write data to us showByte(*receiveData); cbi(PORTB, PB6); // copy the received data to a local buffer for(i=0; i<receiveDataLength; i++) { localBuffer[i] = *receiveData++; } localBufferLength = receiveDataLength; }
u08 i2cSlaveTransmitService(u08 transmitDataLengthMax, u08* transmitData) { u08 i; // this function will run when a master somewhere else on the bus // addresses us and wishes to read data from us showByte(*transmitData); cbi(PORTB, PB7); // copy the local buffer to the transmit buffer for(i=0; i<localBufferLength; i++) { *transmitData++ = localBuffer[i]; } localBuffer[0]++; return localBufferLength; }
void i2cTest(void) { u08 c=0; showByte(0x55); // initialize i2c function library i2cInit(); // set local device address and allow response to general call i2cSetLocalDeviceAddr(LOCAL_ADDR, TRUE); // set the Slave Receive Handler function // (this function will run whenever a master somewhere else on the bus // writes data to us as a slave) i2cSetSlaveReceiveHandler( i2cSlaveReceiveService ); // set the Slave Transmit Handler function // (this function will run whenever a master somewhere else on the bus // attempts to read data from us as a slave) i2cSetSlaveTransmitHandler( i2cSlaveTransmitService ); timerPause(500); showByte(0xAA); while(1) { rprintf("Command>"); while(!c) uartReceiveByte(&c); switch(c) { case 's': rprintf("Send: "); // get string from terminal localBufferLength = 0; c = 0; while((c != 0x0D) && (localBufferLength < 0x20)) { while(!uartReceiveByte(&c)); localBuffer[localBufferLength++] = c; uartSendByte(c); } // switch CR to NULL to terminate string localBuffer[localBufferLength-1] = 0; // send string over I2C i2cMasterSend(TARGET_ADDR, localBufferLength, localBuffer); //i2cMasterSendNI(TARGET_ADDR, localBufferLength, localBuffer); rprintfCRLF(); break; case 'r': rprintf("Receive: "); // receive string over I2C i2cMasterReceive(TARGET_ADDR, 0x10, localBuffer); //i2cMasterReceiveNI(TARGET_ADDR, 0x10, localBuffer); // format buffer localBuffer[0x10] = 0; rprintfStr(localBuffer); rprintfCRLF(); break; case 'm': testI2cMemory(); break; default: rprintf("Unknown Command!"); break; } c = 0; rprintfCRLF(); } }
void showPointer(void *x) { showByte((byte_pointer) &x, sizeof(x)); }
void showFloat(float x) { showByte((byte_pointer) &x, sizeof(x)); }
void showInt(int x) { showByte((byte_pointer) &x, sizeof(x)); }