MicroController Register Manipulation (1 / 6 steg)
Steg 1: Så vad är ett register?
Vänta, vad är ett register som du frågar? Kort sagt, är det en bit av minnet vanligtvis bestående av någonstans från 8 till 64 bitar av data. Varje bit tilldelas värdet 1 eller 0, och värdet av varje bit i många olika register i en mikrokontroller berätta resten av systemet vad man ska göra och när man gör det.. De flesta av register i ATMEGA328P chip på Arduino är 8-16 bitar. ChipKIT styrelser använder PIC processorer, och de är oftast 16-32 bitars register. Det finns mycket mer jag skulle kunna gå in när det gäller register, men de är bättre kvar till en annan dag. Wikipedia har en bra förklaring också.
Du kan tänka dig ett register som du gör en matris när du skriver en bit kod i din favorit kodning språk, förutom att varje element är en enda bit, inte en samling av bitar som utgör int eller char du definierat. Också, precis som matriser börjar räkna på 0, inte 1. Så har en 8-bitars register (Låt oss kalla det myRegister för sparkar) 8 bitar totalt, numrerade från 0 till 7. Så om vi ser en PIN-kod på vår microcontroller tilldelats lite myRegister [6], vet vi att den 7: e (andra till senaste) lite är den som vi behöver att manipulera. Det kan vara svårt att hålla rak, men det är viktigt. Jag ska försöka och klargöra det mer senare, troligen till peka av overkill.
Några saker att tänka på- Medan registret manipulation är ett perfekt programmering alternativ, rekommenderar jag verkligen inte det om du är extremt säker i dina förmågor och du är helt ledigt minne på din chip eller behöver frigöra några extra klockcykler. Ofta finns det en hel del kontroller som sker i bakgrunden när du använder vanliga funktioner och bibliotek för att tilldela I/O riktning och värden till stiften. Det kan få svårt att hålla allt det där rak och kanske inte värt den tid och ansträngning som krävs för att skriva din kod med hjälp av register. Som sagt, erfarenhet de exempel jag kommer att visa du är enkla och grundläggande i extremt så vem som helst kan använda dem, oavsett. De kommer definitivt att ta mindre minne och processen snabbare än om du skulle använda de vanliga funktionerna. Men du måste vara ytterst försiktig när du manipulera registren direkt och fyrdubbla kontrollera dina uttalanden. Det skulle vara svårt att skada marker manipulera registren felaktigt, men det kan vara mycket svårare att felsöka när det inte fungerar rätt, oftast eftersom du skrev fel värde av fel register eller bit. Vanliga funktioner och bibliotek finns där av en anledning. De tar mer minne och bearbetningstid, men är oftast mer användarvänligt. Sista sak, glöm inte att inte ändra prestandaparametrar för varje stift (t.ex. aktuella råvaror/sjunkit, spänningar, etc.) när du använder registren. Skyll inte på mig när du försöker och driva en 2A motor direkt från stift 10 och det röker ditt chip. Det är på dig eftersom du borde veta bättre ändå.