// functions void edpInit(void) { // initialize i2c interface and function library i2cInit(); // set i2c bit rate to 30KHz i2cSetBitrate(30); // 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( edpSlaveReceiveService ); // 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( edpSlaveTransmitService ); }
int main(void) { DDRD = 0xff; DDRB = 0xff; DDRA = 0xff; clear(); init(); frame = 0; i2cInit(); i2cSetBitrate(10); i2cSetLocalDeviceAddr(LOCAL_ADDR, TRUE); i2cSetSlaveReceiveHandler( i2cSlaveReceiveService ); i2cSetSlaveTransmitHandler( i2cSlaveTransmitService ); frameDelay = 100; // continuously loop while(1) { // draw(); // updateOffsets(); // frame++; // _delay_ms(frameDelay); } }
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(); } }