Re: max7311 Kategorie: Programmierung (von Alfred - 27.01.2013 16:58) | ||
Als Antwort auf Re: max7311 von Rene Forster - 25.01.2013 19:11 | ||
| ||
Hallo Rene, wenn man einen Taster drück (nur drück nicht loslassen)entsteht ein prellen d.h. ob wohl ich nur drücke kommt auf der Signalleitung mehre ein und aus Signal an. siehe unter http://de.wikipedia.org/wiki/Prellen. Dieses muss man unterdrücken, ob der Taster nun 1sek. oder 10 sek. gedrück wird ist egal. Der unterschied liegt darin wie schnell ein Taster gedrück wird und was er für eine Güte er hat. Meist reichen 10 ms. Nur wenn der Taster über einen Bus abgefragt wird, stellt sich die Frage ist der Bus überhaupt so schnell das dass Prellen übergeben wird!!! Deswegen glaube ich das es am Programm liegt. Gru� Alfred > Hallo Alfred, > > ich denke nicht das dein Taster das Problem ist, sondern dein Programm. > Wenn Du den Taster in Echt drückst, wird ein Eingangssignal von sagen wir einfach mal > 0,5 sec erzeugt. Die 0,5 sec lassen wir einfach mal dahin gestellt. > > Da dein Programm in einer Schleife läuft, wird es wärend der 500 ms öfters an der Abfrage "ist Taster gedrückt" > vorbei kommen. Und bei jedem vorbei kommen wird bei Dir geschaltet, deshalb das "flattern des Ausgangs. > > Und deshalb musst Du hier ansetzen, nur wenn das Eingangssignal von 0 auf 1 wechselt, dann wird etwas > ausgeführt. Und nur dann. Von einer Verzögerung per sleep würde ich abraten, was willst Du denn da für > eine Zeit nehmen. Der eine drückt Taster 0,3 sec, der andere 1,2 sec. Da müsstet Du grundsätzlich eine > sehr hohe Zeit ansetzen, was aber das Programm ausbremst oder unkomfortabel macht. > > Rene > > > > Hallo Rainer und Hallo Rene, > > > > ich glaube wenn der Taster prellt wird der Merker alleine nichts bringen, weil dann auch der Merker > > mehr mals hin und her geschaltet, besser eine Verzögerung einbauen von 10-20ms. > > Oder an dem Taster einen 100nF Kondensator parallel schalten. > > Aber liegt es wirklich am prellen, über Bus??? > > Wie sieht denn das Programm aus. > > > > Gru� Alfred > > > > > > > Hallo Rainer, > > > > > > wenn ich deinen Post richtig verstehe, funktioniert schon alles, jedoch ist deine "Schaltung" > > > noch nicht "entprellt". > > > > > > Nimm Dir doch softwaremä�ig einen Merker zur Hand, Zustand Merker 0 bei offenen > > > Taster und Zustand Merker 1 bei gedrückten Taster. > > > > > > Dein Relais wird jedoch nur "umgeschaltet" wenn sich der Zustand des Merkers von 0 auf 1 > > > wechselt. > > > Also ist Taster gedrückt und Merker = 0, dann schalte Relais und setze Merker auf 1. > > > Dann schaltet die ganze Sache nur einmal, weil Merker ist jetzt 1. > > > Ist Taster offen, dann Merker = 0. > > > Erst jetzt kann wieder der Taster gedrückt werden und wird ausgewertet. > > > > > > Ich hoffe ich habe die grundsätzliche Problematik richtig erklärt. > > > > > > Rene > > > > > > > > > > Hallo, ich habe eine Frage zur Programmierung, > > > > > > > > folgende Situation, der Eingang des MAX7311 erhält einen Schalterimpuls und > > > > soll ein Relais bei jedem drücken des Schalters aus oder einschalten wie bei > > > > einem Stromsto�schalter z.Bsb.im Treppenhaus.Der MAX7311 läuft über den > > > > I2C-Bus. Die Schaltausgabe soll relativ zügig sein < 2 s. Der Schaltimpuls > > > > soll jedesmal nur einmal erfolgen, nur dann wenn der Taster gedrückt wird. > > > > Auch wenn er länger gedrückt wird ! Bis jetzt schaltet das Relais ein paar > > > > mal hin und her. > > > > > > > > Hat jemand da Erfahrungen. > > > > > > > > Vielen Dank für kreative Antworten. | ||
Antwort schreiben Antworten: Re: max7311 (von Rene Forster - 27.01.2013 17:58) |