Discussione:
Reset hardware con Arduino
(troppo vecchio per rispondere)
Giorgio
2019-02-10 13:37:55 UTC
Permalink
Puo' nascere la necessita' di voler effettuare automaticamente un reset
hardware. Basta usare questo piccolo schema:

Loading Image...

Ho provato solo su funduino mega e non su arduino uno o mega.

Giorgio
Renato_VBI
2019-02-10 14:24:03 UTC
Permalink
Post by Giorgio
Puo' nascere la necessita' di voler effettuare automaticamente un reset
https://www.dropbox.com/s/oo14k8dz1t978zt/Schema_RESET.JPG?dl=0
Ho provato solo su funduino mega e non su arduino uno o mega.
Giorgio
Questa non l'ho capita, perche' far rimanere perennemente - ed occupato
- alto un pin digitale (con relativo consumo continuo) ?
Forse sbaglio....
--
Ciao, Renato
alfio
2019-02-10 15:37:03 UTC
Permalink
Post by Giorgio
Puo' nascere la necessita' di voler effettuare automaticamente un reset
quale e' stato il tuo motivo per adottare una simile tecnica ?
in genere si ricorre al reset hardware in caso di malfunzionamento del
software, con appositi circuiti di watch-dog, che se non triggerati entro il
tempo massimo resettano il sistema.
ma il tuo circuito prevede che il software sia funzionante e sia lui a voler
eseguire un reset hardware, perche' ?
Giorgio
2019-02-10 17:38:23 UTC
Permalink
Post by alfio
Post by Giorgio
Puo' nascere la necessita' di voler effettuare automaticamente un
quale e' stato il tuo motivo per adottare una simile tecnica ?
in genere si ricorre al reset hardware in caso di malfunzionamento del
software, con appositi circuiti di watch-dog, che se non triggerati
entro il tempo massimo resettano il sistema.
ma il tuo circuito prevede che il software sia funzionante e sia lui a
voler eseguire un reset hardware, perche' ?
L'aggeggio contiene 2 oscillatori e del codice discrimina quando
l'alimentazione, tramite un commutatore a 2 posizioni, passa da uno
all'altro.
Quando cio succede ho trovato utile eseguire un reset, anche se
ovviamente si puo' simulare abbastanza il reset con dell'opportuno
software, ma io ho preferito cosi' e funziona bene in quanto tutto viene
reinizializzato a dovere.

--
LAB
2019-02-10 19:11:17 UTC
Permalink
Mah... Non ho capito il discorso degli oscillatori e
dell'alimentazione ma, sei hai risolto, tanto meglio
così!

Comunque il reset dell'atmega328 è negato, perciò avviene nel
momento in cui va basso e il processore riparte quando torna
alto.
--
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
LAB
2019-02-13 22:51:17 UTC
Permalink
Il problema è che, appena inizia a resettarsi, l'uscita va in alta
impedenza, perciò l'impulso di reset non durerà il tempo minimo
richiesto secondo il garage e il microcontrollore potrà fare un
apparente reset che non é totale.
--
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
LAB
2019-02-13 22:58:17 UTC
Permalink
https://forum.arduino.cc/index.php?topic=596632.msg4054706#msg4054706
--
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
Giorgio
2019-02-14 10:25:50 UTC
Permalink
Post by LAB
https://forum.arduino.cc/index.php?topic=596632.msg4054706#msg4054706
Non per contraddire ma da quello che vedo nel display e nel
comportamento delle periferiche il reset e' totale, forse perche' c'e'
una capacita' che mantiene abbastanza a lungo in basso il pin di reset.
Il discorso del WatchDog e' interessante e se trovo il codice
lo inserisco al posto dell'autoreset.
Giorgio

