Hallo, ich wollte mit Bascom ein Programm schreiben, welches beim einschalten des µC 2 mal hintereinander piept und dann einen Timer startet. Wenn der Timmer dann z.B. bei 5 Sekunden angekommen ist, soll eine Lampe für 3 Sekunden eingeschaltet werden. Doch irgendwie will mein Programm noch nicht so recht funktionieren. Am Anfang piept es 2 mal wie es auch soll, doch wenn ich dann den Taster drücke (Ein Öffner kein schließer), dann leuchtet die Lampe sofort auf. $regfile = "m16def.dat" $crystal = 16000000 Config Porta.0 = Output Config Portd.7 = Output Config Pina.2 = Input Dim Zeit As Byte Dim A As Byte Dim Main2 As Long Dim Main1 As Long Dim Main3 As Long Main1: Zeit=0 Portd.7 = 1 Waitms 300 Portd.7 = 0 Waitms 300 Portd.7 = 1 Waitms 300 Portd.7 = 0 Goto Main2 Main2: Do If Pina.2 = 0 Then Goto Main3 Else Zeit = 0 End if Loop Main3: Zeit = Zeit + 1 If Zeit = 5 Then Porta.0 = 1 Waitms 3000 Porta.0 = 0 End If Goto Main2 Weiß jemand rat ?
Hallo, zwei Sachen fallen mir auf: Du hast keine Tastenentprellung verwendet, das kann u.U Probleme geben muß aber nicht. Ich empfehle dir den "Debounce" Befehl zu verwenden der macht die Entprellung, passende Parameter stehen in der Bascom-Help. Wichtiger: Solange der Taster gedrückt ist, rennt der uC immer in die Main3-Schleife. Der macht das mehrere 10000 mal je nach taktung. Das ganze kommt dir das vor wie wenn die Lampe sofort angeht da die 5 Takte innerhalb von ein paar microsekunden raufgezählt sind. Einen Timer hast du keinen Verwendet, da ich keine Initialisierung dafür finden kann. Wenn du nen Timer verwenden willst ist das besser da mit den Wait-Befehlen der uC angehalten wird und in der "Wartezeit" nix machen kann. Machst du das mit nem Timer kann der uC nebenher noch andere Sachen abarbeiten da der Timer in der uC-Hardware selbstständig rennt. :) Wenn du einen Timer willst musst du nur wissen welchen du nehmen willst dein verwendeter Chip hat mehrere. Wie erzeugst du das Piepen, hast du an dem Ausgangspin nen kleinen Summer angeschlossen der "von selbst" also sobald der Strom bekommt piepst? Wie soll der Ablauf des Programmes sein: Einschalten 2x Piepsen Warten auf Tasterdruck nach Tasterdruck 5 sec warten dann Lampe anschalten oder hab ich was falsch gelesen? Wenn du mir noch sagen kannst ob du am Tastereingang einen externen Pull-Up dran hast oder ob du den internen benutzen willst, kann ich dir das Programm entsprechend umschreiben das es läuft. (Habe selbst die Bascom-Vollversion) Den geänderten Programmcode poste ich dir dann hier. Roland :)
Hi, Danke schonmal für deine Hilfe. Ja der Programmablauf ist so richtig. Der Summer summt von alleine muss also nur geschaltet werden. Und es ist kein externer Pullup gesetzt. Trotzdem sollte es aber ohne waits gelöst werden, da später ggf. mehrere, auch länger als nur 5 sec dauernde Zeiten dazu kommen können. Deswegen wäre eine Angabe in Sekunden besser als in Millisekunden. mfg Yannic
Wie ich es umsetzten kann das ich die Zeitangaben bei denen die Lampe leuchtet im sekundentakt angeben kann.
Ah, also wie man einen Timer-Interrupt bzw. einen Timer in Bascom realisiert. Ich mache mich mal schlau, ob und ggf. wie das geht. Kann aber etwas dauern... Schwupp bin wieder da. Im Roboternetz ist ein Tutorial sogar in Deutsch: http://www.roboternetz.de/wissen/index.php/Bascom_und_Timer
irgendwo muss du eine sekunde warten z. B. Zeit = Zeit + 1 wait 1 sonst zählt er sofort bis 5 (µController sind dabei sehr schnell) wobei warten sehr schlecht ist, da der Controller in dieser Zeit nichts anderes machen kann, besser einen Timer benutzen
@ Yannic (Gast) >Wie ich es umsetzten kann das ich die Zeitangaben bei denen die Lampe >leuchtet im sekundentakt angeben kann. Bitte? Was ist an Waitms 300 unverständlich? Kleiner Tip. 1000ms = 1s. MfG Falk
Hallo Yannic, sorry bin grade erst von der Arbeit heimgekommen. Ich kann nicht alles stehen und liegen lassen nur um dir das Prog zu schreiben (da hätte mein Chef was dagegen :D) Ich schreib dir das wie versprochen, aber sicher nicht innerhalb von nen paar Stunden, irgendwann muß ich auch noch pennen. Kurz vor Weihnachten ist immer die hölle los bei uns da gibts schon mal überstunden. Ich bin schon am Ändern des Programmes dran (grade angefangen), geht noch ne weile. Roland
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.