- Messaggi: 30
- Ringraziamenti ricevuti 0
i2c bloccante?
2 Anni 7 Mesi fa #1
da MicheleO.
i2c bloccante? è stato creato da MicheleO.
Buon pomeriggio a tutti,
ho realizzato una scheda per la gestione delle luci d'emergenza.
Un pic comunica con un rtc (DS1307), un lcd ed un espansione di ingressi (PCF5874) tramite I2C. Inoltre è presente qualche operazionale per la misurazione di corrente e tensione batteria, alcuni testi, led ed un cicalino.
A volte capita che il programma si blocca: il pic non risponde più a nessun segnale. Resettando il tutto, il sistema torna perfettamente operativo.
Secondo voi è possibile che il problema sia la trasmissione I2C?
Utilizzo le librerie di settorezero.com ( www.settorezero.com/wordpress/corso-prog...-eeprom-esterne-i2c/ ).
Ci sono diversi while (credo molto simili a ciò che viene fatto nelle librerie disponibili su questo sito). E' possibile che il pic si blocchi in qualche while? Per esempio perché l'rtc crea problemi a causa di un disturbo sulla rete.
Se si, come posso verificarlo?
Grazie mille,
buona serata.
Michele
ho realizzato una scheda per la gestione delle luci d'emergenza.
Un pic comunica con un rtc (DS1307), un lcd ed un espansione di ingressi (PCF5874) tramite I2C. Inoltre è presente qualche operazionale per la misurazione di corrente e tensione batteria, alcuni testi, led ed un cicalino.
A volte capita che il programma si blocca: il pic non risponde più a nessun segnale. Resettando il tutto, il sistema torna perfettamente operativo.
Secondo voi è possibile che il problema sia la trasmissione I2C?
Utilizzo le librerie di settorezero.com ( www.settorezero.com/wordpress/corso-prog...-eeprom-esterne-i2c/ ).
Ci sono diversi while (credo molto simili a ciò che viene fatto nelle librerie disponibili su questo sito). E' possibile che il pic si blocchi in qualche while? Per esempio perché l'rtc crea problemi a causa di un disturbo sulla rete.
Se si, come posso verificarlo?
Grazie mille,
buona serata.
Michele
Si prega Accedi o Crea un account a partecipare alla conversazione.
- MicheleO.
- Autore della discussione
- Junior Member
Riduci
Di più
2 Anni 7 Mesi fa #2
da elpablito
Risposta da elpablito al topic i2c bloccante?
visto da distante secondo me non è un problema di i2c, sembrerebbe il solito baco capitato a tutti, facendo un qualche giro non previsto vai in loop da qualche parte, occhio ai while. L'unico consiglio che ti posso dare e riconsidera il tutto cercando di capire se per ti sei perso una possibilità di qualche genere, ad esempio una risposta non ottenuta o sbagliata, che ti fa rimanere in uno dei loop.
Ciao Paolo
Ciao Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Platinum Member
Riduci
Di più
- Messaggi: 353
- Ringraziamenti ricevuti 8
2 Anni 7 Mesi fa #3
da MicheleO.
Risposta da MicheleO. al topic i2c bloccante?
Grazie per la risposta!
ho ricontrollato tutto il programma e in tutto il sorgente ho soltanto i while:
- del main;
- nella libreria delay;
- nella libreria LCD:
void PUTS(const unsigned char *buffer){
while(*buffer){
WRITE(*buffer);
buffer++;
}
}
- nella libreria eeprom:
while(!EEIF);
- nella libreria I2C.
Ovviamente non ho for(;. Ho controllato gli altri (pochissimi) for e non dovrebbero essere problematici (non modifico l'indice nel for stesso).
Sicuramente l'alimentazione della scheda non è pulitissima. Ho controllato con l'oscilloscopio ed ogni tanto compaiono disturbi ad alta frequenza.
Grazie,
Michele.
ho ricontrollato tutto il programma e in tutto il sorgente ho soltanto i while:
- del main;
- nella libreria delay;
- nella libreria LCD:
void PUTS(const unsigned char *buffer){
while(*buffer){
WRITE(*buffer);
buffer++;
}
}
- nella libreria eeprom:
while(!EEIF);
- nella libreria I2C.
Ovviamente non ho for(;. Ho controllato gli altri (pochissimi) for e non dovrebbero essere problematici (non modifico l'indice nel for stesso).
Sicuramente l'alimentazione della scheda non è pulitissima. Ho controllato con l'oscilloscopio ed ogni tanto compaiono disturbi ad alta frequenza.
Grazie,
Michele.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- MicheleO.
- Autore della discussione
- Junior Member
Riduci
Di più
- Messaggi: 30
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.