--
Giulia
2019-02-13 13:42:04 UTC
Permalink
Post by alfio
quale e' stato il tuo motivo per adottare una simile tecnica ?
Sembra che non ce lo voglia ben spiegare (perche' effettivamente non esiste),
da quello che leggo in giro la atmel :
SCONSIGLIA di utilizzare un sistema come quello dell' amico e se ci si pensa un attimo e' anche ovvio il perché,
CONSIGLIA di far partire il WatchDog e aspettare che si generi il reset.

Giulia
Giorgio
2019-02-14 10:44:40 UTC
Permalink
Post by Giulia
Post by alfio
Post by Giorgio
Puo' nascere la necessita' di voler effettuare automaticamente un
quale e' stato il tuo motivo per adottare una simile tecnica ?
Sembra che non ce lo voglia ben spiegare (perche' effettivamente non esiste),
SCONSIGLIA di utilizzare un sistema come quello dell' amico  e se ci si
pensa un attimo e' anche ovvio il perché,
CONSIGLIA di far partire il WatchDog e aspettare che si generi il reset.
Giulia
Ho appena trovato questo codice di reset software per l'arduino due e
funziona:

void Software_Reset()
{
//============================================================================================
// führt ein Reset des Arduino DUE aus...
//
// Parameter: keine
// Rueckgabe: keine
//============================================================================================
const int RSTC_KEY = 0xA5;
RSTC->RSTC_CR = RSTC_CR_KEY(RSTC_KEY) | RSTC_CR_PROCRST | CR_PERRST;
while (true);
}

https://forum.arduino.cc/index.php?topic=152885.0

--
Renato_VBI
2019-02-15 15:26:05 UTC
Permalink
Il 14/02/2019 11:44, Giorgio ha scritto:

[CUT]
Post by Giorgio
Ho appena trovato questo codice di reset software per l'arduino due e
void Software_Reset()
{
  const int RSTC_KEY = 0xA5;
  RSTC->RSTC_CR = RSTC_CR_KEY(RSTC_KEY) | RSTC_CR_PROCRST | CR_PERRST;
  while (true);
}
------------------

Talvolta, non solo in circuiti ridondanti, e' comodo utilizzare dei
moduli specifici per resettare il microcontrollore (specie senza uno
specifico bootloader inserito).

Nel tuo caso, dato che parli di Arduino, dai un'occhiata a questo
articolo che reputo decisamente interessante.

<https://www.logicaprogrammabile.it/arduino-resettare-automaticamente-la-scheda-utilizzando-il-watchdog-timer/>

Se ne sei gia' a conoscenza non tenerne conto.
--
Ciao, Renato
El_Ciula
2019-02-14 19:44:58 UTC
Permalink
Post by Giorgio
Puo' nascere la necessita' di voler effettuare automaticamente un reset
https://www.dropbox.com/s/oo14k8dz1t978zt/Schema_RESET.JPG?dl=0
Ho provato solo su funduino mega e non su arduino uno o mega.
Giorgio
Ho letto tutto,

per me ragionate quasi tutti in modo assurdo, una cosa seria è mettere
un monostabile retriggherabile e dagli un impulso, se si inchioda il
micro fa lui il reset, affidarsi ad un altro microcontrollore è
quantomeno una idiozia.

Finisce che per accendere un led ci mettete l'arduino perchè vi avanza.
Archaeopteryx
2019-02-14 21:49:45 UTC
Permalink
Post by El_Ciula
Finisce che per accendere un led ci mettete l'arduino
perch� vi avanza.
Dato che ho un cassetto pieno di arduini di vari tipi
sono arrivato molto vicino a una cosa del genere.
Naturalmente cosa sia stato è un segreto che morirà con
me, nonostante io non ci tenga così tanto al "cosa si dirà
di me" :D
--
- Tesoro, un pene piccolo non può certo mettere
in crisi la nostra relazione!
- Lo so cara, ma preferirei che tu non lo avessi
proprio.
El_Ciula
2019-02-14 22:28:17 UTC
Permalink
Post by Archaeopteryx
Post by El_Ciula
Finisce che per accendere un led ci mettete l'arduino
perch� vi avanza.
Dato che ho un cassetto pieno di arduini di vari tipi
sono arrivato molto vicino a una cosa del genere.
Naturalmente cosa sia stato è un segreto che morirà con
me, nonostante io non ci tenga così tanto al "cosa si dirà
di me" :D
Si, va bene, ma la questione è il vero nonsense, turi una falla con la
carta igienica...

Si sa che le cpu hanno punti deboli va usato qualcosa di concreto per
tamponare e meglio dell'analogico non esite nulla al mondo. Mettimo che
il blocco avvenga per spike o altro disturbo, calo alimentazione etc.
non ti salva nulla se non lavorare in analogico.
Archaeopteryx
2019-02-15 07:35:20 UTC
Permalink
Post by El_Ciula
Si sa che le cpu hanno punti deboli va usato qualcosa
di concreto per tamponare e meglio dell'analogico non
esite nulla al mondo. Mettimo che il blocco avvenga per
spike o altro disturbo, calo alimentazione etc. non ti
salva nulla se non lavorare in analogico.
Penso pure io che l'analogico abbia degli aspetti
imbattibili da qualsiasi tecnologia digitale :)
--
- Tesoro, un pene piccolo non può certo mettere
in crisi la nostra relazione!
- Lo so cara, ma preferirei che tu non lo avessi
proprio.
Franco Af
2019-02-15 10:18:24 UTC
Permalink
Post by El_Ciula
Si sa che le cpu hanno punti deboli va usato qualcosa di concreto per
tamponare e meglio dell'analogico non esite nulla al mondo. Mettimo che
il blocco avvenga per spike o altro disturbo, calo alimentazione etc.
non ti salva nulla se non lavorare in analogico.
ma cosa dici Ciula :)
come fai con l'analogico a segnalare un circuito che non funziona ?
Il digitale completa sempre un circuito analogico e lo rende più sicuro.
Anche un blocco da spike lo puoi segnalare immediatamente (dipende dal
grado di sicurezza che vuoi ottenere)ed agire nel minor tempo possibile.

I costi del digitale sono calati moltissimo e vanno bene per "tutte" le
sistuazioni.
Giorgio
2019-02-15 13:31:27 UTC
Permalink
Post by El_Ciula
Ho letto tutto,
per me ragionate quasi tutti in modo assurdo, una cosa seria è mettere
un monostabile retriggherabile e dagli un impulso, se si inchioda il
micro fa lui il reset, affidarsi ad un altro microcontrollore è
quantomeno una idiozia.
Finisce che per accendere un led ci mettete l'arduino perchè vi avanza.
Non mi sono spiegato, si tratta di un pin dello stesso micro che produce
"l'autoreset", non ci sono 2 micro. Giorgio
--
LAB
2019-02-15 16:44:44 UTC
Permalink
...e proprio lì sta il problema! :-)
--
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
Archaeopteryx
2019-02-15 17:17:42 UTC
Permalink
Post by LAB
...e proprio lì sta il problema! :-)
Tanto è sempre colpa tua :D :D :D
--
"La teoria è sapere come funzionano le cose e
non sapere come farle funzionare; la pratica è
sapere come far funzionare la cose senza sapere come
funzionano; il nostro scopo è unire la pratica
alla teoria per riuscire a non far funzionare
le cose senza capire come abbiamo fatto"
LAB
2019-02-15 17:29:16 UTC
Permalink
:D
--
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
Giorgio
2019-02-15 17:38:54 UTC
Permalink
Post by LAB
...e proprio lì sta il problema! :-)
L'autoreset hard. proposto all'inizio funzionava benissimo, l'ho detto +
volte. Adesso ne faccio a meno perche' ho trovato un semplice codice che
usa il Watchdog per fare il reset soft.

void Software_Reset()
{
//============================================================================================
// führt ein Reset des Arduino DUE aus...
//
// Parameter: keine
// Rueckgabe: keine
//============================================================================================
const int RSTC_KEY = 0xA5;
RSTC->RSTC_CR = RSTC_CR_KEY(RSTC_KEY) | RSTC_CR_PROCRST | CR_PERRST;
while (true);
}



--
El_Ciula
2019-02-15 17:46:38 UTC
Permalink
Post by Giorgio
Post by LAB
...e proprio lì sta il problema! :-)
L'autoreset hard. proposto all'inizio funzionava benissimo, l'ho detto +
volte. Adesso ne faccio a meno perche' ho trovato un semplice codice che
usa il Watchdog per fare il reset soft.
Funziona benissimo quando funziona...
El_Ciula
2019-02-15 17:44:26 UTC
Permalink
Post by LAB
...e proprio lì sta il problema! :-)
Sono serio e per nulla spocchioso, e come leggo quanto quoto, è quello
il problema.

Probabilmente vi mancano 30 anni di rogne e disturbi su sistemi
progettati bene a tavolino ma non visti nell'ambiente industriale dove
poi sarebbero finiti.

I watchdog dei micro sono inaffidabili per definizione (basta capire
bene come funziona un microcontrollore, e non se ne esce a nessun
livello) figuriamoci poi se pilotati dallo stesso.

Il reset deve nascere da qualcosa di esterno che preveda generi appunto
l'impulso di reset se non avviene l'evento, cioè se un clock proveniente
dal micro non viene rispettato nei suoi parametri, ma deve essere in
grado di dare reset ad esempio se il clock è sempre alto o basso
(inchiodamento).

Per avere garanzie del 100% si usa l'analogico non ci sono alternative
di nessun genere.
RobertoA
2019-02-28 15:29:19 UTC
Permalink
Post by El_Ciula
Post by LAB
...e proprio lì sta il problema! :-)
Sono serio e per nulla spocchioso, e come leggo quanto quoto, è quello
il problema.
Probabilmente vi mancano 30 anni di rogne e disturbi su sistemi
progettati bene a tavolino ma non visti nell'ambiente industriale dove
poi sarebbero finiti.
I watchdog dei micro sono inaffidabili per definizione (basta capire
bene come funziona un microcontrollore, e non se ne esce a nessun
livello) figuriamoci poi se pilotati dallo stesso.
Il reset deve nascere da qualcosa di esterno che preveda generi appunto
l'impulso di reset se non avviene l'evento, cioè se un clock proveniente
dal micro non viene rispettato nei suoi parametri, ma deve essere in
grado di dare reset ad esempio se il clock è sempre alto o basso
(inchiodamento).
Per avere garanzie del 100% si usa l'analogico non ci sono alternative
di nessun genere.
Motiva, please
(richiesta non ironica,
ma per sete di sapere,
mejjio specificarlo,
si sa mai...)

Loading...