Hi , immoment programmiere ich einen Atmel mega 8 auf einem selbstgebauten Board. Da ich gern Taster verwenden möchte, habe ich mich in das Thema entprellen eingearbeitet und mir nun den Code von Peter Dannegger runtergeladen. "Entprellen für Anfänger". Der Code funktioniert gut und das "prell" Problem ist behoben. Nun habe ich eine frage zum Programmablauf. Ich bin das ganze Schematisch durchgegangen, scheine aber einen Denkfehler zu haben: Zunächst ist kein Tastergedrueckt, somit ist flag=0 und wir können nur in den "else" teil springen. Solange der Taster nicht gedrueckt ist, wird i=0 gesetzt. Ist der Taster nun gedrueckt, war es aber vorher noch nicht (flag =0), wird kurz gewartet, (255*delay zeit, wobei dies nur passiert,wenn der Taste dabei die ganze zeit gedrueckt wurde), danach setzen von i=1 und flag=1. Die Taste ist jetzt also tatsächlich gedrueckt worden und "prellt nicht mehr". Nun müsste meiner Meinung nach die Break Anweisung greifen und die endlos For Schleife verlassen und damit die Else Anweisung verlassen werden. Damit währe das Makro dann geschlossen. Beim nächsten Aufruf der debounce Funktion in meiner Main Funktion, ist das flag nun auf 1 und entweder prellt der taster nun noch (nach dem loslassen) oder er ist immer noch gedrueckt. (wir springen nun beim ersten aufruf in den if teil) Das Programm testet nun ob noch prellt / gedrueckt ist. Falls dieser Zustand für 25ms unterbrochen wird, gilt der Taster als losgelassen und entprellt. flag und i werden auf 0 gesetzt. Da meine LED*s erst aufleuchten, wenn ich den Taster loslasse, funktioniert das Programm scheinbar anders. Meiner Meinung nach müsste durch die Break Anweisung(nach setzen von flag und i=1) direkt der Status geändert werden. Ich habe mir dazu überlegt: Das Makro springt nachdem i=1 und das flag gesetzt wurden, direkt wieder an den Anfang, bevor es den Wert von i zurueckgeben kann. Könnte mir jemand erklären, wo ich etwas falsch verstanden habe? Vielen lieben Dank Oliver
Oliver A. schrieb: > im moment programmiere ich einen Atmel mega 8 auf einem selbstgebauten > Board. Welches Board? Schaltplan? > Da meine LED*s erst aufleuchten, wenn ich den Taster loslasse, > funktioniert das Programm scheinbar anders. Welches Programm? Quellcode?
Oliver A. schrieb: > Da meine LED*s erst aufleuchten, wenn ich den Taster loslasse, > funktioniert das Programm scheinbar anders. Dann sind Deine Taster andersrum. Ist aber kein Problem, da Du den Code ja verstanden hast. Tausche einfach das ! in den beiden Pinabfragen aus. Man braucht ja einen definierten Pegel, wenn der Taster nicht gedrückt ist und dazu schaltet man den internen Pullup ein. Drückt man den Taster, muß der Pegel wechseln, d.h. der Taster muß gegen GND schalten. Du hast warscheinlich den Taster gegen VCC geschaltet und deshalb noch nen zu sätzlichen pulldown Widerstand gegen GND benötigt. Falls Dein Board noch nen Kondensator am Taster hat, schmeiß ihn raus (Pollin Board Fehler). Peter
Hi, Ich habe es nun auf mein pollin Board gespielt, dort tritt dasselbe auf. Wobei ich dazu sagen muss, dass mein "selbstbau" board, einfach nur prozessor, quarz sowie taster mit kondensator / widerstand sind. (Die taster sind genauso beschaltet, wie im pollin board, da ich gelesen hatte, dass man damit dem prellen zusätzlich entgegen wirken kann) Da Herr Dannegger mir jetzt geschrieben hat, dass ich den code verstanden habe, bin ich froh. Es scheint ja zum glück nur am board zu liegen :) Ich werde jetzt einfach die Beschaltung auf meinem selbstbau board ändern. Vielen Dank Oliver
Jeder halbwegs normal denkende Bastler oder Entwickler wird bei AVRs die Taster an GND anschließen. Das ermöglicht die Nutzung der internen Ziehwiderstände. Und genau dafür hat Peter seine geniale Entprellung ausgelegt. Die Pollin-Bausätze werden wahrscheinlich von Azubis im Rahmen der Ausbildung entwickelt. Das sieht man daran, dass eigentlich kein Bausatz schaltungsmäßig wirklich optimal ist, die meisten Schaltungen sind schlichtweg falsch, schlecht, oder wären ohne materiellen Mehraufwand nur durch etwas mehr Gehirnschmalz einfach besser machbar gewesen. Die Tastenbeschaltung des Pollin-AVR-Boards ist einfach nur Schrott. Die unsinnigen Elkos schließen kurzzeitig die Betriebsspannung kurz und sorgen für ungewollten Reset des AVRs. Sowas sollte man nicht zum Vorbild nehmen. MfG
Hi, danke für die Erklärung. Ich habe von Elektronik leider nicht allzuviel Ahnung und das Board habe ich mir vor ca. 3 Jahren gekauft. Die Taster muss man glücklicherweise nicht nutzen. Ich habe über die Pinleiste die Anschlüsse auf ein Breaboard geführt.
Oliver A. schrieb: > Hi, > > danke für die Erklärung. > > Ich habe von Elektronik leider nicht allzuviel Ahnung und das Board habe > ich mir vor ca. 3 Jahren gekauft. Ich hatte es mir damals auch gekauft, aber nie aufgebaut. Ich konnte es dann einem entfernt wohnenden Bekannten übereignen, mit der Maßgabe, die Peripherie nicht zu bestücken und das Board ausschließlich als ISP-Programmer zu benutzen (sein Bastel-PC hat noch echte V.24). > Die Taster muss man glücklicherweise nicht nutzen. Aber wenn man es nicht weiß? Wer denkt denn bei einem industriell hergestellten gutaussehenden Board an solchen Pfusch? Du bist doch das Paradebeispiel, wie man auf Sowas reinfallen kann. ^^ > Ich habe über die Pinleiste die Anschlüsse auf ein Breaboard geführt. Auch die Anschlussbelegung der Stiftleiste wurde bei ausgeschaltetem Hirn festgelegt. Das hätte man viel günstiger machen können. So, genug gemeckert. ^^ MfG
Oliver A. schrieb: > Ich habe von Elektronik leider nicht allzuviel Ahnung http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_den_.C2.B5C.29 Peter
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.