код:
- Код:
//частота Fosci = 20 МГц
#include <p18f452.h>
#include <i2c.h>
#pragma config WDT=OFF,OSC=HS,LVP = OFF
...
SSPADD=0x31;
SSPSTATbits.SMP=0;
SSPSTATbits.CKE=0;
SSPCON1bits.SSPM3=1;
SSPCON1bits.SSPM2=0;
SSPCON1bits.SSPM1=0;
SSPCON1bits.SSPM0=0;
SSPCON1bits.SSPEN=1;
SSPCON2bits.SEN=1;
...
или тоже самое с использованием библиотеки:
- Код:
OpenI2C(MASTER, SLEW_OFF);
SSPADD = 0x31;
StartI2C();
цитирую мануал:
Чтобы инициировать формирование бита START на шине I2C, необходимо установить бит SEN (SSPCON2<0>) в "1" ...
... После формирования бита START устанавливается бит S и флаг прерывания SSPIF в "1", BGR загружается новым значением и начинается счет.
По окончании счета бит SEN (SSPCON2<0>) автоматически сбрасывается в "0"...
проблема в том что после установки бита SEN (SSPCON2<0>) в "1" ничего не происходит. То есть бит SEN,флаг SSPIF, бит S какими были такими и остаются сколько не жди.
При этом если RC3, RC4 были в "1" то дебугер отлавливает событие START, а если RC3, RC4 были до этого в "0" то не происходит и этого.
Создается такое впечатление что MSSP просто забирает себе выводы, но при этом даже не думает работать с ними.
Подскажите что я упустил из виду?