Přejít na začátek po přerušení?

I

ipunished

Guest
Chápu, že když dojde k přerušení mikroprocesoru se vrátí tam, kam odešel z .. ale můj přerušení se skládá z vypínač, tj. po iterrupt chci, aby to všechno zastavit .. můj kód se skládá ze spuštění motoru v while (1) smyčky .. Po hardwarové přerušení stisku by měl přestat všechno a pak zase čekat na start tlačítko stisknout .. Myslel jsem, že volání na tlačítko Start funkce v ISR, ale že opustí stack nezúčtovaných. jakýmkoli způsobem obejít?
 
mohl byste dát svůj kód a schematické ... A také jste se zmínil, po hardwarové přerušení stisku je třeba zastavit všechno, to znamená, že chcete regulátor sám vypne, nebo jen motor ... Pokud chcete celý systém [řadič příliš] pro vypnutí můžu dát jedno řešení ... Toto může být děláno tím, že malý okruh hardware ... Pomocí OR gate [74HC1G32] a zatížení přepínat [FPF2100] můžete dosáhnout tenhle ... OR má dva vstupy [A a B] B by měly připojit tlačítko [tlačítko jednom konci půjde do vstupní brány OR a druhý konec se jde do VCC strhnout odporem] a měla se připojit k GPIO regulátoru, výstup OR [Y] by se připojit k ON [3. pinu] z FPF2100 [s strhnout odporem] ... Vout [5. kolík] z FPF2100 bude se připojit k mikrokontroléru VCC ... Logika je velmi jednoduchá, když stisknete tlačítko, bude výstup brány nebo bude vysoká, že je připojen k zátěži pak přepnout napájení jde do regulátoru ... Ve vašem programu, je GPIO vysoké [který je spojen s další vstupní brány OR], a poté nepřetržitě síla jde do regulátoru ... Pak vypínač je stisknut, zastávka vše [Stejně jako to, co jste řekl] ... Znovu spínač stisknuto, hardware se postará o vše [Kromě tvorby GPIO vysoké ]...: smile:
 
Děkujeme za vaši podrobnou odpověď, kandhu, ale nechci zase mikrokontrolér úplně mimo, protože po přerušení, chci, aby to čekání na start tlačítko znovu, chci tahts po zastavení vypínač je stisknut to prostě zastaví všechno , mám na mysli posílat 0 do všech výstupních portů, ale po tom chci, aby to čekání na start switchg znovu .. můj kód pro ISR již nyní obsahuje pouze odesílání 0 do výstupních portů = /
 
Dalo by se upravit kód v ISR rutiny, a používat jednoduché smyčky, které čekají na spínač, který se stisknuto znovu. Jakmile je stisknuto začít everthing ukončete rutina.
 
| Myslel jsem na to, ale to zvyklý nechat stoh špatně .. Mám na mysli, když jde do mikrokontroléru ISR, ukládá to, co dělá jeho na zásobníku a pak se vrátit a vyzvednout ..
 
Je lepší si dát kód zde ... Pak někdo dát řešení vašeho problému ...
 
Když zadáte rutina, zastaví přerušení procesu. Je to jen obchody, zpáteční adresu. Potřebuješ něco takového Uložit registry. zastavení motoru. přejít všechny výstupy na nulu. smyčky čekal na přechodu na stisk znovu. nastartovat motor obnovit výstupy. jasné, žádné přerušení vlajky obnovit registry [I ] [výstup ISR / I]
 

Welcome to EDABoard.com

Sponsor

Back
Top