This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EK-TM4C1294XL: I2C IO Expander Problem with TM4C1294xl

Part Number: EK-TM4C1294XL
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);

   
}