Light Sensos ISL29020 e PIC16F876
Salve a tutti,
ho da collegare il Light Sensor ISL29020 della Intersil con il PIC16F876.
Il sensore comunica con il PIC tramite l'interfaccia I2C, nessun problema per quanto riguarda il circuito è abbastanza semplice da collegare, il problema è l'aspetto software.
Di solito per la programmazione uso MikroC Pro.
Sinceramente non ho ben capito come il microcontrollore comunica in I2C, chi mi può aiutare a capire ciò e magari mi può suggerire del codice (anche in altro linguaggio) per leggere i dati dal sensore.
Sul datasheet del sensore sono indicati i registri per i dati ma non so proprio come farli a leggere, quale è la procedura.
Riporto di seguito la funzione di esempio (dal manuale) che legge i dati dal RTC DS1307:
Volevo adattare questa funzione al sensore ISL29020 ma non riesco a capire cosa dovrei cambiare.
Riporto inoltre il link del datasheet del ISL29020: http://www.intersil.com/data/fn/fn6505.pdf
Ringrazio tutti.
ho da collegare il Light Sensor ISL29020 della Intersil con il PIC16F876.
Il sensore comunica con il PIC tramite l'interfaccia I2C, nessun problema per quanto riguarda il circuito è abbastanza semplice da collegare, il problema è l'aspetto software.
Di solito per la programmazione uso MikroC Pro.
Sinceramente non ho ben capito come il microcontrollore comunica in I2C, chi mi può aiutare a capire ciò e magari mi può suggerire del codice (anche in altro linguaggio) per leggere i dati dal sensore.
Sul datasheet del sensore sono indicati i registri per i dati ma non so proprio come farli a leggere, quale è la procedura.
Riporto di seguito la funzione di esempio (dal manuale) che legge i dati dal RTC DS1307:
- Codice: Seleziona tutto
void Read_Time(char *sec, char *min, char *hr, char *week_day, char *day, char *mn, char *year) {
Soft_I2C_Start();
Soft_I2C_Write(0xD0);
Soft_I2C_Write(0);
Soft_I2C_Start();
Soft_I2C_Write(0xD1);
*sec =Soft_I2C_Read(1);
*min =Soft_I2C_Read(1);
*hr =Soft_I2C_Read(1);
*week_day =Soft_I2C_Read(1);
*day =Soft_I2C_Read(1);
*mn =Soft_I2C_Read(1);
*year =Soft_I2C_Read(0);
Soft_I2C_Stop();
}
Volevo adattare questa funzione al sensore ISL29020 ma non riesco a capire cosa dovrei cambiare.
Riporto inoltre il link del datasheet del ISL29020: http://www.intersil.com/data/fn/fn6505.pdf
Ringrazio tutti.