Kombinerad funktion på knapp. RESET + I/O på en µC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av Magnus_K »

Hej!

Är ganska förbered på att det både är en oklok kombination och halvt olösbart problem men måste fråga ändå.

Hos både PIC (!MCLR) och Arduino-korten så drar man RESET lågt för att göra just en reset av kontrollern.
Önskan jag har är att kunna ha endast en knapp på min inbyggnadslåda där 1 "vanligt" knapptryck går till en I/O men håller jag inne knappen så görs reset när knappen varit tryckt X-antal sekunder.

(Anledningen till varför jag nämner både PIC och Arduino är för att det är dom enda enheterna jag pysslat med. Det ska bara var just en av dom i aktuell installation.)

Enda sk lösningen jag kommer på är att dra en tråd mellan en I/O till RESET-ingången och en annan I/O till knappen. Där efter borde bara bli kod, men finns det risker?
Kan det hända att pga att en I/O i den "resettande" kontrollern hänger sig och håller ingången låg?

Ja, ni kanske ser andra lösningar?

EDIT: Försökt förtydliga ämnet. Från Kombinerad funktion på knapp, RESET och annat på µC till Kombinerad funktion på knapp. RESET + I/O på en µC
Senast redigerad av Magnus_K 2 december 2015, 00:47:55, redigerad totalt 1 gång.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Kombinerad funktion på knapp, RESET och annat på µC

Inlägg av Swech »

Du behöver inte köra en hårdvarureset för att starta om din AVR.
Du kan hoppa till resetvektorn i programmet.
Detta är lika säkert / osäkert som att ditt program läser av en IO port och efter 1 sekund drar hårdvarureseten.
Istället efter 1 sekund så:
Stänger du av alla interrupt och hoppar till reset.

Om däremot knappen skall göra en reset för att processorn kan ha hängt sig så är det bättre att göra en tidsfördröjning med
ett RC nät och en komparator som drar hårdvarureseten.

Swech
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Kombinerad funktion på knapp, RESET och annat på µC

Inlägg av Magnus_K »

Ah sorry! Missade att lägga till anledning. Det kanske hjälper..
Det är precis som du skriver i ditt sista stycke att denna "funktion" ska användas om kontrollern hängt sig.

När du säger RC-nät och komparator, då pratar du om extern komparator och inte använda RC-nät till en intern komparator?
Din idé känns som en skitbra lösning. Det ska bli roligt att labba med det här. Du är duktig du Swech.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av Micke_s »

Finns även kretsar för hold for reset.
Ex http://www.micrel.com/index.php/product ... cle/5.html
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av lillahuset »

Hehe, då har Microchip köpt upp Micrel också...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av sodjan »

> ...denna "funktion" ska användas om kontrollern hängt sig.

Du skriver inte varför inte den vanliga inbyggda watchdog funktionen i
processorn duger? Om du inte vill att den ska starta om "okontrollerat",
så kan den vänta på en knapptryckning efter reset innan den startar normalt.

Om du vill att den ska starta direkt (utan knapptryckning) vid spänningstillslag,
så kan du kolla flaggorna och enbart vänta på konfirmering via knappen då det
var en omstart via watchdog funktionen men inte vid spänningstillslag.
opatagio
Inlägg: 236
Blev medlem: 24 maj 2005, 20:19:21

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av opatagio »

En liten fundering bara. Är det verkligen ett så stort problem med processor som "hänger" sig? Enda gångerna jag råkat ut för "hängning" på PIC är när jag själv tabbat mig i mjukvaran. Visserligen har jag Watchdog aktiverat på samtliga kort jag gjort så jag kanske inte kollat tillräckligt noga.

Men... måste det ske via knapp? Kan man inte nyttja pulståg till RC som håller kretsen i liv via en liten MosFet, så skulle pulståget stanna (ex mjukvaru-PWM) så försvinner matningen. Knappen du har går sedan till ett I/O-ben samt gate till P-Mos. Är processorn strömlös startas den i samband med knapp-tryck, och man bör utan problem hinna läsa av samma knapptryckningen och göra det som skall.
Nerre
Inlägg: 27223
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av Nerre »

Det är väl det sistnämnda som den inbyggda watchdogen i princip gör?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av sodjan »

