i2c

Questa libreria è vecchia e si usava con MPLAB IDE e compilatore Hitech-C per PIC10/12/16. Su MPLAB X IDE (con compilatore XC) è presente il Code Configurator che genera in automatico le librerie I2C (qui maggiori informazioni).

Prerequisiti

PicMicro con modulo MSSP. Non è supportato il modulo SSP. Hitech C versione > 9.81

Utilizzo

Definire in i2c.h la frequenza del clock da utilizzare espressa in KHz, valori ammessi: 100, 400 e 1000:

#define	CLOCK	400 // 400KHz

Definire in i2c.h la frequenza dell’oscillatore espressa in Hertz:

#define FOSC	32000000UL // 32MHz

Definire in i2c.h i due pin del modulo MSSP utilizzati come C:

#define SCL_PIN	TRISA1
#define SDA_PIN	TRISA2

Includere nel programma principale la chiamata a i2c.c:

#include "i2c.c"

Inizializzare nel main il modulo:

I2cInitMaster(); // inizializzo il modulo MSSP in modalità master

Funzioni disponibili

void I2cInitMaster (void); // Init MSSP in Master mode
void I2cInitSlave (const unsigned char address); // Init MSSP in Slave mode (indirizzo a 7 bit)
void I2cWait(void); // Attesa flag interrupt su modulo MSSP
void I2cWaitForIdle(void); // Attesa bus in stato idle
void I2cStart(void); // Sequenza di start
void I2cRepStart(void); // Sequenza di start ripetuto
void I2cStop(void); // Sequenza di stop
unsigned char I2cReadMaster(unsigned char ack); // Lettura in modalità Master
unsigned char I2cWriteMaster(unsigned char I2cWriteData); // Scrittura in modalità Master
unsigned char I2cReadSlave(); // Lettura in modalità Slave
void I2cWriteSlave(unsigned char data); // Scrittura in modalità Slave

Nella versione 1.2 della libreria è disponibile la funzione aggiuntiva:

void I2cBulkRead(unsigned char devAddress, unsigned char regAddress, unsigned char numReads, unsigned char *buffer); // lettura bulk

La lettura bulk consente di eseguire la lettura di più registri del dispositivo slave in sequenza a partire dal registro definito da regAddress, vengono eseguite numReads letture consecutive e i risultati delle letture vengono memorizzate nell’array *buffer. L’indirizzo del dispositivo slave, devAddress, va definito come indirizzo a 7 bit

Download versione 1.0

Download versione 1.2

Questa versione ha in più unicamente la funzione I2cBulkRead che permette la lettura sequenziale comunque  facile da implementare leggendo questo articolo.

Se questa pagina ti è piaciuta o ti è stata utile, potresti dedicare un minuto a leggere quest'altra pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)