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?
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.
Eine eigene Frage?
Dieser Thread ist über 7 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.