Njae, det som beskrivs är en koppling för en en-knapps start med
automatisk programvarustyrd avstängning (som i och för sig även
kan stänga av vid programhängning). Watchdogen kan "bara" starta
om, den kan inte stänga av matningsspänningen så som man t.ex.
vill ha i "keyfob" applikationer.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av Magnus_K »

Micke_s aka Idégeneralen:
Det hade jag faktiskt aldrig hört talas om. Just den kretsen du länkar till verkar bara finnas i en sån där QFN-kapsel eller vad dom heter. Ska läsa lite mer om liknande kretsar men tror ändå att jag kör på RC/komparator-spåret. Den lösningen kan jag lösa med komponenter jag redan har hemma samt att jag kanske lär mig lite också.
Men tack så mycket för tipset. Det här kommer jag säkert använda vid ett annat tillfälle!

sodjan:
I ärlighetens namn har jag aldrig använt någon watchdog. Har nog läst om det någon gång i och för sig.
Nu kommer det nog lite mer väsentlig information som jag omedvetet utlämnat. Reset:en ska göras på både µC och ethernet-modul pga ethernetkommunikationen upphör efter att den blivit störd på något sätt.
Eftersom det här inte är något kritiskt system så nöjer jag mig jättebra om jag kan göra en manuell reset de få gånger det kommer behövas.

Meningen är att system ska rulla igång när det får spänning/efter reset men när du ändå nämner det. Hur gör man för att en µC ska hållas i "standby-läge" eller vad man kan kalla det efter reset? Något jag alltid undrat...

opatagio:
En del av svaret till dig kan återfinnas i svaret till sodjan ovan. Det är säkert en jättebra idé du har med pulståget men jag får svettpärlor i pannan bara av att fundera på hur jag skulle få till det och om det verkligen är vad jag söker.
Sen nämner du också "nyckelfrasen": när jag själv tabbat mig i mjukvaran. Det räknar jag med att jag gjort och i det här fallet duger det gott med en hårdvarureset för att täcka över mina programmeringsbrister.

Vill inte verka otacksam men jag kommer köra på Swech:s idé. Lätt för min lilla hjärna att förstå och behöver inte beställa några extra komponenter. Innebär inte heller någon mjukvarumagi.
Dock väldigt nyfiken på det där som sodjan skriver om. Hur man kan få en µC att vara spänningssatt men inte köra programmet. Eller ja, nu när jag tänker på det så kanske det bara är en enkel if-sats i början på main-loopen där man inväntar "knapptryck"?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av sodjan »

> Hur gör man för att en µC ska hållas i "standby-läge" eller vad man kan kalla det efter reset?

Tja, bara att köra en SLEEP direkt, kanske efter att man har fixat så att
man kan få den ur SLEEP med en knapp eller någon annan händelse. Eller,
om det inte passar med SLEEP, stänga av så mycket som möjligt, gå ner
i hastighet så mycket det går och ligga i en loop och vänta på knappen...

> Eller ja, nu när jag tänker på det så kanske det bara är en enkel if-sats
> i början på main-loopen där man inväntar "knapptryck"?

Ja, du har ju 100% kontroll över vad koden gör vid varje tillfälle.
Sannolikt i början av main funktionen men *före* "main-loopen"...
Om det ska vara före eller efter din "init" funktion beror ju på vad
som ska vara igång eller inte medan den väntar på "startsignal".
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av Magnus_K »

Ah kanon. Då hänger jag med. Kommer testa detta framöver också.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av Micke_s »

QFN är inga problem egenligen, i alla fall de med färre pinnar. Löd dom "dead bug style".
En komparator funkar nog också fint, blir lite mer spridning i tiden men kanske inte spelar roll.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
13th.Marine
EF Sponsor
Inlägg: 7265
Blev medlem: 31 december 2004, 16:26:37
Ort: Trelleborg

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av 13th.Marine »

LTC1326 finns också, den har en massa inbyggd matningsövervakning men är i mer lättlödd kapsel.
Mycket möjligt att linear har en enklare krets som gör det du behöver.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Kombinerad funktion på knapp. RESET + I/O på en µC

Inlägg av Magnus_K »

Man får buga och bocka för förslagen men precis som du säger Micke_s så är inte "delayen" speciellt kritisk i mitt fall.
Det lutar åt att man behöver hålla knappen i 3-5s för att göra en reset och förhoppningsvis driftar inte filtret så mycket med tiden.
Jag har fått passande värden och kretsen att fungera perfekt i LTSpice nu så det kör vi på.
Skriv svar