Kombinerad funktion på knapp. RESET + I/O på en µC
- 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
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
Ä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.
- 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
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
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
- 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
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.
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.
Re: Kombinerad funktion på knapp. RESET + I/O på en µC
Finns även kretsar för hold for reset.
Ex http://www.micrel.com/index.php/product ... cle/5.html
Ex http://www.micrel.com/index.php/product ... cle/5.html
- 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
Hehe, då har Microchip köpt upp Micrel också...
Re: Kombinerad funktion på knapp. RESET + I/O på en µC
> ...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.
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.
Re: Kombinerad funktion på knapp. RESET + I/O på en µC
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.
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.
Re: Kombinerad funktion på knapp. RESET + I/O på en µC
Det är väl det sistnämnda som den inbyggda watchdogen i princip gör?
Re: Kombinerad funktion på knapp. RESET + I/O på en µC
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.
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.
- 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
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
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"?
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

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"?
Re: Kombinerad funktion på knapp. RESET + I/O på en µC
> 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".
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".
- 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
Ah kanon. Då hänger jag med. Kommer testa detta framöver också.
Re: Kombinerad funktion på knapp. RESET + I/O på en µC
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.
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.
- 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
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.
Mycket möjligt att linear har en enklare krets som gör det du behöver.
- 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
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å.
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å.