Rök-O-Tron (2 / 7 steg)
Steg 2: Programvara irritationen
Programvaran bör vara ganska lätt: i en loop räkna ut om det är dags att göra en PID cykel, göra det; Kontrollera om utdata PWM behöver uppmärksamhet, så hantera det; annars kontrollerar du om UI behöver uppmärksamhet.
I praktiken har vi ett par frågor på PICAXE.
1] det finns inga timingfunktioner, utanför dröjsmål funktioner.
2] det finns ingen riktig hårdvara avbryter du får spela med
3] "mjuka" avbrotten är riktigt långsam och du kan bara ha en definierad.
4] variabler är register. Om du vill använda RAM, peek och poke ur det
5] serial output är bit-bankade och hänger koden under överföringen.
6] vi kan bara använda 16 GoSub samtal i programvaran, eller förlora program utrymme någon annanstans.
Den sista var lätt att fixa... Jag fik befria för så många GoSubs som möjligt av i-foder några kod.
Så, för att komma runt aspekterna som timing, jag hittade ett inlägg på forum på registrerar hur man kika/peta hårdvaran för att köra timern. Vi skulle fortfarande behöva avsökning efter översvämningar, men det är bättre än ingenting.
Nästa, eftersom vi inte kan definiera verkliga avbrott, vi var tvungna att göra bäst av det som vi hade. Jag satte den på "A" sidan av rotary encoder. Varje gång knappen flyttas, bör det leda till ett avbrott och se om den "B" sidan gick hög eller låg skulle berätta riktningen. Om du flyttar det för fort, det kommer att tappa, men det är vad vi fick.
Knappen är intervjuade. Inget spännande där. Vi enkelt hålla koll på hur många counter svämmar över den varit hålls ner till se om den varit hålls ner lite eller mycket.
#4 är oförlåtligt i ett högnivåspråk. Kompilatorn bör hantera detta om jag berätta den annars. På grund av detta, kommer du se ett gäng av laster och från minne i hela koden.
De seriella förseningarna är ganska allvarliga. Detta innebär att om du skriver mer än 2 tecken till displayen, förlorar du en timer overflow. Jag brydde mig inte att arbeta runt den. PID tidpunkten är inte exakt, och inte heller är PWM timing... men det är mindre än 1% avvikelse, så det är bra i denna ansökan.