Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema in I2C

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Problema in I2C

Messaggioda Foto UtenteDeltaElectronics » 15 set 2018, 17:41

Buongionro,
Sto muovendo i primi passi nel mondo dell'I2C e ho provato su un PIC16LF1454 il seguente codice
Codice: Seleziona tutto
#define LCD_ADDR 0x70

void I2CSend(char byte) {
     I2C1_Start();
     I2C1_Is_Idle()     ;
     I2C1_Wr(LCD_ADDR);
     I2C1_Is_Idle();
//    I2C1_Wr(byte);
      I2C1_stop();
}

void main() {

     TRISC = 0X00;
     PORTC = 0X00;
     I2C1_Init(100000);
     I2CSend(0b11111111);
     while(1) {
              PORTC = 0b00001000;
              I2CSend(0b10101010);
              delay_ms(500);
              PORTC = 0b00000000;
              Delay_ms(500);
    }
}

Tutto sembra funzionare bene perché il LED collegato al RC3 lampeggia e sul mio oscilloscopio vedo l'onda I2C;
il problema è quando tolgo il commento alla seguente istruzione:

// I2C1_Wr(byte);

allo scopo di scrivere il dato sul canale, in quanto vedo che il LED rimane acceso fisso e sul mio oscilloscopio osservo una tensione a 5V.
PS: i due PIN I2C non sono collegati a nessun dispositivo, ma solo alle due resistenze (10K) di PULL-UP
Avatar utente
Foto UtenteDeltaElectronics
215 1 2 6
Stabilizzato
Stabilizzato
 
Messaggi: 488
Iscritto il: 27 set 2015, 14:01

0
voti

[2] Re: Problema in I2C

Messaggioda Foto Utenteluxinterior » 15 set 2018, 20:05

controlla come è fatta la libreria.
Ad ogni byte inviato l'I2C si aspett aun ACK dal remoto Ovviamente a te non arriva perché nn hai nulla collegato e non so se la funzione di libreria rimane appesa aspettando l'ACK.
Avatar utente
Foto Utenteluxinterior
2.833 2 4 8
Expert EY
Expert EY
 
Messaggi: 1672
Iscritto il: 6 gen 2016, 17:48


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti