indirizzo slave per i2c
8 Anni 6 Mesi fa #1
da storti
indirizzo slave per i2c è stato creato da storti
Lavoro su una schedina I2C per LCD che per indirizzi ha tre pad a massa e tre A0,A1,A2.
Il progetto è derivato da Master_i2c di Mauro Laurenti in cui ho eliminato le righe per la lettura dei pulsanti cui ho sostituito il seguente Sw
for (i=0;i<=100;i++) {
dato =i;
writeLCD(data)dato;
]
Ovviamente ho lasciato quanto serve alla inizializzazione ed all'avviamento dì I2C e aggiunto righe di Sw per "vedere" sul display di Freedom II che il tutto "GIRA" cosa che avviene. Solo che sul LCD della schedina non appare nulla. Si ferma alla istruzione writeI2C((data)dato;
Reputo sia colpa dell'indirizzo della schedina "slave" che non trovo quale sia corretto. Ho provato diverse soluzioni sia di Sw sia di connessione fra i tre pad 10,,A1,A2 e massa sulla schedina, ma non trovo un indirizzo corretto.
Mi sapete suggerire cosa devo scrivere in ADDRESS e come settare i pad?
Ringrazio e invio cordiali saluti. Gianni
Il progetto è derivato da Master_i2c di Mauro Laurenti in cui ho eliminato le righe per la lettura dei pulsanti cui ho sostituito il seguente Sw
for (i=0;i<=100;i++) {
dato =i;
writeLCD(data)dato;
]
Ovviamente ho lasciato quanto serve alla inizializzazione ed all'avviamento dì I2C e aggiunto righe di Sw per "vedere" sul display di Freedom II che il tutto "GIRA" cosa che avviene. Solo che sul LCD della schedina non appare nulla. Si ferma alla istruzione writeI2C((data)dato;
Reputo sia colpa dell'indirizzo della schedina "slave" che non trovo quale sia corretto. Ho provato diverse soluzioni sia di Sw sia di connessione fra i tre pad 10,,A1,A2 e massa sulla schedina, ma non trovo un indirizzo corretto.
Mi sapete suggerire cosa devo scrivere in ADDRESS e come settare i pad?
Ringrazio e invio cordiali saluti. Gianni
Si prega Accedi o Crea un account a partecipare alla conversazione.
- storti
- Autore della discussione
- Visitatori
8 Anni 6 Mesi fa #2
da storti
Risposta da storti al topic indirizzo slave per i2c
Scusatemi ho per errore scritto writeLCD inendevo writeI2C.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- storti
- Autore della discussione
- Visitatori
8 Anni 6 Mesi fa #3
da Mauro Laurenti
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da Mauro Laurenti al topic indirizzo slave per i2c
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Mauro Laurenti
- Moderator
Riduci
Di più
8 Anni 6 Mesi fa #4
da storti
Risposta da storti al topic indirizzo slave per i2c
Grazie Mauro per la tua cortese risposta.
Ho avuto problemi al calcolatore ed ora ho ripreso.
Mi ero nel frattempo riletto quantom in internet si trova su I2C, in particolare il protocollo.
Sembra che l'indirizzo corretto per la lettura debba essere x1xxA3,A2,A1,A0 per cui avendo nela mia schedina gli Ax a massa avrei 41 (PCF6574) come indirizzo.
Ora però ancora non appare nulla ed iol proramam si arresta in 'write_data (data);' per cui non sò
cosa sia.
Altro errore: dopo la esecuzione di ' board_initialization () ' l'LCD si spegne anche se prima scrivo
TRISC = 0xFD; fra l'altro anche nella routine di initialization si ha ugualmente TRISC = 0xFD.
Ti scrivo il sorgente. Vedi cosa manca o è errato.
//
LCD normale
for (i = 0; i < 100 ; i+= 5) { //passi di 5 fino a 100
ClearLCD ();
WriteStringLCD ("valore letto: ");
valore = i;
Line2LCD ();
WriteStringLCD ("lettura: ");
WriteIntLCD(valore, number_of_digits);
delay_ms (200);
}
//
LCD via I2C
//Inizializzazione del modulo I2C
//Baudrate 400kHz @20MHz
OpenI2C(MASTER,SLEW_OFF);
SSPADD = 12;
board_initialization (); //si spegne LCD
//Baudrate 400kHz @20MHz
OpenI2C(MASTER,SLEW_OFF);
SSPADD = 12;
TRISC = 0xFD;
for (i = 0; i <= 100 ; i+= 5) {
ClearLCD ();
WriteStringLCD ("valore letto: ");
valore = i;
Line2LCD ();
WriteStringLCD ("lettura: ");
WriteIntLCD(valore, number_of_digits);
delay_ms (200);
data = i;
write_data (data); //non presenta nulla al display, blocca
}
TRISC = 0xFD;
}
Grazie per l'interessamento, cordiali msaluti
Gianni
Ho avuto problemi al calcolatore ed ora ho ripreso.
Mi ero nel frattempo riletto quantom in internet si trova su I2C, in particolare il protocollo.
Sembra che l'indirizzo corretto per la lettura debba essere x1xxA3,A2,A1,A0 per cui avendo nela mia schedina gli Ax a massa avrei 41 (PCF6574) come indirizzo.
Ora però ancora non appare nulla ed iol proramam si arresta in 'write_data (data);' per cui non sò
cosa sia.
Altro errore: dopo la esecuzione di ' board_initialization () ' l'LCD si spegne anche se prima scrivo
TRISC = 0xFD; fra l'altro anche nella routine di initialization si ha ugualmente TRISC = 0xFD.
Ti scrivo il sorgente. Vedi cosa manca o è errato.
//
LCD normale
for (i = 0; i < 100 ; i+= 5) { //passi di 5 fino a 100
ClearLCD ();
WriteStringLCD ("valore letto: ");
valore = i;
Line2LCD ();
WriteStringLCD ("lettura: ");
WriteIntLCD(valore, number_of_digits);
delay_ms (200);
}
//
LCD via I2C
//Inizializzazione del modulo I2C
//Baudrate 400kHz @20MHz
OpenI2C(MASTER,SLEW_OFF);
SSPADD = 12;
board_initialization (); //si spegne LCD
//Baudrate 400kHz @20MHz
OpenI2C(MASTER,SLEW_OFF);
SSPADD = 12;
TRISC = 0xFD;
for (i = 0; i <= 100 ; i+= 5) {
ClearLCD ();
WriteStringLCD ("valore letto: ");
valore = i;
Line2LCD ();
WriteStringLCD ("lettura: ");
WriteIntLCD(valore, number_of_digits);
delay_ms (200);
data = i;
write_data (data); //non presenta nulla al display, blocca
}
TRISC = 0xFD;
}
Grazie per l'interessamento, cordiali msaluti
Gianni
Si prega Accedi o Crea un account a partecipare alla conversazione.
- storti
- Autore della discussione
- Visitatori
8 Anni 6 Mesi fa #5
da Mauro Laurenti
Risposta da Mauro Laurenti al topic indirizzo slave per i2c
Ciao Gianni,
relativamente alla retroilluminazione non basta impostare il valore di TRISC a FD ma bisogna anche scrivere:
LATCbits.LATC1 = 0x01;
o far uso della funzione LCD_backlight
Per quanto riguarda l'indirizzo del modulo PCF8574 hai solo tre linee di indirizzo, A0, A1 e A2 .
L'indirizzo totale se hai tutti 0 non può essere dispari.
Avendo il modulo PCF8574, fai uso direttamente della libreria LCD_44780_I2C versione 3.x.x
Il valore di default della libreria è per A0,A1, A2 tutti a massa.
Devi però impostare il chip PCF8574 o PCF8574A.
Saluti,
Mauro
relativamente alla retroilluminazione non basta impostare il valore di TRISC a FD ma bisogna anche scrivere:
LATCbits.LATC1 = 0x01;
o far uso della funzione LCD_backlight
Per quanto riguarda l'indirizzo del modulo PCF8574 hai solo tre linee di indirizzo, A0, A1 e A2 .
L'indirizzo totale se hai tutti 0 non può essere dispari.
Avendo il modulo PCF8574, fai uso direttamente della libreria LCD_44780_I2C versione 3.x.x
Il valore di default della libreria è per A0,A1, A2 tutti a massa.
Devi però impostare il chip PCF8574 o PCF8574A.
Saluti,
Mauro
Ringraziano per il messaggio: storti
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024