Gå til start efter afbryder?

I

ipunished

Guest
Jeg forstår, at når en afbryder sker mikro controller vender tilbage til, hvor det venstre fra .. men min afbryde består af en stop-switch, altså efter iterrupt jeg vil have det til at stoppe alt .. min kode består af at køre en motor i et stykke tid (1) loop .. efter hardware interrupt presses det skal stoppe alt og derefter igen vente på start-knappen, der skal trykkes .. Jeg tænkte på at kalde på startknappen funktion inden for ISR, men det vil efterlade stakken uafviklede. nogen måde at komme omkring dette?
 
kan du sætte din kode og skematiske ... Og også De nævnte efter hardware interrupt presses det skal stoppe alt, betyder, at du vil controlleren selv slukket eller kun motor ... Hvis du ønsker hele systemet [controller for] at slukket jeg kan give en løsning ... Dette kan gøres ved at lægge små hardware kredsløb ... Anvendelse eller gate [74HC1G32] og Load skifte [FPF2100] du kan opnå dette en ... ELLER gate har to indgange [A og B] B skulle tilsluttes trykknap [knap den ene ende vil gå til input af OR gate og anden ende går til VCC med pull down modstand] og A skal blive opkoblet til GPIO af controller, produktion af ELLER gate [Y] burde få forbindelse til ON [3:e pin] af FPF2100 [med pull down modstand] ... Den VOUT [5:e pin] af FPF2100 vil blive opkoblet til VCC af microcontroller ... Logikken er ganske simpel, når du trykker på knappen, vil produktionen af OR gate være høje, der er sluttet til at indlæse og skifte strømmen går til controller ... I dit program gør GPIO høje [Hvilket er forbundet med andre input af OR gate], derefter løbende strøm går til controller ... Så stop er trykket på kontakten, stop alt [lide, hvad du siger] ... Igen startkontakt trykket, vil Hardware tager os af alt [Undtagen gør GPIO høj ]...: smil:
 
Tak for Deres detaljerede svar, kandhu, men jeg dont ønsker at vende microcontroller helt ud, som efter afbrydelsen, vil jeg det til at vente på start-knappen igen, jeg vil bare tahts efter stop kontakten er trykket det bare stoppet alt , jeg mener sende 0 til alle udgange, men efter at jeg vil have det til at vente på starten switchg igen .. min kode til ISR allerede nu, indeholder kun at sende 0 til udgangsporte = /
 
Du kan ændre din kode i ISR rutine, og bruge et simpelt loop venter på at overgangen skal trykkes igen. Når det er trykket start everthing derefter afslutte rutinen.
 
| Jeg tænkte på det, men plejer det lade stakken roderi .. Jeg mener, når den microcontroller går til ISR, den gemmer hvad den laver på stakken og så komme tilbage og hente ..
 
Sin bedre for dig at sætte kode her ... Så nogen give løsning på dit problem ...
 
Når du indtaster rutine, det stopper afbryde processen. Den har kun gemmer returadressen. Du har brug for noget som dette Gem registre. stoppe motoren. skifte alle udgange til nul. Loop venter på, at kontakten skal trykkes igen. starte motoren gendanne udgange. klart noget interrupt flag gendanne registre [I ] exit ISR [/I]
 

Welcome to EDABoard.com

Sponsor

Back
Top