AVR: Watchdog som tidsinställda avbrott



I denna tutorial jag använder en Attiny85 mikrokontroller och jag vill ha en lysdiod blinka med ungefär 1 andra intervall.

Vanligtvis med Arduino och andra blink tutorials använda du bara en fördröjning av 1 andra eller 1000 millisekunder för att slå på och av. I den här guiden kommer vi att använda en speciell funktion för MCU som sällan får den uppmärksamhet det förtjänar.

WATCHDOG
Nu som låta hunden ut du kan säga, och jag skrattar... haha...

Watchdog används normalt som en säkerhetsåtgärd, för om MCU i en otillgänglig plats och det hänger av någon anledning, du har ingen möjlighet att återställa det och få det att fungera igen. Så vakthund är en nästan separat del av MCU, har den en klocka i sin egen (normalt en RC-krets) och en prescaler av denna klocka, nu vad den inte har är en timer jämföra eller ett sätt att ange en exakt timing. Det finns bara översvämningen.

Nu för en ATtiny85 finns 10 olika prescaling för att använda, från 16ms till 8 sekunder (se datablad s. 46 för detaljer). Watchdog används normalt för att återställa MCU men det kan också ställas in att köra en avbryta.

Först och främst, låt oss börja med att sätta upp vakthund.

Inaktivera alla avbrott
CLI();

/ * Rensa MCU Status Register. Egentligen inte behövs här som vi inte behöver veta varför MCU fick återställa. sida 44 av datablad * /
MCUSR = 0;

/ * Inaktivera och radera alla inställningar för Watchdog. Trevligt att få en kula när man arbetar med avbryter * /

WDTCR = (1 << WDCE) | (1 << Mimmi);
WDTCR = 0;

Setup vakthund för avbrott och återställs inte, och ett ungefärligt 500ms timeout s.45
WDTCR = (1 << WDIE) | (1 << WDP2) | (1 << WDP0);

Aktivera alla avbrott.
SEI();

Detta är det säkra sättet att ställa upp, anledningen till varför vi gör lite "städning" i början är att se till att vi får vad vi vill. statisk och vem vet vad kan röra upp en MCU så det är bra att göra det rätt, om du inte vill att vara säker, allt du behöver är denna linje

WDTCR = (1 << WDIE) | (1 << WDP2) | (1 << WDP1);

Nu har vi watchdog ställs in och gör ingenting, väl inte riktigt som vakthund är en säkerhetsåtgärd det har några intrikata flyttar. I detta fall vi säger till den att köra en ISR varje 500ms (ungefär) men vi har inte gjort en ISR för det ännu, och som sagt denna funktion har några intrikata sätt fungera så när ISR körs, watchdog automatiskt växlar från avbrottsläge återställa läget!
Om inte avbrottsläge aktiveras igen i ISR.

Så, låt oss göra en blinky ISR

ISR(WDT_vect) {
Flip bit 3 av PORTB
PORTB ^ = (1 << 3);

/ * Återaktivera watchdog avbrottet, som detta får återställa när du anger denna ISR och kan automatiskt Mimmi signalen som återställer MCU nästa gång timern flödar över * /
WDTCR | = (1 << WDIE);

}

Nu har vi en ISR som vänder den LED som du har anslutit till PORTB3 på och av varje 1/2 sekund och återaktiverar avbrottet.
Var inte enkelt?

Här är hela MrBlinky c-filen.

Relaterade Ämnen

FPGA tidsinställda universell fjärrkontroll (IR)

Har din rumskompis någonsin lämnat TV: N på sent på kvällen? Har du någonsin velat begränsa hur länge du tittar på TV? Tja kommer att denna enhet hjälpa styra TV: N och se till att den stängs av i tid.Med din egen FPGA kartong, IR-sensorn och LED, ka...

MacGyver tidsinställda dörröppnare

