PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kaminfeuerprogramm Hilfe ich bin Anfänger !



Import-Script
02.01.2002, 18:31
Hallo Leute, vieleicht hat ja jemand einen Tip oder ein paar Link&#39;s&#40;Beispielprog&#39;s m&ouml;glichst in deutsch&#41;f&uuml;r mich. <BR> <BR>Kaminfeuerprogramm &#40;die Theorie&#41;: 4 Zeitschleifen&#40;an-aus&#41;, 0.5sec., 1.5sec., 3sec., 7sec., diese 4 Ausg&auml;nge sollen zusammengefasst auf eine Leitung &uuml;ber einen Optokoppler und einen Triac eine Lampe ansteuern, so das ein wirres Flackern dabei rauskommt. Da der MC aber nur eine Schleife zur Zeit abarbeiten kann, habe ich ein Problem mit der parallelen Ausgabe. <BR> <BR>Danke Holgi

Import-Script
02.01.2002, 19:10
Hallo Holgi, <BR> <BR>Hast du einen MC der 8051 Familie? <BR> <BR>Es giebt m&ouml;glichkeiten die einzelnen Schleifen zu mit Jumps zu schachteln benutzt du das Prog. Studio?

Import-Script
02.01.2002, 19:41
Ach so, klar. Ich benutze Prog-Studio und 89C2051. <BR> <BR>Sorry

Import-Script
02.01.2002, 23:33
Hallo Holgi, <BR> <BR>such den gr&ouml;&szlig;ten gemeinsamen Teiler: 0,5s <BR>Bau eine Zeitfunktion daf&uuml;r und z&auml;hle verschiedene Bytes runter. <BR>Z.B. setze ein Byte auf 14, z&auml;hle runter bis 0, setze wieder auf 14 usw. Schon hast Du die 7s. <BR>Nimm analog ein Byte f&uuml;r 1,5s und 3s und fertig. <BR>Die damit erzeugte Folge wiederholt sich dann alle 21s &#40;= kleinstes gemeinsames Vielfaches&#41;. <BR> <BR>Was ich mich jedoch frage, was sollen diese 4 Leitungen mit dem Triac machen ??? <BR> <BR> <BR>Wie ich sowas machen w&uuml;rde ? <BR> <BR>Ich w&uuml;rde das ganze in C schreiben, da gibt es eine Pseudo-Zufallsfunktion: int rand&#40;&#41;; in STDLIB.H. <BR> <BR>Dann w&uuml;rde ich mit INT0 einen Nulldurchgangsdetektor aufbauen und damit jede Halbwelle einen Timer starten. Diesen w&uuml;rde ich mit den Zufallszahlen voreinstellen um so eine Phasenanschnittssteuerung zu bewirken. D.h. die Helligkeit wird entsprechend der Zufallszahlenfolge gesteuert. <BR> <BR>Diese Pseudozufallsfolge wird durch ein 31-Bit-Schieberegister erzeugt, d.h. wenn alle 20ms ein neuer Wert ausgegeben wird, wiederholt sie sich alle 497 Tage. <BR>Vielleicht hat ja jemand so eine Pseudozufallsfunktion auch in Assembler ? <BR> <BR> <BR>Peter

Import-Script
02.01.2002, 23:50
Bevor ich so&#39;ne wirre Mission starten w&uuml;rde, h&auml;tte ich schon lange eben schnell drei NE555 auf ne Lochraster zusammengew&uuml;rfelt und das &uuml;ber Dioden auf einen Optokoppler gegeben. Fertig.

Import-Script
03.01.2002, 07:36
@Peter, <BR> <BR>sch&ouml;nen Dank f&uuml;r deine Antwort ich werd&#39;s mal so ausprobieren. <BR> <BR>@OC, <BR> <BR>hab ich schon aufgebaut siehe <BR><A HREF="http://www.elektroniktreff.net/Schaltungen/Kaminfeuer.htm" TARGET="_top">http://www.elektroniktreff.net/Schaltungen/Kaminfeuer.htm</A> <BR>Eigendlich geht es mir um die Programmierung und nicht um die Schaltung selbst. <BR> <BR>Danke euch Gruss Holgi

Import-Script
07.01.2002, 08:22
@Peter oder jemandem der weiterhelfen kann, <BR> <BR>hast du vieleicht ein Beispiel &#40;in Assembler&#41; f&uuml;r einen solchen einen zeitlichen Ablauf? Irgendwie spielt mein Kopf im Moment nicht mit - ich komm einfach nicht auf die richtige L&ouml;sung obwohl sie sicherlich einfach ist. <BR> <BR>Gruss Holgi

Import-Script
07.01.2002, 11:40
ich glaub ich hab&#39;s doch geschafft. Allerdings habe ich, wenn ich mich nicht irre einen Bin&auml;rz&auml;hler neu erfunden. <BR> <BR>main: SETB P1.3 <BR> LCALL sec3 <BR> CLR P1.3 <BR> LCALL sec3 <BR>JMP main <BR> <BR>sec3: SETB P1.2 <BR> LCALL sec2 <BR> CLR P1.2 <BR> LCALL sec2 <BR>RET <BR> <BR>sec2: SETB P1.1 <BR> LCALL sec1 <BR> LCALL sec1 <BR> CLR P1.1 <BR> LCALL sec1 <BR> LCALL sec1 <BR>RET <BR> <BR>sec1: SETB P1.0 <BR> LCALL wait_10ms <BR> CLR P1.0 <BR> LCALL wait_10ms <BR>RET <BR> <BR>wait_10ms: <BR> #IF NOT DEBUGGING <BR> MOV R6,#215 <BR> _wait_s3: MOV R7,#45 <BR> DJNZ R7,$ <BR> IF NOT BIT P3.7 THEN JMP start <BR> DJNZ R6,_wait_s3 <BR> #END IF <BR> RET <BR> <BR>Gruss Holgi