- Messaggi: 12
- Ringraziamenti ricevuti 0
Problema trasmissione I2C
- PLC
-
Autore della discussione
- Nuovo Utente
-
Less
Di più
11 Anni 8 Mesi fa #1
da PLC
Problema trasmissione I2C è stato creato da PLC
Salve a tutti, sto avendo qualche problema nel far funzionare il programma del capitolo XIII del libro "C18 Step by Step".
Ho scritto il programma, incluso le librerie e cambiato il nome delle funzioni dato che ho usato la versione 3.1 delle librerie. Il programma viene compilato, ma nel momento in cui lo vado ad eseguire i led restano spenti. Per testare i led ho messo come commento la funzione:
//read_I2C_EEPROM (0xA0, 0, &data);
poi ho assegnato un valore alla variabile "data":
data = 10;
e i led si sono accesi.
Vi mostro il programma che viene compilato regolarmente.
Come posso risolvere?
Grazie!
Ho scritto il programma, incluso le librerie e cambiato il nome delle funzioni dato che ho usato la versione 3.1 delle librerie. Il programma viene compilato, ma nel momento in cui lo vado ad eseguire i led restano spenti. Per testare i led ho messo come commento la funzione:
//read_I2C_EEPROM (0xA0, 0, &data);
poi ho assegnato un valore alla variabile "data":
data = 10;
e i led si sono accesi.
Vi mostro il programma che viene compilato regolarmente.
Code:
#include <p18f4550.h>
#include <delay.h>
#include <i2cEEPROM.h>
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//FOSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
void main (void)
{
// Variabile per salvare il dato restituito
unsigned char data = 0;
// Imposto PORTA tutti ingressi
LATA = 0x00;
TRISA = 0xFF;
// Imposto PORTB tutti ingressi
LATB = 0x00;
TRISB = 0xFF;
// Imposto PORTC tutti ingressi, RC1 come output
LATC = 0x00;
TRISC = 0b11111101;
// Imposto PORTD tutte uscite
LATD = 0x00;
TRISD = 0x00;
// Imposto PORTE tutti ingressi
LATE = 0x00;
TRISE = 0xFF;
// Imposto il quarzo per la libreria delay
setQuartz (20);
// Inizializza il modulo I2C a 400KHz @20MHz
OpenI2C(MASTER, SLEW_ON);
SSPADD = 12;
write_I2C_EEPROM (0xA0, 0, 0x35);
// Aspetto che il dato sia propriamente scritto in EEPROM
delay_ms (10);
read_I2C_EEPROM (0xA0, 0, &data);
LATD = data;
// Ciclo infinito
while (1)
{
}
}
Come posso risolvere?
Grazie!
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Pinna
-
- Moderatore
-
Less
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
11 Anni 8 Mesi fa #2
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Problema trasmissione I2C
Ciao, credo (non vorrei sbagliarmi) che tu debba includere nel main anche il file delay.c...
tutti gli esempi riportati nel tutorial , se mi ricordo bene, prevedevano un file con estensione .h ed una libreria con estensione .LIB. Tale libreria veniva appunto creata con i file .c ed i file .h ed inclusa a parte nel progetto. Le nuove versioni non prevedono l'uso di librerie "preconfezionate" per cui è d'obbligo inserire nel progetto ambedue i sorgenti (nel tuo caso specifico delay.c e delay.h)
fammi sapere se ho detto corbellerie.
Marcello
tutti gli esempi riportati nel tutorial , se mi ricordo bene, prevedevano un file con estensione .h ed una libreria con estensione .LIB. Tale libreria veniva appunto creata con i file .c ed i file .h ed inclusa a parte nel progetto. Le nuove versioni non prevedono l'uso di librerie "preconfezionate" per cui è d'obbligo inserire nel progetto ambedue i sorgenti (nel tuo caso specifico delay.c e delay.h)
fammi sapere se ho detto corbellerie.
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Pinna
-
- Moderatore
-
Less
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
11 Anni 8 Mesi fa - 11 Anni 8 Mesi fa #3
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Problema trasmissione I2C
dimenticavo... aggiungi anche il file I2cEEPROM.c (anche per questo era prevista la libreria con estensione . LIB)
Chi vola vale, chi vale vola, chi non vola è un vile
Ultima Modifica 11 Anni 8 Mesi fa da Pinna.
Si prega Accesso o Crea un account a partecipare alla conversazione.
11 Anni 8 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Problema trasmissione I2C
come suggerito da Pinna, qualora non fai uso dei file .lib devi includere oltre che ai file .h anche i relativi file .c.
Qual´e´ il codice della EEPROM che stai usando?
Saluti,
Mauro
Qual´e´ il codice della EEPROM che stai usando?
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- PLC
-
Autore della discussione
- Nuovo Utente
-
Less
Di più
- Messaggi: 12
- Ringraziamenti ricevuti 0
11 Anni 8 Mesi fa #5
da PLC
Risposta da PLC al topic Problema trasmissione I2C
Ciao Mauro, Pinna!
Come da allegato potete vedere che ho incluso nel progetto sia il file ".c" che ".h" di ambedue le librerie. Il progetto viene compilato ma quando viene eseguito non accende i led.
Il codice della EEPROM è "24LC32A I/P".
Come da allegato potete vedere che ho incluso nel progetto sia il file ".c" che ".h" di ambedue le librerie. Il progetto viene compilato ma quando viene eseguito non accende i led.
Il codice della EEPROM è "24LC32A I/P".
Si prega Accesso 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.
Forum - Ultimi messaggi
-
- Watchdog
- da FABRIZIO
-
- Timer0 e interrupt
- da marcoilgrande
-
- Strana anomalia LT lib module_EEPROM
- da marcoilgrande
-
- Nuova versione Kicad 9
- da Mauro Laurenti
-
- MODULO GSM SIM900A
- da embedded