Help utilizzo Brown out reset

3 Anni 6 Mesi fa #1 da Guido8311
Help utilizzo Brown out reset è stato creato da Guido8311
salve e da molto che non vi scrivo ma ho da chiedervi alcune cose con la speranza che mi potete aiutare.
Per un progetto che sto realizzando ho la necessità di memorizzare un valore nell'eeprom prima che la corrente vada via così da ripristinarlo nel momento in cui ritorna . Io ora sto memorizzando questo valore ogni secondo ma a volte quando tolgo alimentazione il valore che memorizzo si sballa o viene modificato qualche altro valore nell'eeprom ed inoltre ho notato che il difetto tende a presentarsi anche in base all'alimentatore che utilizzo.
Io utilizzo una pic 16f886 con display ho visto che ci sta Bor ma non ho trovato nessun esempio di codice, se qualcuno sa come usarlo o qualche altra soluzione ne sarei grato

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido8311
  • Avatar di Guido8311
  • Junior Member
  • Junior Member
Di più
3 Anni 6 Mesi fa #2 da stainless
Risposta da stainless al topic Help utilizzo Brown out reset
Se l'assorbimento non è troppo alto puoi pensare di mettere una batteria tampone che alimenta il circuito solo quando manca la l'alimentazione principale.

int main void{
while(1){
eat();
drink();
have_fun();
ride();
}
}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • stainless
  • Premium Member
  • Premium Member
Di più
3 Anni 6 Mesi fa #3 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Help utilizzo Brown out reset
L'utilizzo del BOR non ti aiuta.
Il sistema BOR effettua un reset del sistema quando la tensione si abbassa oltre un limite che viene impostato.
Dunque quando la tensione si abbassa, avviene il reset e non puoi fare altro.
La configurazione della circuiteria BOR avviene tramite le direttive #pragma, visto che sono nei configuration register.
All'avvia del PIC puoi controllare i flag del reset e verificare se il reset era stato causato dal modulo BOR.
In ogni modo non è la via da intraprendere.

La batteria tampone potrebbe essere una soluzione ma potrebbe aumentare le dimensioni del sistema.
Tipicamente in questo caso devi evitare che la batteria alimenti tutto il sistema, ma solo il PIC, in questo modo puoi limitare le dimensioni della batteria.
Possibile soluzione sarebbe quella di usare un diodo sulla linea Vcc del PIC seguita dalla batteria (ricaricabile).

Questa soluzione porta in realtà ad un'altra soluzione tipicamente usata.
Ovvero usare un condensatore più grande per avere energia sufficiente per scrivere la memoria EEPROM.
A seconda dei consumi del sistema devi valutare se usare o meno il diodo sulla linea Vcc, in maniera da evitare che il condensatore quando l'alimentazione va via, debba alimentare tutto il sistema.

I tempi di scrittura di una locazione della memoria EEPROM, è tipicamente intorno a 10ms (verifica il caso specifico nel datasheet). Metti un buon margine e considera 50ms.
Questo è il tempo per il quale il condensatore deve fornire energia al sistema.

La scrittura in EEPROM può essere avviata controllando l'alimentazione.
Puoi usare il comparatore integrato. Devi usare una voltage reference indipendente da Vcc in maniera da poter identificare il calo di tensione.
Quando il comparatore rileva un calo di tensione, genera un interrupt e scrivi in EEPROM.
Il condensatore aiuterà a far calare la tensione lentamente e dovresti avere tempo sufficiente a scrivere.

Dai tempi del datasheet per la scrittura in EEPROM e i consumi del tuo sistema, puoi calcolare C.

...altra soluzione è la memoria FRAM usata per esempio negli MSP430FRxxxx.
Definisci la variabile in FRAM e fai gli aggiornamenti che ti servono.
Quando togli l'alimentazione...il dato rimane li, senza dover fare un vero backup.
FRAM è come la RAM ma è non voltatile come la memoria Flash.

Il nuovo corso MSP430 che ho scritto è basato su MSP430FR2355, ma non è ancora online.
Li ho degli esempi che descrivono esattamente questo caso, ovvero la problematica del salvataggio di dati nel caso di perdita di alimentazione.

Saluti,

Mauro
Ringraziano per il messaggio: Guido8311

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
3 Anni 6 Mesi fa #4 da Guido8311
Risposta da Guido8311 al topic Help utilizzo Brown out reset
Grz mille credo che utilizzerò la batteria tampone xke non ho più pin disponibili.
Quindi il bor non fa altro che mettere in uno stato di reset il pic non attiva nessun interrupt

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido8311
  • Avatar di Guido8311
  • Junior Member
  • Junior Member
Di più
3 Anni 6 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Help utilizzo Brown out reset
Esatto la circuiteria di BOR non avvia nessun interrupt, ma solo il reset.

Controlla le combinazioni e mux del comparatore. Potrebbe essere capace di monitorare Vcc senza usare pin esterni.
Dipende dalla MCU, ma nel caso specifico non ho visto i dettagli del datasheet.

Usando un comparatore puoi generare un interrupt.

Alcuni PIC hanno un modulo ad hoc per monitorare Vcc.

Saluti,

Mauro
Ringraziano per il messaggio: Guido8311

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login