аппаратный i2c на C18

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Родился
Сообщения: 9
Зарегистрирован: Ср ноя 21, 2012 13:39:11

Сообщение danao »

код:

Код: Выделить всё

//частота 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 просто забирает себе выводы, но при этом даже не думает работать с ними.
Подскажите что я упустил из виду?
Реклама
Ответить

Вернуться в «PIC»