[elektro] Mikrokontroller kimenet "megvédése" a resettől?
Xorn
toth.endre at gmail.com
Wed Aug 3 21:37:37 CEST 2016
Tech Help és társai... AFD debugger...
Best regards,
Andy
SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta (2016. augusztus 3. 21:35):
> Hali!
>
> A buhera csúcsa a 286-os PC volt. Az 1 mega fölötti memóriatartományt csak
> protected mode-ban lehetett kihasználni. (HIMEM.SYS, aki elég öreg.)
> Tehát átkapcsolt protectedbe, így már elérte a magasabb címeket is. Igen
> ám, de a 286-ban nem volt lehetőség visszakapcsolni real módba, ahogy
> egyébként a programok futottak. Egyedül a külső reset tudta visszaállítani.
> Ezért az volt a megoldás, hogy a billentyűzet kontroller egyik lába a CPU
> resetre volt kötve, így újra tudta indítani a procit. Előtte a CMOS ramba
> kellett írni egy varázs értéket és a BIOS reset rutinja ezt mindjárt az
> elején megvizsgálta, ha ott adott érték volt, akkor azt törölte, és
> elugrott egy a memóriában ugyancsak előtte eltárolt címre, ahonnan
> folytatódott a programod.
> Csodás :-)
>
> 386-nál minderre már nem volt szükség, ott ki-be kapcsolható volt
> programból a protected mode. Meg volt egy elegáns megoldás az interrupt
> descriptor tábla machinálásával, amivel a 286-oson tripla kizárást és ezzel
> járó resetet lehetett csinálni, ez gyorsabb volt, mint a billentyűzet
> vezérlőt piszkálni. Ráadásul ügyes kóddal el lehetett érni, hogy ugyanaz a
> kód 286-on és 386-on is működjön, de 386-on csak simán visszaálljon real
> módba reset nélkül. Régi szép idők...
>
>
> Szabolcs
>
> 2016. augusztus 3. 20:19 Pataki István írta, <pataki.istvan at freemail.hu>:
>
>> Még az ősidőkben egy háromprocesszoros (Z80!) XT kártyában úgy oldottam
>> meg a sajnálatosan beütő reseteket (ha például 3-as DOS-t kellett
>> újraindítani), hogy a közös RAM-ba letettem egy stringet, amiből indulás
>> után mindegyik (meg az XT is) látta, hogy nem bekapcsolási reset volt, és
>> tudta folytatni az abbahagyott feladatokat.
>>
>> pi
>>
>>
>> ----- Original Message ----- From: "Horvath Janos" <winnerbt at fibermail.hu>
>> To: <elektro at tesla.hu>
>> Sent: Wednesday, August 03, 2016 4:35 PM
>>
>> Subject: Re: [elektro] Mikrokontroller kimenet "megvédése" a resettől?
>>
>>
>>
>>> Nem ismerem az eszközt, de valahogy a 0-ra ugrás az nagyon csak szoftver
>>>> beavatkozásnak tűnik, és régen az Intel CPU-k PC-je is ezt az értéket
>>>> kapta bekapcsolás/hard reset után. Másfajta processzor meg a címezhető
>>>> memória tetejére ugrott ilyenkor.
>>>>
>>> Az végül is mindegy (van olyan, ami 8000h-ra ugrik), a Te programod
>>> úgy is ott kezdődik. (vagy ha van pl. bootloader, akkor az meg máshol)
>>>
>>> A kutya meg arra való, hogy legvégső esetben bármilyen szédült
>>>> állapotból kilökje a processzort, ami már egyértelműen hardver resetet
>>>> kell jelentsen,
>>>>
>>> Ez így ebben a formában nem igaz, ezért van olyan lehetőség, hogy csak
>>> megszakítást ad. Az oda helyezett rutin meg vagy megvizsgálja a hiba okát
>>> és cselekszik, vagy mondjuk menti a fontos dolgokat, loggol vagy...
>>> Aztán persze ha kell, végrehajthat igazi RESETet.
>>>
>>> aminél csak a tápmegszakítás keményebb. Ilyenkor alapba
>>>> kell állnia program indítás előtt minden hardver modulnak, ami
>>>> (szerintem, általános célú vezérlőnél) egyetlen felhasználói lábon sem
>>>> jelenthet aktív kimenetet.
>>>>
>>> Lásd fentebb, akár vissza is találhat a megfelelő helyre.
>>> (bár való igaz, akkor már nagy baj van, ha normálisan megírt
>>> programba beleköszön a WD)
>>>
>>> Egy régi példa:
>>> Iszonyat zavar közepette (triac-os fázisszög vezérlés) néha beköszönt
>>> Reset vagy WD vagy valami. A program való igaz, hogy újraindult,
>>> de megvizsgálta, hogy a változók normálisnak mondhatóak-e.
>>> Ha nem talált hibát, akkor beugrott a szabályozásba, mint ha mi sem
>>> történt volna. A jelenség az lett, hogy max 1 periódusú gyújtás
>>> kicsit félrement (nem volt), de mire jött a következő félperiódus,
>>> már ment, mint ha semmi nem történt volna, és a szabályozó tagok
>>> értéke is megmaradt (mert nem volt tápelvétel, így a RAM tartotta
>>> az adatokat).
>>>
>>> Tehát nem mindig csak HW Resetre lehet ezt használni.
>>>
>>> JAni
>>> 16:34
>>>
>>>
>>> pi
>>>>
>>>>
>>>>
>>>> ----- Original Message ----- From: "Karoly Kovacs" <koka55 at gmx.at>
>>>> To: <elektro at tesla.hu>
>>>> Sent: Wednesday, August 03, 2016 10:23 AM
>>>> Subject: Re: [elektro] Mikrokontroller kimenet "megvédése" a resettől?
>>>>
>>>>
>>>> Apró érdekesség, és nem tudok rájönni, mi okozza.
>>>>> Ha "dirty" módszerrel resetelek (ugrás a 0-ás címre), akkor minden
>>>>> oké, de az interneten mindenütt ajánlott tiszta módszer (Watchdog-gal
>>>>> resetelni) nálam nem működik. Pontosabban túl jól működik: reseteli a
>>>>> portokat is. A WDT reset biztosan csinál valami pluszt is,
>>>>> valószínűleg nagyon részletesen el kellene olvasnom az Atmega 328-as
>>>>> doksikat.
>>>>> De különösebben nem hoz lázba ez a "hiba", megelégszem a piszkos
>>>>> módszerrel. :)
>>>>>
>>>>> Károly
>>>>>
>>>>> Pataki István wrote:
>>>>>
>>>>>> OK! Megzavart a "reset" szó, ami nálam főleg hardver resetet jelent,
>>>>>> bár
>>>>>> én is használok olyan eszközöket, amikben akár többszintű is lehet a
>>>>>> "reset"-nek nevezett (szoftver) funkció.
>>>>>>
>>>>>> pi
>>>>>>
>>>>>>
>>>>>> ----- Original Message ----- From: "Karoly Kovacs" <koka55 at gmx.at>
>>>>>> To: <elektro at tesla.hu>
>>>>>> Sent: Tuesday, August 02, 2016 9:51 PM
>>>>>> Subject: Re: [elektro] Mikrokontroller kimenet "megvédése" a
>>>>>> resettől?
>>>>>>
>>>>>>
>>>>>> Pista!
>>>>>>>
>>>>>>> De hát már írtam, hogy megoldódott!
>>>>>>> És a biztonság kedvéért "megfejeltem" a Jóska által ajánlott
>>>>>>> kondival.
>>>>>>> Úgy tűnik, stabil.
>>>>>>>
>>>>>>> Köszi mindenkinek!
>>>>>>> Károly
>>>>>>>
>>>>>>> Pataki István wrote:
>>>>>>>
>>>>>>>> Az itt felvetett megoldások nagyon különböző eredményre vezetnek.
>>>>>>>> Amíg
>>>>>>>> nincsen definiálva pontosan a feladat, csak találgatás szintjén
>>>>>>>> megy az
>>>>>>>> ötletelés.
>>>>>>>>
>>>>>>>> pi
>>>>>>>>
>>>>>>>>
>>>>>>>> ----- Original Message ----- From: "Karoly Kovacs" <koka55 at gmx.at>
>>>>>>>> To: <elektro at tesla.hu>
>>>>>>>> Sent: Tuesday, August 02, 2016 12:09 PM
>>>>>>>> Subject: Re: [elektro] Mikrokontroller kimenet "megvédése" a
>>>>>>>> resettől?
>>>>>>>>
>>>>>>>>
>>>>>>>> Nem zártam ki, lehet, hogy rosszul fogalmaztam.
>>>>>>>>> Nem a sw resetet zártam ki, hanem azt vontam kétségbe, hogy
>>>>>>>>> szoftveresen megoldható ez a probléma.
>>>>>>>>>
>>>>>>>>> Károly
>>>>>>>>>
>>>>>>>>> Pataki István wrote:
>>>>>>>>>
>>>>>>>>>> Az indító kérdésben magad zártad ki a sw resetet:)
>>>>>>>>>>
>>>>>>>>>> Az biztos, hogy nem azonos a hard resettel, de mindig meg kell
>>>>>>>>>> nézni a
>>>>>>>>>> vezérlő adatlapjában. De ha jól értem, te csak a szoftvert akarod
>>>>>>>>>> újraindítani valami miatt, amiről azonban nem írtál, pedig
>>>>>>>>>> fontos,
>>>>>>>>>> mert
>>>>>>>>>> az határozza meg, hogy hard vagy szoft beavatkozásra van-e
>>>>>>>>>> szükség!
>>>>>>>>>>
>>>>>>>>>> pi
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ----- Original Message ----- From: "Karoly Kovacs"
>>>>>>>>>> <koka55 at gmx.at>
>>>>>>>>>> To: <elektro at tesla.hu>
>>>>>>>>>> Sent: Tuesday, August 02, 2016 7:53 AM
>>>>>>>>>> Subject: Re: [elektro] Mikrokontroller kimenet "megvédése" a
>>>>>>>>>> resettől?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Na, megmértem szkóppal. Lehet, hogy nem is kell semmit
>>>>>>>>>>> csinálnom.
>>>>>>>>>>> Ha a Setup részben (Arduinoról van szó) csak az áll, hogy:
>>>>>>>>>>> pinMode(TRIAK_PIN, OUTPUT);
>>>>>>>>>>> azaz, ha ott nem állítom be a szintet (LOW vagy HIGH), hanem
>>>>>>>>>>> magában a
>>>>>>>>>>> programban állítgatom, és a resetet így definiálom:
>>>>>>>>>>> void(* resetFunc) (void) = 0;
>>>>>>>>>>> majd a megfelelő helyen felhívom, akkor nem csinál semmit az
>>>>>>>>>>> output
>>>>>>>>>>> porttal. Juhééééé! :)
>>>>>>>>>>> (Ha hw resetet csinálok, akkor természetesen mindent resetel.)
>>>>>>>>>>>
>>>>>>>>>>> Károly
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Karoly Kovacs wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Sőt, még egyszerűbbet találtam: RS tároló. (Illetve a kényelem
>>>>>>>>>>>> és a
>>>>>>>>>>>> biztonség kedvéért egy 74HC74 vagy egy 4013 D tároló).
>>>>>>>>>>>> Van ugyanis elegendő szabad kimenetem a mikrokontrolleren, így
>>>>>>>>>>>> simán meg
>>>>>>>>>>>> tudom oldani, hogy a tároló R és S bemeneteit billegetem, nem
>>>>>>>>>>>> baj,
>>>>>>>>>>>> hogy
>>>>>>>>>>>> két kimenetet használok fel e célra. Ekkor nem is kell
>>>>>>>>>>>> vacakolnom a
>>>>>>>>>>>> Watchdoggal.
>>>>>>>>>>>>
>>>>>>>>>>>> Károly
>>>>>>>>>>>>
>>>>>>>>>>>> Pataki István wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Szerintem is ezzel oldható meg a feladat, amennyiben az a
>>>>>>>>>>>>> specifikáció,
>>>>>>>>>>>>> hogy a bekapcsolt állapotot ne szakítsa meg egy adott
>>>>>>>>>>>>> időtartamot nem
>>>>>>>>>>>>> túllépő reset állapot. A leírásból az látszik, hogy kikapcsolt
>>>>>>>>>>>>> állapotban nincsen dolga a védelemnek, a felhúzó ellenállás
>>>>>>>>>>>>> ezt nem
>>>>>>>>>>>>> teljesíti.
>>>>>>>>>>>>>
>>>>>>>>>>>>> pi
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ----- Original Message ----- From: "Karoly Kovacs"
>>>>>>>>>>>>> <koka55 at gmx.at>
>>>>>>>>>>>>> To: <elektro at tesla.hu>
>>>>>>>>>>>>> Sent: Monday, August 01, 2016 10:56 PM
>>>>>>>>>>>>> Subject: Re: [elektro] Mikrokontroller kimenet "megvédése" a
>>>>>>>>>>>>> resettől?
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Horvath Janos wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Reset alatt nem 0-ban van, hanem lebeg.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ja, igen igazad van!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Közben arra gondoltam, hogy mi lenne, ha a kimeneten egy
>>>>>>>>>>>>>> 555-ös
>>>>>>>>>>>>>> monostabilt alakítanék ki (ez hajtaná aztán az optocsatolón
>>>>>>>>>>>>>> keresztül
>>>>>>>>>>>>>> a Triakot), ezt a monostabilt pedig Watchdog-gal lökdösném?
>>>>>>>>>>>>>> Ez
>>>>>>>>>>>>>> szerintem tuti biztosan 1-ben marad (a monostabil
>>>>>>>>>>>>>> időállandójáig),
>>>>>>>>>>>>>> akármilyen reset esetén is.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Károly
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> -----------------------------------------
>>>>>>>>>>>>> elektro[-flame|-etc]
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> -----------------------------------------
>>>>>>>>>>>> elektro[-flame|-etc]
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> -----------------------------------------
>>>>>>>>>>> elektro[-flame|-etc]
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -----------------------------------------
>>>>>>>>>> elektro[-flame|-etc]
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -----------------------------------------
>>>>>>>>> elektro[-flame|-etc]
>>>>>>>>>
>>>>>>>>
>>>>>>>> -----------------------------------------
>>>>>>>> elektro[-flame|-etc]
>>>>>>>>
>>>>>>>
>>>>>>> -----------------------------------------
>>>>>>> elektro[-flame|-etc]
>>>>>>>
>>>>>>
>>>>>> -----------------------------------------
>>>>>> elektro[-flame|-etc]
>>>>>>
>>>>>
>>>>> -----------------------------------------
>>>>> elektro[-flame|-etc]
>>>>>
>>>>
>>>> -----------------------------------------
>>>> elektro[-flame|-etc]
>>>>
>>>
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>>
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list