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
Da fehlt: - Flanke erkennen - entprellen
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?
Gast
#4996044
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.
Gast
#4996066
Ostap A. schrieb: > und ich wollte wissen ob das "ohne C" machen > kann. Das kannst du auch ohne C machen.
Gast
#4996071
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.
Gast
#4996075
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
Gast
#4996446
> 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.
Gast
#4996488
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.
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.
Gast
#4997303
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.
Gast
#4997308
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.
Gast
#4997459
Oder bleibe in Level 1: Mit Kondensator entprellen.
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.
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
Gast
#4997922
Patrick J. schrieb: > Mit dem 'Zeit verplempern' ist Das gar nicht so einfach. Kein Thema - einfach mal ein Praktikum bei einer Straßenmeisterei machen :-)
Gast
#4998009
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.

