Hallo, Ich habe folgendes Programm zur Steuerung einer Kreuzung ,in Basic/Bascom , geschrieben.In der Schaltung sind 2 Taster verbaut, einer zum umschalten der Ampeln für Fußgänger in die eine Richtung und in die andere Richtung. Die Ampeln für die Straße sowie die für die Fußgänger haben jeweils 2 LED´s, einmal grün und einmal rot. Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache ,dann macht er ohne dass ich einen Taster drücke das ganze Programm durch. Würde mich über Lösungen meines Problems freuen :) Mfg Dani $regfile = "m32def.dat" $crystal = 1000000 Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Config Portc.4 = Output Config Portc.5 = Output Config Portc.6 = Output Config Portc.7 = Output Config Portd.0 = Output Config Pina.6 = Input Config Pina.7 = Input Config Portd.2 = Output Dim Zeit As Integer Zeit = 2500 Dim La As Integer La = 5000 Dim T As Integer T = 10000 Do If Pina.7 = 1 Then Waitms La Portc.1 = 0 Portc.2 = 1 Waitms Zeit Portc.3 = 0 Portc.4 = 1 Sound Portd.2 , 100 , 100 Waitms La Sound Portd.2 , 100 , 160 Portc.3 = 1 Portc.4 = 0 Waitms Zeit Portc.1 = 1 Portc.2 = 0 End If If Pina.7 = 1 Then Waitms La Portc.5 = 0 Portc.6 = 1 Waitms Zeit Portc.7 = 0 Portd.0 = 1 Sound Portd.2 , 100 , 100 Waitms La Sound Portd.2 , 100 , 160 Portc.7 = 1 Portd.0 = 0 Waitms Zeit Portc.5 = 1 Portc.6 = 0 End If Loop End
Daniel S. schrieb: > Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache ,dann > macht er ohne dass ich einen Taster drücke das ganze Programm durch. Wie sind denn deine Taster hardwaremässig angeschlossen? Liefern die eine 0 oder eine 1 wenn sie gedrückt werden? Hinweis: Es ist nirgends in Stein gemeisselt und Moses hat auf seinen Gesetzestafeln keinen Passus: Dein Taster soll beim Drücken eine 1 liefern. Beides ist möglich.
Daniel S. schrieb: > If-Befehl Endlich mal nicht die lästige if-Schleife... > Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache Das tut man auch nicht.... > ,dann macht er ohne dass ich einen Taster drücke das ganze Programm durch. > If Pina.7 = 1 Then Welchen Pegel hast du am Pina.7 wenn du die Taste nicht drückst? Wie ist der Taster angeschlossen?
Ist an Pina.7 ein Pullup/Pulldown? Schaltet dein Taster auf GND oder VCC? Wenn du auf "Pina.7 = 1" prüfst müsste er gegen VCC schalten und einen Pulldown haben. Warum zwei mal "If Pina.7 = 1 Then" das eine soll davon wohl "If Pina.6 = 1 Then" sein, oder?
Timmo H. schrieb: > Warum zwei mal "If Pina.7 = 1 Then" das eine soll davon wohl "If Pina.6 > = 1 Then" sein, oder? Sry es sollte beim 2.If-Befehl "if Pina.6=1 Then" heißen. Meine Karl Heinz Buchegger schrieb: > Liefern die eine 0 oder eine 1 wenn sie gedrückt werden? Sie liefern eine 1. Lothar Miller schrieb: >> Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache > Das tut man auch nicht.... "Wenn ich den Mikrocontroller an 5V anschließe" Timmo H. schrieb: > Ist an Pina.7 ein Pullup/Pulldown? Schaltet dein Taster auf GND oder > VCC? Es ist ein Pulldown-Schalter und er schaltet auf VCC
@ Daniel S. (thenogger) >Sry es sollte beim 2.If-Befehl "if Pina.6=1 Then" heißen. Bitte? Hast den Quelltext kopiert oder abgetippt? >Sie liefern eine 1. Mal mit dem Multimeter nachgemessen? >> Ist an Pina.7 ein Pullup/Pulldown? Schaltet dein Taster auf GND oder >> VCC? >Es ist ein Pulldown-Schalter Sowas gibt es nicht. > und er schaltet auf VCC Das widerspricht deinem "Pulldown-Schalter". Egal. Hast du externe Pull-Down Widerstände? MFG Falk
Daniel S. schrieb: > Karl Heinz Buchegger schrieb: >> Liefern die eine 0 oder eine 1 wenn sie gedrückt werden? > Sie liefern eine 1. Dann probier trotzdem mal sowas: if Pina.7=0 Then ... if Pina.6=0 Then ...
Zeichne Dir doch bitte den Schaltplan der Taster auf, wie sie am µC angeschlossen sind. Ich denke dass da in Wirklichkeit etwas ander ist als geplant. Vergiss auch nicht die µC-internen Widerstände ;-) Wenn Du bei der Fehlersuche nicht weiterkommst, dann den bitte posten. Funktionieren die Taster so wie vorgesehen - bitte testen. Was liefern sie wenn sie NICHT gedrückt werden. Hast Du eine HW-Entprellung drin, die könnte evtl auch dieses Verhalten erzeugen. Was bewirkt die Variable T - bzw. wozu ist sie da. in deinem Programm verwendest Du sie nicht. Noch ein kleiner Tip am Rande: nenne Variablen so, dass sich der Sinn dem Leser erschliesst. Damit tust Du dir auch leichter, falls mal im Programm etwas nicht so funktioniert wie es soll. Bis auf den bekannten Fehler, dass zweimal dieselbe Taste abgefragt wird, finde ich auch nichts. Eigentlich müsste es funktionieren, daher scheint der Fehler in der Schatung zu liegen.
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.