hallo, Ich habe ein einfaches Programm geschrieben, bei dem ich mit Taster1 addiere und bei Taster2 subtrahiere. Jeweils um den Wert "1". Ich fange bei "1" an zu zählen. wenn ich im Debugger das Programm durchspiele macht es alles Korrekt. Es zählt im Register wie es soll und subtrahiert. Auch macht er die Ausgabe Korrekt. Das Problem wenn ich das Programm auf mein Board aufspiele ist, dass die Leds willkürliche Zustände annehmen, wenn ich den Taster drücke..zumindest sieht es so aus, manchmal zählt er korrekt, manchmal nicht. Ich vermute aber, es liegt daran dass es davon abhängt wie lange ich drücke..d.h er zählt mehrmals obwohl ich nur kurz drücke. Wie kann ich es nun so machen, das "ein" tastendruck eben nur "einer" Addition oder Subtraktion entprechen soll.
Ostap A. schrieb: > Ich vermute aber, es liegt daran dass es davon abhängt wie lange ich > drücke.. Ja, und wenn du das geschafft hast zu ergänzen merkst du daß Taster prellen. Du wirst noch ein wenig programmieren üben müssen. https://www.mikrocontroller.net/articles/Entprellung
und ich muss also entprellen. wo kann ich ein einfaches Beispiel finden? Unter dem Link wird auch C verwendet. Kann ich nur mithilfe von Assembler entprellen?
Jetzt stellen wir und mal ganz dumm und geben bei Google (nicht in der Facebook App!) "c taster entprellen" ein. Und voilla - das erste Ergebnis verweist auf einen Artikel bei Mikrocontroller.net! Lies diesen Artikel. Falls Dir der Artikel noch zu kompliziert ist, gehe den einfacheren Weg: Schalte paralle zu deinen Tastern jeweils einen 47nF Kondensator. Dann bist du schonmal das Prellen los. Danach überlegst du Dir, wie du dafür sorgst, dass nur einmal pro Tastendruck gerechnet wird, anstatt solange die Taste gedrückt ist. Im Prinzip so: Wenn Taste A gedrückt wurde, dann addiere. Wenn Taste B gedrückt wurde, dann subtrahiere. Warte, bis beide Tasten losgelassen werden. Fange wieder von Vorne an. Das wäre die Anfängerfreundliche Version. Nun steige zu Level 2 auf, indem du per Software entprellst, statt mit Kondensatoren. Erster Tipp: Dafür wirst du einen Timer brauchen.
Stefan U. schrieb: > (nicht in der Facebook App!) > "c taster entprellen" ein. Und voilla - das erste ich habe kein Facebook..und ich wollte wissen ob das "ohne C" machen kann.
Beitrag #4996065 wurde von einem Moderator gelöscht.
Ostap A. schrieb: > und ich wollte wissen ob das "ohne C" machen > kann. Das kannst du auch ohne C machen.
Stefan U. schrieb: > Schalte paralle zu deinen Tastern jeweils einen 47nF Kondensator. Sorry lieber Stefan das ist absoluter Murks. Elektrisch Entprellen wird man mit einem RC-Glied und einem "Entladewiderstand" am Taster um den Strom zu begrenzen.
Ostap A. schrieb: > Kann ich nur mithilfe von Assembler entprellen? Logisch. Ein Beispiel ist im Link enthalten (Timerbasiertes Entprellen nach PeDa) - zudem finden sich auch einige gute Links, z. B. zu https://www.mikrocontroller.net/articles/AVR-Tutorial:_Tasten
> Sorry lieber Stefan das ist absoluter Murks. Ich denke, dem TO ist mit einem Kart momentan eher gedient, als mit einem Formel-1 Wagen. Der Taster wird die Entladeströme dieses kleinen Kondensators schon lange genug aushalten, davon bin ich überzeugt. > Unter dem Link wird auch C verwendet. > Kann ich nur mithilfe von Assembler entprellen? > ich wollte wissen ob das "ohne C" machen kann. Nur um Missverständnisse zu vermeiden, ich meinte diesen Link: https://www.mikrocontroller.net/articles/Entprellung Unter dem Link wird ausführlich erklärt, wie man entprellt. Und zwar in C UND IN ASSEMBLER. Wichtiger als die Code-Beispiele sind allerdings die Erklärungen dazu. Wenn du die verstanden hast, aknnst du das in jeder beliebigen Programmiersprache implementieren. In Assembler hast du die volle Kontrolle über den Mikrocontroller. Mit Assembler kann man prinzipiell alles programmieren, was programmierbar ist. Was C kann, kann Assembler erst Recht. Die Frage ist, ob Du es kannst. Wenn Dir das zu schwierig ist, solltest du erwägen, Assembler links liegen zu lassen und in C zu programmieren. Das ist nämlich wesentlich einfacher. Wenn du mit C gut zurecht kommt, kannst du es ja nochmal mit Assembler versuchen. Ab und zu ist diese Sprache zumindest für performance-kritische Teile durchaus hilfreich.
Stefan U. schrieb: > voilla Du meintest sicher "et voilà" Immerhin kann ich nun etwas finnisch..... ;-)
Ostap A. schrieb: > Unter dem Link wird auch C verwendet. > Kann ich nur mithilfe von Assembler entprellen? > und ich wollte wissen ob das "ohne C" machen kann. Wenn du es schaffen würdest, auf der verlinkten Seite noch 20cm weiter zu lesen, bevor das Aufmerksamkeitsdefizitsyndrom zuschlägt...
Hallo, nochmal. der Link mit der Tasterentprellung enthält einen Code der für mich nur schwer nachvollziehbar ist. Wie kann ich den als Anfänger einen Taster entprellen ohne diesen "langen" Code zu verwenden? Die Entprellung soll ja nicht perfekt sein. Ich würde es halt nur gerne selber machen. Dummie like eben. Ich würde es gerne in Assembler machen, weil wir im Modul bisher nur mit Assembler gearbeitet haben.
:
Bearbeitet durch User
Ostap A. schrieb: > Wie kann ich den als Anfänger einen Taster entprellen ohne diesen > "langen" Code zu verwenden? Verplempere Zeit. Lies die Taster ein und dann verplemterst du in einer Warteschleife z.B. 100ms. Und dann liest du wieder ein. Wenn die Pegel noch gleich sind, dann hat sich nichts getan. Wenn die Pegel unterschiedlich sind, dann musst du was tun. Das reicht fürs Erste... Und kurz danach wirst du merken, dass dir die verplemperte Rechenzeit woanders fehlt, weil du ja sonst auch noch was machen willst. Dann musst du dir eben Gedanken machen, wie du das löst. Den Prozess nennt man Lernen. Der Weg dahin ist Nachdenken und Mitdenken.
Ostap A. schrieb: > Wie kann ich den als Anfänger einen Taster entprellen ohne diesen > "langen" Code zu verwenden? Du solltest wirklich die Artikel lesen die man dir empfiehlt: Stefan U. schrieb: > Nur um Missverständnisse zu vermeiden, ich meinte diesen Link: > https://www.mikrocontroller.net/articles/Entprellung > > Unter dem Link wird ausführlich erklärt, wie man entprellt. Du musst halt die Erklärung lesen und verstehen, dann kannst du das Vorgehen ja in Assembler umsetzen.
Ostap A. schrieb: > Wie kann ich den als Anfänger einen Taster entprellen ohne diesen > "langen" Code zu verwenden? Sag deinem Aufgabensteller er soll gefälligst für euch als Anfänger dafür sorgen dass die Tasten-Prellerei euch nicht bei der Lösung der eigentlichen Aufgabe stört.
Lothar M. schrieb: > Ostap A. schrieb: >> Wie kann ich den als Anfänger einen Taster entprellen ohne diesen >> "langen" Code zu verwenden? > Verplempere Zeit. > Lies die Taster ein und dann verplemterst du in einer Warteschleife z.B. > 100ms. Und dann liest du wieder ein. Wenn die Pegel noch gleich sind, > dann hat sich nichts getan. Wenn die Pegel unterschiedlich sind, dann > musst du was tun. Das reicht fürs Erste... Genau sowas meinte ich! Vielen Dank! Fehlen wird mir die zeit sicher nicht. Denn schließlich möchte ich kein Programmierer werden, sondern lediglich das Modul bestehen.
:
Bearbeitet durch User
Hi Modul habe ich Letztens erst beim Führerschein gehört (ging um Kraftfahrer und Gefahrgut, nur nebenbei). Mit dem 'Zeit verplempern' ist Das gar nicht so einfach. https://www.mikrocontroller.net/articles/AVR_Assembler_Makros#Verz.C3.B6gerung_um_X_Nanosekunden MfG
Patrick J. schrieb: > Mit dem 'Zeit verplempern' ist Das gar nicht so einfach. Kein Thema - einfach mal ein Praktikum bei einer Straßenmeisterei machen :-)
Dieter F. schrieb: > Kein Thema - einfach mal ein Praktikum bei einer Straßenmeisterei machen > :-) Das ist DER Schenkelklopfer schlechthin. Den erzähle ich doch glatt auf der nächsten Trauerfeier.
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.