Kdy reaguje reset PIN
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Kdy reaguje reset PIN
Prosím poradit,
chci použít na arduinu reset pin k resetování arduina pomocí jiného řídícího pinu. Reset se provede při logické nule. Všude se píše, že při startu či vypnutí arduina je na všech pinech logická nula, resp. evidentně reset pin je nastaven jako inuput s pullup a když ho zapojíte do nezepnutého/nenastaveného pinu = LOW = reset.
A jak arduino zapnu se zapojeným reset pinem?
Všude se píše, že musíte ovládací pin, kterým řídíte reset nastavit na HIGH - ale kdy? Jak se může nastavit, když vlastně zapnu arduino, v ten okamžik je na reset LOW = reset = restart = na ovládacím pinu je LOW a tak do nekonečna. Dle této logiky prostě nemůže arduino nastartovat, protože je stále reset pin LOW. Ale evidentně to funguje a zapnou lze, když na ovládacím pinu nastavíte HIGH. Ale z toho plyne otázka:
Kdy začne arduino řešit, co je na pinut reset?
Je to až po setup() ? Nebo někdy prostě "později" ? Až dojde k loop() ? Hned to být nemůže, musí tam být prostor k nastavení ovládacího pinu na HIGH.....
chci použít na arduinu reset pin k resetování arduina pomocí jiného řídícího pinu. Reset se provede při logické nule. Všude se píše, že při startu či vypnutí arduina je na všech pinech logická nula, resp. evidentně reset pin je nastaven jako inuput s pullup a když ho zapojíte do nezepnutého/nenastaveného pinu = LOW = reset.
A jak arduino zapnu se zapojeným reset pinem?
Všude se píše, že musíte ovládací pin, kterým řídíte reset nastavit na HIGH - ale kdy? Jak se může nastavit, když vlastně zapnu arduino, v ten okamžik je na reset LOW = reset = restart = na ovládacím pinu je LOW a tak do nekonečna. Dle této logiky prostě nemůže arduino nastartovat, protože je stále reset pin LOW. Ale evidentně to funguje a zapnou lze, když na ovládacím pinu nastavíte HIGH. Ale z toho plyne otázka:
Kdy začne arduino řešit, co je na pinut reset?
Je to až po setup() ? Nebo někdy prostě "později" ? Až dojde k loop() ? Hned to být nemůže, musí tam být prostor k nastavení ovládacího pinu na HIGH.....
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Kdy reaguje reset PIN
A kde všude se to píše? Většina pinů MCU po resetu je nastavována jako vstup. Tím pádem pomocí pullup nebo pulldown rezistoru můžeš určit jeho výchozí úroveň. Řešíš problém, který neexistuje.Všude se píše, že při startu či vypnutí arduina je na všech pinech logická nula
Re: Kdy reaguje reset PIN
Pin RESET je vstupní a protože musí mít úroveň H, tak je, většinou, přes rezistor zapojen na napájení čipu. Funkce resetu je asynchronní a je naprosto jedno, jaký program uvnitř běží a v jaké je fázi. Je to prostě záležitost hardware.
Nevím, co tě vede k použití eterního pinu jako reset, ale dá se to udělat i jinak. V programu si definuješ funkci
Je to vlastně pointer na funkci nastavený na adresu 0, kde je uložen tzv. RESET vektor, tedy adresa, kde se začíná po HW resetu.
V programu pak pro provedení resetu jen zavoláš tu funkci
a tím se zresetuje stejně, jak pinem RESET.
Nevím, co tě vede k použití eterního pinu jako reset, ale dá se to udělat i jinak. V programu si definuješ funkci
Kód: Vybrat vše
void(* ResetArduino)(void) = 0; //SW reset arduina
V programu pak pro provedení resetu jen zavoláš tu funkci
Kód: Vybrat vše
ResetArduino();
Re: Kdy reaguje reset PIN
https://www.theengineeringprojects.com/ ... cally.html - kdekoliv, kde se vytváří takový program, tak první, co se musí udělat, je nastavin pin na HIGH - zde dokonce dříve, než se definu pin mode OUTPUT.....
Když to neudělám, arduino nenaběhne, protože se stále resetuje....
Tak nevím, ale když zapnu Arduino, tak na všech pinech naměřím 0 V - tedy log 0.... Řešíš problém, který neexistuje.
Re: Kdy reaguje reset PIN
Po zapnutí arduina, jsou všechny piny nastaveny jako vstupní. Mají tedy stav vysoké impedance. Pokud bys na ten vstup dal voltmetr, naměříš nulu, protože tam není injektováno žádné napětí, ne z důvodu 6e by ten vstup byl držený jako výstup na nule. Snadno to ověříš tím, že pin zapojíš přes rezistor na napájení, a najednou tam to napětí naměříš.
Pokud chceš opravdu spínat reset jiným výstupem, stačí, když ho spojíš s RESET vývodem. Nejdříve si na něm nastavíš H a pak ho teprve zapneš jako výstup. Následně ho sepneš na L a arduino se zresertuje. To ti zároveň nastaví ten pin, tkerým jsi reset provedl jako vstupní.
Kód: Vybrat vše
#define RSTPIN 6
setup{
digitalWrite(RSTPIN,HIGH);
pinMode(RSTPIN, OUTPUT);
}
loop{
......
digitalWrite(RSTPIN, LOW); //okamzity HW reset arduina
}
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Kdy reaguje reset PIN
Když je pin po resetu nastaven jako ryzí input, tak na něm není definována logická úroveň. Prostě použiješ externí pullup rezistor, který ostatně na pinu RESET stejně musí být. A v programu v části setup() nastavíš pro daný pin hodnotu HIGH a přepneš ho do režimu output.
Jinak ta funkce pro reset, kterou popisuje ondraN, je velmi dobrá.
ondraN byl rychlejší, ale naprosto přesně popsal problém.
Jinak ta funkce pro reset, kterou popisuje ondraN, je velmi dobrá.
ondraN byl rychlejší, ale naprosto přesně popsal problém.
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Kdy reaguje reset PIN
děkujiondraN píše: ↑24 zář 2020, 09:35Pin RESET je vstupní a protože musí mít úroveň H, tak je, většinou, přes rezistor zapojen na napájení čipu. Funkce resetu je asynchronní a je naprosto jedno, jaký program uvnitř běží a v jaké je fázi. Je to prostě záležitost hardware.
Nevím, co tě vede k použití eterního pinu jako reset, ale dá se to udělat i jinak. V programu si definuješ funkciJe to vlastně pointer na funkci nastavený na adresu 0, kde je uložen tzv. RESET vektor, tedy adresa, kde se začíná po HW resetu.Kód: Vybrat vše
void(* ResetArduino)(void) = 0; //SW reset arduina
V programu pak pro provedení resetu jen zavoláš tu funkcia tím se zresetuje stejně, jak pinem RESET.Kód: Vybrat vše
ResetArduino();
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Kdy reaguje reset PIN
OK, díky všem za odpovědi.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 27 hostů