// --------- Szitkoivts Gábor 2012.05.29- ----------------------------------------------------------
// --------------------------------------- I2C kommunikáció pcf8574-el -----------------------------
#include "io430.h"
//#include "in430.h"
#include "stdint.h"

void i2c_init(void);
void i2c_write(uint8_t tx);
void i2c_start(void);

void main(void){
    
    WDTCTL = WDTPW + WDTHOLD;            // Stop watchdog
    BCSCTL1 = CALBC1_1MHZ;               // Set DCO
    DCOCTL = CALDCO_1MHZ;
    
    i2c_init();
    i2c_write(0x40);
    i2c_write(0xf0);
    
    while(1){
        i2c_write(0x01);
        __delay_cycles(500000);
        i2c_write(0x08);
        __delay_cycles(500000);
        i2c_write(0x10);
        __delay_cycles(500000);
    }
}
void i2c_init(void){
    USICTL0 = USIPE7 + USIPE6 + USIMST + USIOE + USISWRST;
    // master mód, adat ki engedélyezés, P1.6 SCL P1.7 SDA engedélyezés, szoftveres reset
    USICKCTL = USIDIV_7 + USISSEL_2 + USICKPL;                // óra=SMCLK/64
    USICTL1 = USII2C;                                         // I2C mód
    USICTL0 &= ~USISWRST;                                     // reset
    USICTL0 |= USIGE;
    USICTL0 &= ~USIGE;
}
void i2c_write(uint8_t tx){
     USICTL0 |= USIOE;                       // adat küldés engedélyezés
     USISRL = tx;                            // alsó 8 bit feltöltése
     USICNT = 8;                             // 8 bitet küldünk
     while((USICTL1 & USIIFG) != 0x01);      // várunk míg USIIFG, egy nem lesz
     USICTL0 &= ~USIOE;                      // adat küldés tiltása
     USICNT = 1;                             // 1 bitet várunk (ACK)
     while((USICTL1 & USIIFG) != 0x01);      // várunk míg USIIFG, egy nem lesz
}
    