int main(void) { initRP6M256(); initLCD(); writeString_P_WIFI("\n\nRP6 CONTROL M256 I2C Master Example Program!\n"); // IMPORTANT: I2CTWI_initMaster(100); // Initialize the TWI Module for Master operation // with 100kHz SCL Frequency // Register the event handlers: I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); setLEDs(0b1111); // Turn all LEDs on! showScreenLCD("################", "################"); mSleep(500); showScreenLCD("I2C-Master", "Example Program 1"); mSleep(1000); // --------------------------------------- setLEDs(0b0000); // All LEDs off! uint8_t counter = 1; // The command and register used here - in the next example we define them all. #define CMD_SET_ACS_POWER 9 #define ACS_PWR_MED 2 // Set ACS to medium power (you can see the ACS value changes in the raw registers): I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_MED); while(true) { // Increment a counter and send value to LEDs of the // Slave Controller: setLEDs(0b0001); showScreenLCD("INCREMENT", "COUNTER"); setCursorPosLCD(1, 11); writeIntegerLengthLCD(counter, DEC, 3); I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, 3, counter); counter++; // Read and display ALL registers of the slave controller: setLEDs(0b0010); readAllRegisters(); // Read the light sensors: setLEDs(0b0100); readLightSensors(); mSleep(250); } return 0; }
int main(void) { initRP6M256(); initLCD(); writeString_P_WIFI("\n\nRP6 CONTROL M32 I2C Master Example Program!\n"); writeString_P_WIFI("\nMoving...\n"); // --------------------------------------- WDT_setRequestHandler(watchDogRequest); // --------------------------------------- // Init TWI Interface: I2CTWI_initMaster(100); I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady); I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); setLEDs(0b1111); showScreenLCD("################", "################"); mSleep(1000); showScreenLCD("I2C-Master", "Movement..."); mSleep(1000); setLEDs(0b0000); // --------------------------------------- I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_MED); I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true); I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true); while(true) { setLEDs(0b1001); showScreenLCD("MOVE", "FWD"); writeString_P_WIFI("\nMoving Forwards...\n"); move(70, FWD, DIST_MM(300), BLOCKING); setLEDs(0b1000); showScreenLCD("ROTATE", "LEFT"); writeString_P_WIFI("\nRotating Left...\n"); rotate(60, LEFT, 180, BLOCKING); setLEDs(0b1001); showScreenLCD("MOVE", "FWD"); writeString_P_WIFI("\nMoving Forwards...\n"); move(70, FWD, DIST_MM(300), BLOCKING); setLEDs(0b0001); showScreenLCD("ROTATE", "RIGHT"); writeString_P_WIFI("\nRotating Right...\n"); rotate(60, RIGHT, 180, BLOCKING); } return 0; }
int main(void) { initRP6M256(); initLCD(); // --------------------------------------- WDT_setRequestHandler(watchDogRequest); // --------------------------------------- I2CTWI_initMaster(100); I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady); I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); setLEDs(0b1111); mSleep(1000); setLEDs(0b0000); // --------------------------------------- // Setup ACS power: I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_OFF); // Enable Watchdog for Interrupt requests: I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true); // Enable timed watchdog requests: I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true); startStopwatch1(); startStopwatch2(); startStopwatch3(); while(true) { /* mSleep(600); warnForObs(); mSleep(600); task_checkINT(); mSleep(600); light_detection(); mSleep(600); task_I2CTWI(); mSleep(600);*/ writeIntegerLength_WIFI(adcBat,DEC,4); behaviourController(); } return 0; }