Forum Strippenstrolch

Forums-Ausgangsseite

log in | registrieren

zurück zum Forum
Board-Ansicht  Mix-Ansicht

Programierung eines Picaxe

verfasst von Posti(R), 08.03.2006, 21:16
(editiert von Posti, 08.03.2006, 23:18)

HiIch mach mal Zeilennummern vor die Zeilen.01» main:02» low 203» init: low 404» warten: if pin1=0 then warten05» high 406» let b0= 007» nextpause: pause 100008» zaehle: let b0=b0+ 109» if b0= 14 then init10» b0= 8 then feedback11» if b0= 10 then feedback12» goto nextpause13» feedback: high 214» pause 100015» low 216» goto zaehle01 : Sprungmarke \'main\', wird nicht benötigt aber vom Flußdiagramm automatisch eingefügt - hatte se nicht gelöscht (könnte also eigendlich weg)02: Feedback-Ausgang auf \'Aus\' stellen03: Sprungmarke \'Init\' und ebenfalls das \'Aus\'stellen des Steuerausgang04: Sprungmarke \'warten\' und die Abfrage, ob am PIN 1 immernoch LOW anliegt, wenn LOW (=0), dann wireder in die Zeile \'warten\'05: Hier kommen wir nur hin, wenn am Eingang PIN 1 ein HIGH anliegt, deshalb wird in dieser Zeile der Steuerausgang PIN 4 auf HIGH gesetzt06: Der Zählerwert wird auf 0 gesetzt07: Sprungmarke \'nextpause\' und der Befehl, eine Sekunde zu warten08: Sprungmarke \'zaehle\' und der Befehl, die Variable um 1 zu erhöhen09: die Abfrage, ob der Zähler fertig gezählt hat. Wenn ja, dann wieder zur Initialisierung (Sprungmarke Init)10: & 11: Abfrage, ob es Zeit für ein Feedback ist. Wenn ja, Sprung zur Sprungmarke Feedback (Zeile 13)12: Sprungbefehl zur Sprungmarke \'next\' | wir wollen ja weiter zählen :)13: Sprungmarke Feedback und der Befehl, den Ausgang PIN 2 auf HIGH zu setzen14: Wartezeit, in der der Ausgang PIN 2 auf HIGH bleibt15: PIN 2 wieder auf LOW setzen16: Sprung zur Sprungmarke \'zaehle\', damit diese Sekunde auch mitgezählt wirdWir haben am Chip am PIN 1 den EingangPIN 2 den Feedback-AusgangPIN 4 den Schalt-Ausgang, also den StundenläuferDeine Vermutung, daß die Zeilen b0=8 und b0=10 (die Feedback-Zeiten) geändert werden müssen, ist richtig !!Ebenfalls muß die Zeile b0=14 (Laufzeit) angepasst werden.Allerdings kann mit einem Byte nur Zahlen von 0 bis 255 speichern.(1 Byte = 8 Bit / 1 Bit = 1 Zustand, also on oder off / 8 Speichermöglichkeiten => 2^8 Möglichkeiten = 256 Stück => 0 bis 255)Wenn Du mehr als 255 Sekunden warten möchtest, musst Du auf Wörter ausweichen.Ein Wort ist eine Speichereinheit, die aus 2 Byte besteht, somit hast Du 256x256 Möglichkeiten, genau 65536 Stück, Werte von 0 bis 65535.Im Flußdiagramm kann man leider nur Bytes angeben.Ich hätte die Bytes b0 und b1 setzen können, welche dem Wort w0 entsprechen.Einfacher ist es aber, das Programm mit Bytes zu probieren (Laufzeit 14 Sekunden reicht, um die Funktionsweise zu kontrollieren) und dann im Code die Variable b0 durch w0 (überall) zu ändern.Die Wörter benutzen die Speicherstellen der Bytes, weshalb beim Setzen von w0 die Bytes b0 und b1 gesetzt werden.Variablenb1 b0 = w0000 000 0000 100 100000 255 255001 000 256001 100 356255 255 65535Den Zusammenhang zwischen Byte und Wort sollte Dir bekannt sein, wenn sowohl Bytes als auch Worte benutzt werden sollen.b1 & b0 => w0b3 & b2 => w1b5 & b4 => w2b7 & b6 => w3b9 & b8 => w4b11 & b10 => w5b13 & b12 => w6Du hast also 14 Byte Speicher, die in 7 Worten zusammen gefasst sind!Du kannst sowohl die Byte einzeln ansprechen, aber auch die Worte.Wenn Dein Code nicht das macht, was Du Dir vorstellst, könnte es an sowas liegen, daß Du beim Setzen einer Wort-Variable eine anders genutzte Byte-Variable überschreibst.Ach ja, als Endzeit (Zeile 9) müsste dannif w0=3600 then init(b0 schon in w0 geändert, da ein Byte nicht bis 3600 zählen kann)3600, da eine Stunde 3600 Sekunden hat (ok, hätte ich mir sparen können)Hab Dich mal angemailt, schick mir bitte Deine Mail-Addy (Briefumschlag unter meinem Nick), sonst wird\'s schwierig mit dem Fluß-Diagramm :)MfGPosti*EDIT*Mail ist raus*EDIT ENDE**noch\'n Edit*Das Fluß-Diagramm, nebeneinander passt das sogar auf den Bildschirm :)[image]*und nochmal Edit Ende**und noch ein Edit ... langsam wird\'s langweilig hehe*Die Zeiten, die die Schaltung läuft, wird geringfügig über die eingestellte Zeit laufen!Die Wartezeiten, also jeweils die eine Sekunde dprfte zwar ziemlich genau eingehalten werden, aber der programmablauf, also die Befehle zwischen den Pausen, benötigen auch etwas Zeit.Nicht viel, aber so super hyper genau wird\'s nicht werden.Wobei ja \'nur\' 3600 mal nen paar Befehle abgearbeitet werden.Unterm Strich wird die Stunde Laufzeit unwesendlich überschritten werden (wenn die Sekunde wirklich ne Sekunde ist, geringe Tolleranzen dürften von Stein zu Stein auftreten)So, jetzt aber genug*ENDE (für\'s Erste)*

 

gesamter Thread:

zurück zum Forum
Board-Ansicht  Mix-Ansicht
5412 Postings in 703 Threads, 7 registrierte User, 33 User online (0 reg., 33 Gäste)
Forum Strippenstrolch | Kontakt
RSS Feed
powered by my little forum