Other Parts Discussed in Thread: ENERGIA
Hello Everyone , We have a problem .
We are doing io expander with PCA9698 - NXP Semiconductors . We use Energia v18 to comply . We have an problem about loop . I am just trying to control pins are ready for i2c comminication . Thats why I use LEDs to control . We just get two times logic ''one'' two times logic ''zero'' after that LEDs stay at logic one . They are exiting loop or something . I couldnt solve this problem . They always stay logic ''one'' after some time .
I am using library that is XIO . My code is showed . You dont need to look which I am using . Main problem is that i2c doesnt start to work or doesnt work stable . I try many ways to solve but I couldnt where problem is or what is our problem .
/************************************************************************* Title: Iowa Scaled Engineering I2C-XIO (PCA9698) Arduino Example Authors: Nathan D. Holmes <maverick@drgw.net> File: $Id: $ License: GNU General Public License v3*/ #include <XIO.h> #include <Wire.h> XIO xioBoard; void setup() { pinMode(PN_2, OUTPUT); pinMode(PJ_0, OUTPUT); digitalWrite(PN_2, LOW); digitalWrite(PJ_0, HIGH); // initialize serial communications at 9600 bps: Serial.begin(9600); Serial.println("Hello\n"); Wire.setModule(0); //Start i2c Wire.begin(); // Both of the following initialization examples assume that address jumpers A0, A1, and A2 // on the I2C-XIO are set to high (open, no jumper). If any are set low (jumpered), please // replace the appropriate configuration value with "LOW" in the "begin()" call // If you're using a standard Iowa Scaled shield to connect the I2C lines to the Arduino, // the /IORST line is likely tied to Digital IO line 4 and /OEN is tied to Digital IO line 3. // Use the initializer below. // (AD0, AD1, AD2, RESET_PIN ,OUTPUT_ENABLE_PIN ) Serial.println("XIO Started"); // If the /IORST and /OEN lines on the I2C cable aren't connected anywhere, use this initializer // instead of the one above. // xioBoard.begin(HIGH, HIGH, HIGH, -1, -1); } void loop() { xioBoard.begin(LOW, LOW, LOW, PJ_0, PN_2); // Alternately, the pin configuration can be done much faster (because // of using a single I2C bus transaction) by doing the following: xioBoard.xioPinModeCached(XIO_PIN_A0, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_A1, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_A2, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_A3, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_A4, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_A5, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_A6, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_A7, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B0, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B1, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B2, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B3, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B4, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B5, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B6, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_B7, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C0, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C1, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C2, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C3, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C4, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C5, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C6, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_C7, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D0, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D1, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D2, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D3, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D4, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D5, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D6, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_D7, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E0, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E1, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E2, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E3, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E4, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E5, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E6, OUTPUT); xioBoard.xioPinModeCached(XIO_PIN_E7, OUTPUT); xioBoard.refreshPinModes(); // These commands blink the output on pin A0 - try it by attaching an LED through a resistor! xioBoard.xioDigitalWriteCached(XIO_PIN_A0, LOW); //It refers to U1 integrated , pin IO1_0 xioBoard.xioDigitalWriteCached(XIO_PIN_A1, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_A2, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_A3, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_A4, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_A5, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_A6, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_A7, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B0, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B1, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B2, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B3, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B4, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B5, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B6, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B7, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C0, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C1, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C2, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C3, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C4, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C5, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C6, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C7, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D0, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D1, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D2, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D3, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D4, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D5, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D6, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D7, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E0, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E1, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E2, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E3, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E4, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E5, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E6, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E7, HIGH); xioBoard.refreshIO(); Serial.print("Cycle A\n"); delay(1000); xioBoard.xioDigitalWriteCached(XIO_PIN_A0, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_A1, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_A2, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_A3, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_A4, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_A5, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_A6, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_A7, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B0, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B1, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B2, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B3, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B4, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B5, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_B6, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_B7, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C0, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C1, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C2, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C3, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C4, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C5, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_C6, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_C7, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D0, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D1, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D2, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D3, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D4, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D5, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_D6, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_D7, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E0, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E1, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E2, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E3, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E4, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E5, LOW); xioBoard.xioDigitalWriteCached(XIO_PIN_E6, HIGH); xioBoard.xioDigitalWriteCached(XIO_PIN_E7, LOW); xioBoard.refreshIO(); Serial.print("Cycle B\n"); delay(1000); }