Autonom robotväckarklocka med trådlös basstation - KTH
Autonom robotväckarklocka med trådlös basstation - KTH
Autonom robotväckarklocka med trådlös basstation - KTH
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Figur 6 Illustration för hur du tänker när du ska tända lampor<br />
Vektorn för att kunna visa detta A kommer bli: A[8] = {0x7F,0x88,0x88,0x88,0x7F,0x00,0x00,0x00};<br />
I en loop aktiverar du sista kolumnen till höger (PA0) och plockar sista värdet från vektorn (A[7]) på<br />
vilka rader som ska lysa, sen aktiverar du näst sista kolumnen från höger och plockar det näst sista<br />
värdet från vektorn på hur kolumnerna ska lysa, och så vidare tills alla åtta rader har loopats igenom<br />
och visats. Om du gör detta till en oändlig loop som loopar igenom kolumnerna tillräckligt snabbt ser<br />
ögonen bara en statisk bild.<br />
6. Mjukvara<br />
Denna modul har fått tre funktioner. Den kan antingen visa lite effekter, där först varje lampa blinkar<br />
var för sig, och sen så visas några olika figurer efter varandra. Men de två större funktionerna, som<br />
här kommer förklaras mer utförligt, är att den kan fungera som en informationsdisplay där en text<br />
rullar fram, eller så kan den användas som en spelplan för att spela Pong på. Men först kommer<br />
ATMega16s inbyggda timers att förklaras lite grundligt eftersom de har varit vitala för att skapa de<br />
två funktionerna. Mjukvaran är skriven i C <strong>med</strong> hjälp av utvecklingshjälp<strong>med</strong>let Atmel AVR Studio 4.<br />
6.1 Timers och interrupts<br />
ATMega16 AVR mikrokontroller har tre inbyggda timers, en 16-bit timer och två 8-bit timers. De kan<br />
användas för att göra många olika saker, men deras huvudfunktion är att göra vad det låter som de<br />
gör, de räknar hur lång tid som förflutit. De kan operera separat från ditt main-program och<br />
kommunicerar <strong>med</strong> hjälp av olika register och interrupts för att veta exakt vad den ska göra och efter<br />
hur lång tid den ska utföra det.<br />
En timer använder en intern klocka för att kunna veta hur lång tid som passerat och när den ska göra<br />
någonting nästa gång. Det kortaste tidsintervall som en timer kan räkna är en period, eller 1 ”tick”, av<br />
den inkommande klocksignalen. Hur lång tid ett tick tar kan man ställa in. Välj först vilken frekvens<br />
du vill att din timer ska ticka <strong>med</strong>. Fördröjning mellan varje gång timern ska göra någonting ska då<br />
vara (1 / Önskad frekvens) sekunder för att få den önskade frekvensen. Tiden mellan timerns varje<br />
tick bestäms som sagt av den interna klockfrekvensen. Den interna klockfrekvensen, Fcpu för<br />
mikrokontrollern, kan bestämmas till 1, 2, 4, eller 8 MHz. Varje tick för timern kommer ta (1 /<br />
Klockfrekvensen) sekunder. En 8-bit timer kan räkna upp till 255 tick, och 16-bit timern kan räkna upp<br />
till 65 536 tick, så där kan du justera efter hur många tick som timern ska göra någonting. Du kan<br />
8