Добрый всем день.

Столкнулся с проблемой. Камен - 18F4550, проблема с модулем MSSP.
Решил воспользоваться библиотеками микрочипа. Акселерометр ST lis3lv02dl. Опыт с ним уже имел, на х51 собирал проект с ним, работает, захотелось нечто подобное собрать и на пике, но вот незадача, на линиях SDA & SCL тишина полная, т.е. подцепляюсь осцилографом я вижу полный штиль на линиях. Может быть я куда-то не правильно ткнулся (я про код) ?

Код
#include <p18f4550.h>  //Включаем в наш проект хеад файлы
#include <i2c.h>
                    //Конфигурация процессора
#pragma config FOSC = INTOSCIO_EC     //выбор типа кристала (4MHZ)
#pragma config PLLDIV = 1
#pragma config WDT = OFF      //Выключаем сторожевой таймер
#pragma config LVP = OFF      //выключаем низковольтовое напряжение
#pragma config MCLRE = OFF    // Выключаем пин сброса
#pragma config XINST = OFF    //Выключаем расширенный набор функции
#pragma config FCMEN = OFF
#pragma config PWRT = OFF
#pragma config VREGEN = OFF
#pragma config CCP2MX = OFF
#pragma config BOR = OFF

#define AXS_ADR 0x3A
#define WHO_I_AM 0x0F
#define OUTX_L 0x28
#define OUTX_H 0x29
#define OUTY_L 0x2A
#define OUTY_H 0x2B
#define OUTZ_L 0x2C
#define OUTZ_H 0x2D
#define CTRL_REG1 0x20
#define CTRL_REG2 0x21
#define CTRL_REG3 0x22
#define STATUS_REG 0x27
#define REG1 0xD7
#define REG2 0x40

unsigned char STAT=0;
unsigned short AXS_X=0;
unsigned char dat=0;
void send_data(unsigned char ADR,unsigned char DATA)
{
unsigned char temp;
temp=AXS_ADR<<1;     // 3A=0b00111010 -> 0b01110100
            // т.к. происходит запись, то r/w=0, => не трогаем
StartI2C();         // Start I2C
IdleI2C();         // Ждём пока отпустит
WriteI2C(temp);     // Записали адресс+операцию выполняемую
IdleI2C();         // Ждём пока отпустит
WriteI2C(ADR);        // Отправляем адресс регистра
IdleI2C();         // Ждём пока отпустит
WriteI2C(DATA);        // Отправляем новое значение регистра
IdleI2C();         // Ждём пока отпустит
}

unsigned char read_data(unsigned char ADR)
{
unsigned char temp;
temp=AXS_ADR<<1;     // 3A=0b00111010 -> 0b01110100
temp++;            // бит r/w=1 => инкрементируем в значение 0b01110101
StartI2C();        // Start I2C
IdleI2C();         // Ждём пока отпустит
WriteI2C(temp);     // Записали адресс+операцию выполняемую (чтение)
IdleI2C();         // Ждём пока отпустит
WriteI2C(ADR);        // Пишем адресс считываемого регистра
IdleI2C();        // Ждём пока отпустит
dat=ReadI2C();        // Читаем значение с регистра
}

void main(void)
{  
OpenI2C(MASTER, SLEW_ON); //MASTER
SSPADD=0x27;    //baud rate - 100kHz, 4MHz (Таблица в ДШ BRG)
//Конфигурируем Акселерометр:
send_data(CTRL_REG1,REG1);
send_data(CTRL_REG2,REG2);
while(1)
{
        read_data(OUTX_H);        // Считываем старший разряд ускорения по Х
        AXS_X=dat;
        AXS_X=AXS_X<<8;            // смещаем до 16-битного числа
        read_data(OUTX_L);
        AXS_X=AXS_X+dat;        // получаем 16-битное число OUTX_H_OUTX_L
}
}


Контроллер виснет на чтении данных, т.е. передача "осуществляется", а вот с чтением данных уже посложнее, точнее она отсутствует (хотя по моему мнению отсутвует и передача данных, осцилографом изменений не вижу никаких).
или же проблема заключается в том, что всю эту радость я пытаюсь завести от внутреннего генератора ?
p.s. забыл, т.к. 10кОм найдены не были, засунул от линии на VDD 16kOm резисторы.