Programmera mikrokontroller Propeller (3 / 7 steg)
Steg 3: Spin grunderna
"Tänk om BASIC och PASCAL hooked på bar tid och 9 månader senare dök ett nytt språk ut - Jo det är SPIN för dig." - Ben Heck
Spin är den vanligaste högnivåspråk för stöttan förmodligen eftersom det är (1) lätt, och (2) det är en spin tolk på stöttan. Det finns andra språk där ute, men jag tänkte att jag skulle tala om Spin eftersom det är den jag känner bäst.
FÖRSTA PROGRAMMET
Redo för din första program? Här är det:
Ta programmet ovan, sätta den i verktyget Propeller och slå F10. Det kommer snabbt kompilera och ladda in i propellern. Koden kommer att blinka en lysdiod ansluten till P0 varje annan sekund (1/2 Hertz) för evigt. Låt oss bryta ner varje rad att förstå vad den gör;
PUB huvudsakliga
Spin är organiserad i block;
PUB och PRI
Dessa 2 kvarter håller själva koden. Om du är bekant med php eller BASIC eller C, fungerar dessa mycket som funktioner. De har namn (namnet på detta block är "viktigaste"), och du kan skicka dem värden (function(passedval)).
De återstående block är inte nödvändiga för ett giltigt program;
CON
CON rymmer programmet konstanter. Om det finns en konstant som du använder i hela programmet, CON blocket kan du ändra det en gång och det kommer att återspeglas varje gång du använder den. Här är ett exempel på blinky ljus program använder ett CON block;
VAR
Blocket VAR rymmer programmet variabler. I programmet blinkande lampor, jag har inte använt några systemvariabler, men här är en version av blinkande lampor med hjälp av variabler
Det finns 2 fler block, DAT och OBJ, men vi hoppar över dem för nu - OBJ är användbart när någon annans kod, och DAT är ett annat ställe att hålla variabler, det är också där du sätter assemblerkod (om du vill använda det).
Anyway - tillbaka till vårt ursprungliga program. Nästa rad är:
Dira [0]: = 1
Varje stift på propellern kan anges till en ingång och en utgång. När stöttan stöveln upp, som varje stift som indata, så vi måste du ange P0 till en utgång.
Om du vill ange P0 som en utgång, ska vi ändra värdet av dira [0] till 1. Den: = är en tilldelning operatör i spinn. Kan du gissa hur du vill ange P10 till en utgång? Dira [10]: = 1. Du kan också ändra ett antal stift med ett enda kommando. Om du vill ändra P0, P1, P2 och P3, bara använda dira [0..3]: = 1.
Upprepa
repeat berättar propellern att köra ett block av kod flera gånger. Du kan ange ett återkommande tillstånd (upprepa jag från 1 till 100) eller bara upprepa för alltid genom att inte ange något annat. Detta upprepar block kommer att upprepa för evigt.
Koden upprepas avgränsas med tabbar. Notera de mjuka grå linjerna som upprepa blocket? Verktyget Propeller lagt de grå linjerna där för att visa dig vad koden är i upprepa slingan.
Outa [0]: = 1
Outa berättar propellern att ansluta pinnen till marken eller till V +. Outa fungerar precis som dira, du kan ställa in produktionen av en enda stift (outa [10]: = 1) eller en grupp av stift (outa [0..3]: = 1). Observera att outa endast är meningsfull om den PIN-kod slagits till en utgång med dira.
Dessutom använder propellern Tri-state logic. Varje stift kan vara ansluta marken, V +, eller ställa i en hög impedans.
En hög impedans kan pin känslan om det är ansluta till marken eller V + utan att ändra signalen. Det låter flera stift delar samma datakanal och göra saker som charlieplexing.
Anslut stiftet mot jord med:
Dira [pin]: = 1
Outa [pin]: = 0
Anslut den PIN-kod till V + med:
Dira [pin]: = 1
Outa [pin]: = 1
mening om PIN-koden är ansluten till en låg eller hög signal (hög impedans tillstånd):
Dira [pin]: = 0 (standard på stöveln)
pinstatus: = ina [pin]
Ina fungerar precis som outa och dira, förutom det är skrivskyddad. Om PIN-koden anges som indata, att ina hålla nuvarande indatavärdet.