Atmel 8 eingangssignal Länger gedrückt Relay nur kurzen Impuls

OP #1520658
Lesenswert?

Hallo

Bin nun auf den Geschmack mit den Atmel´s gekommen.Meine Frage: Ich bin 
zu dumm oder unwissend, den es ist mir nicht möglich unter Bascom einen 
Taster so zu Programmieren das wenn er länger gedrückt wird (so zwischen 
1 - 5 sek.) das das Relay nur ganz kurz ca 50-100ms anzieht. Wenn ich 
den Taster drücke zieht das Relay an und wenn ich loslasse fällt es 
wieder ab (oder bleibt mit dem Befehl wait noch angezogen.Ach ja das 
Relay soll die Ganze zeit solange der Taster gedrückt wird nur die 
50-100ms geschaltet werden und wenn man loslässt dann wieder von anfang 
an beginnen.Möchte ein Telefon mit einem Relay verbinden.



  $regfile = "m8def.dat"                                    'Die 
Anweisung bestimmt Controllertyp, hier AVR Mega 32

 $crystal = 4000000

 Config Portb.0 = Output                                    'Ein Pin 
wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)
  Relay Alias Portb.0
  Config Pinb.1 = Input
  Telefon Alias Pinb.1






  Do
     If Telefon = 1 Then

     Relay = 1

     Waitms 50
     Relay = 0
     End If




  Loop

Danke erstmal
Gast #1520687
Lesenswert?

Auch wenn ich nichts mit Bascom am Hut habe, versuche ich mal zu helfen:

Dein Programm schaltet solange die Taste betätigt ist das Relais
immer wieder für 50ms ein. Suboptimal

Mach es doch so:
Taste erkannt, Relais 50ms ein.

Anschließend Warten bis Taste wieder losgelassen,
dann von vorne beginnen


Eine andere Lösung wäre:
Taste erkannt, 50-ms Stopp-Uhr, die im Interrupt läuft,
Starten. Uhr zählt runter.
Sobald die Uhr 0 erreicht hat ein Flag setzen. (Passiert im Interrupt)
Flag in der Main-Loop abfragen und Relais aus.

Anders gesagt: Reagiere nicht auf den Pegel am Schalter sondern auf die
Flanke/Pegelwechsel.

Schönen Abend!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren