Hallo, ich habe ein Programm geschrieben, dass soweit auch funktioniert. Schalten von Leds nach Zeiteinheiten, gesteuert über den Timer, jedoch habe ich Probleme dabei, einen Eingangsstrom fest zu stellen. Ich habe einfach zwischen +5V u. dem Eingangspin einen Schalter installiert. Daher meine Frage: Wie konfiguriert man nun den Pin in Bascom, so dass wenn der Schalter geschaltet wird, er den Strom an Eingang signalisiert?
Du brauchst noch einen Pull-up oder Pull-down Widerstand. Entweder den intern programmierbaren oder einen externen
> Eingangspin
dem einen?
Sicher dass es ein Eingangspin ist? Hast du eine pulldown mit dabei?
Sicher dass der Eingangspin Strom anzeigt?
....
Hallo ok, ich hatte gefragt, wie man es bewerkstelligt. Damit meinte ich, wie man den einen Pin am Port als Eingang konfiguriert.
Ich nochmal: Also, wenn der Schalter +5 V schaltet, brauchst du einen Pull- down Widerstand extern z.B. 10kOhm, sonst hängt der Eingang in der "Luft", wenn der Schalter offen ist. Falls du es ändern kannst, lege den Schalter an GRD( -, 0 Volt)und schalte den internen Pull-up Widerstand ein, dann brauchst Du keinen extra äußeren Widerstand. Wie man den internen Pull- up Widerstand programmtechnisch einschaltet findest du in der BASCOM Anleitung.
$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 100 $swstack = 100 $framesize = 100 '1000000 (Systemtakt) / 8 Prescaler = 125000 Counts '125000 Counts / 256 (8 Bit Timer) = 488 Interrupts die Sekunde Config Timer0 = Timer , Prescale = 8 On Timer0 On_timer0_overflow Enable Timer0 Enable Interrupts Dim Prell As Single Dim A As Integer Dim B As Single Dim C As Single Dim D As Integer Dim Rechnen As Integer Config Portc.3 = Output Roteled Alias Portc.3 Config Portb.0 = Output Rotled1 Alias Portb.0 Config Portb.1 = Output Rotled2 Alias Portb.1 Config Portb.2 = Output Rotled3 Alias Portb.2 Config Portb.3 = Output Rotled4 Alias Portb.3 A = 0 B = 0 C = 0 D = 0 Config Pinc.0 = Input Dim Eingang_rot As Byte Portc.0 = 1 Do Eingang_rot = Pinc.0 If Eingang_rot = 1 Then If Prell = 0 Then Prell = 1 Timer0 = 0 End If End If If Prell = 1 Then Roteled = 1 If C >= 20 Then Roteled = 0 Rotled1 = 0 Rotled2 = 0 Rotled3 = 0 Rotled4 = 0 A = 0 B = 0 C = 0 D = 0 Timer0 = 0 Prell = 0 Else '4 Sekunden langer piepston If C < 4 Then Piepser = 1 Else Piepser = 0 End If If B = 1 Then Rotled1 = 1 Rotled2 = 0 Rotled3 = 0 Rotled4 = 0 End If If B = 2 Then Rotled1 = 0 Rotled2 = 1 Rotled3 = 0 Rotled4 = 0 End If If B = 3 Then Rotled1 = 0 Rotled2 = 0 Rotled3 = 1 Rotled4 = 0 End If If B = 4 Then Rotled1 = 0 Rotled2 = 0 Rotled3 = 0 Rotled4 = 1 End If End If End If Loop End On_timer0_overflow: If Prell = 1 Or Prell = 2 Then '488 1000ms ' 48 100ms A = A + 1 D = D + 1 '500ms Rechnen = 48 * 5 If D = Rechnen Then B = B + 1 If B = 5 Then B = 1 End If D = 0 End If If A = 488 Then C = C + 1 A = 0 End If End If Return
bascom_frage schrieb: > ich habe ein Programm geschrieben, dass soweit auch funktioniert. > Schalten von Leds nach Zeiteinheiten, gesteuert über den Timer, jedoch > habe ich Probleme dabei, einen Eingangsstrom fest zu stellen. Nein, hast du nicht. An keiner Stelle in deinem Programm hantierst du mit irgendeinem "Eingangsstrom". Wozu auch? Das ist nur eine blöde Ablaufsteuerung, um irgendwelche LEDs nach irgendeinem Schema anzusteuern, dafür braucht man natürlich keinen "Eingangsstrom". > Ich habe einfach zwischen +5V u. dem Eingangspin einen Schalter > installiert. Aha, es ght also im Wesentlichen um die Abfrage eines Schalter/Tasters. Dann ist das gewählte Konzept grundsätzlich ungünstig. Damit das funktionieren kann, bräuchtest du einen zusätzlichen externen Pulldown-Widerstand. Sinnvoller wäre: Schalter/Taster zwischen GND und Pin installieren, denn dann kann man die verfügbaren internen Pullup-Widerstände verwenden. Die muss man dann allerdings natürlich auch aktivieren. Und bei der Abfrage berückichtigen, dass ein "aktiver" Taster/Schalter eine 0 produziert, wenn man den ensprechenden Eingang befragt.
Bisschen planlos... Du hast Pinc.0 als Eingang definiert und auch den Pullup mit Portc.0=1 eingeschltet. Der Taster muß nun zwischen Pinc.0 und Masse und Du mußt auf "0" auswerten, denn der Pin wird dann bei Tastendruck auf GND d.h 0 gezogen. Das eigentliche Programm ist mir zu unübersichtlich, weil die Variablen keine "sprechenden" Namen haben. Such auch mal in der Hilfe nach "Select Case" Das macht die Verzweigerei viel übersichtlicher.
bascom_frage schrieb: > Daher meine Frage: > Wie konfiguriert man nun den Pin in Bascom, so dass wenn der Schalter > geschaltet wird, er den Strom an Eingang signalisiert? DU musst die Ampere runterskillen - insbesondere Freitags.
Dieter F. schrieb: > bascom_frage schrieb: >> Daher meine Frage: >> Wie konfiguriert man nun den Pin in Bascom, so dass wenn der Schalter >> geschaltet wird, er den Strom an Eingang signalisiert? > > DU musst die Ampere runterskillen - insbesondere Freitags. Stehen Dir die Zähne zu eng?
@ Frostbeule: Danke funktioniert...Select Case -> werde ich machen @c-hater: Sinnvoller wäre: Schalter/Taster zwischen GND und Pin installieren-> hab ich gemacht Es funktioniert jetzt...danke
Es ist schon gut das die Leute so ruhig geblieben sind... Hättest schreiben sollen..ich habe keine Ahnung, habe es geschafft einen Code im µC hineinzukopieren, Es gibt tolle Bascombücher, Bascomseiten und Foren. Wie man einen Widerstand für eine LED ermittelt oder eine Ein/Ausgang Pin konfiguriert steht in tausend Foren... aber gut schnell, schnell ist die Mentalität, also nicht wundern wenn die Antwort dementsprechend fällt.
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.