att titta på den verk -[ http://www.youtube.com/watch?v=bqKV55X3PA4 ]Steg 1: vad du behöverdet första du behöver är din pålitliga Swiss Army Knife. Nästa du behöver - en bra längd på para sladd - en vikt (hink, tegel osv...) - några matcher - din tro...

Arduino solar tidsinställda pool värmare

1. ursäkta dålig grammatik/stavning...Förra året beslöt jag att göra en solfångare för min ovan mark pool...Jag har köpt 400' av svart PVC rör... en damm pump... och beslag...Jag hade det körs på en timer,, som har 30 min på och av,, vilket inte är b...

100 x knapptryckning tidsinställda spel

spelet är enkelt. Du har en utsatt tid att trycka på knappen 100 gånger. Det finns också 5 LED lampor på en skärbräda. Varje 10 pressar, en tänds. En gång du slå 60 börjar de att stänga av en efter en. Om du får 100 pressar i föreskriven tid sedan ko...

LED Cube 8 x 8 x 8

skapa din egen 8 x 8 x 8 LED Cube 3-dimensionell display!Vi anser detta Instructable är den mest omfattande steg för steg guiden att bygga en 8 x 8 x 8 LED Cube någonsin publicerats på intertubes. Det kommer att lära dig allt från teorin om operation...

Billiga & lätt opto-isolerade TTL till 110V ljus kontrollmodul

detta Instructable visar hur du omvandlar affären ljus-kontrollerade butiker till låg kostnad styrmoduler för att säkert köra 110V laster med 5V (TTL) eller andra lågspänning styrsignaler.MotivationJag ville ha ett sätt att helt isolera 110V högspänn...

Nosquito!

Är du inte trött på myllrande flugor, chomping myggor, eller ens irriterande Knott? Det är dags att bita tillbaka! Detta kan alla göras möjligt genom Nosquito. Genom att eliminera pesky buggar fri hand, på ett sätt som tidsinställda, gör Nosquito att...

En komplett starter guide till AVRs

har du spelat med Arduinos och nu har en smak för microcontrollers?Har du försökt att gå bortom Arduino men blev stoppad av den täta datablad?Detta är den instructable för dig!Jag arbetade på en instructable för epilog tävlingen som skulle trådlöst k...

AVR fuse grunderna: kör en avr med en extern klocka

säkringar är bland de svåraste ämnen som jag stött på samtidigt lära sig om programmering microcontrollers. Även efter att söka och läsa flitigt, kunde jag fortfarande inte lyckas rensa mitt begrepp om dem. Men sedan jag började lära dem ta en i tage...

AVR Chronograph från koncept till PCB

en kronograf är en anordning som används för att mäta hastigheten på en passerande objekt. I enklaste form, detta innebär att två sensorer av något slag som "se" objektet, en enhet som kan mäta tid, och några utdata till leverera data till använ...

Hur till skapa din egen Anime som Dragon Ball Z eller bleka, Etc.

i detta instructable, jag visar dig hur du skapar din egen anime. T.ex. Naruto, bleach etc.Så uppmärksamma och följa mitt exempel! : DSteg 1: Planering För att skapa en framgångsrik anime kommer ni att ha en massa planering gjort, första prissätter a...

"Tidsinställd Soundie" eller "12 andra ljud grenade"!

inspirerad av en kombination av throwies, thinkgeek.com's "irritera-a-tron" och min nyupptäckta kärlek för 555 timers, jag har kommit med den här lilla killen. Jag kallar det "tidsinställd soundie"när växeln är vänt på det tidsinställd...

Hur man mäter som rusas av solitt med två klumpar av trä...

... ett stoppur och en bekväm vägg.Steg 1: IdénHastigheten är hur långt något färdas i en känd tid hastighet = sträcka / tid.I vardagen, hastighet mäts vanligtvis i antingen miles per timme (eller kilometer i timmen, de flesta av världen är metriska)...

AVR Assembler handledning 3

Välkommen till tutorial nummer 3!Innan vi börjar vill jag göra en filosofisk punkt. Inte vara rädd för att experimentera med kretsar och den kod som vi konstruerar i dessa tutorials. Ändra sladdar runt, lägga till nya komponenter, ta komponenter ut,...

Montering av Dragon Rider 500 för användning med AVR Dragon

inte länge sedan företaget Atmel kom ut med ett bra verktyg för användning med AVR microcontrollers kallas AVR Dragon. Denna lilla USB-enhet ger proffs och amatörer både förmågan att använda: I System programmering (ISP), JTAG, felsöka tråd och hög s...

AVR Development Board

Hej allaJag hoppas att alla har god tid.Mitt namn är Martin och detta är min allra första instructable jag göra för digledsen om min engelska är inte bra, men jag hoppas detta instructable kunde hjälpa någon.Jag inte pro elektriker och jag är en IT-m...

AVR ISP bakbord Header

när jag arbetade först med AVR mikrokontroller, jag litade mycket på tutorials jag hittade på nätet, men nästan alla av dem tog upp frågan om hur du bifogar en programmerare i mikrokontroller när du inte använder en utveckling styrelse. För mesta, ja...

AVR ISP bakbord adapter

Efter helt kliva från Atmel STK500 utveckling styrelsen (som hade inspirerat mig till min första Instructable) jag nu konstruera alla mina kretsar och projekt på brödunderläggen - och vidare: jag också tvinga mina elever att göra så.Använda en skärbr...

Ett skyddande fodral för Atmel AVR Dragon

detta instructable visar dig hur du enkelt ändra en lättillgänglig plastlåda för att hålla och skydda din AVR Dragon PCB.Atmel främjar deras AVR Dragon som en låg kostnad produkt verktyg för användning med deras AVR microcrontollers. Även om produkte...