Forum: Mikrocontroller und Digitale Elektronik Pollin AVR Board Fehler beim drücken der Taster / Qualität der Bauteile


von Bernd (Gast)


Lesenswert?

Falls noch jemand nach dem Fehler sucht :-D
Pollin scheint den Bausatz momentan mal wieder mit extrem minderwertigen 
Bauteilen auszuliefern.
Ich habe kürzlich für ein Projekt 8 Stück von den Boards (V2.01) 
bestellt und alle haben das Problem, dass der Controller crasht oder 
Mist baut wenn einer der Taster gedrückt wird. Der Kondensator C7 (47µF, 
16V) ist wohl dafür verantwortlich, mit 220µF aus der Bastelkiste läuft 
es wunderbar.
Der Fehler könnte auch für eine Vielzahl weiterer Probleme, die manche 
Leute mit dem Board haben verantwortlich sein, im Zweifel einfach einen 
zweiten Elko parallel anlöten.

Bitte jetzt keine endlosen Diskussionen über die Entprellung der Taster, 
ich finde die Lösung gut und sie funktioniert.

mfg,
Bernd

von Ich (Gast)


Lesenswert?

Sinnvoller.
R7 R8 R11 C19 C17 C18 entfernen und die Taster gegen Masse schalten.

von Bernd (Gast)


Lesenswert?

>Sinnvoller.
>R7 R8 R11 C19 C17 C18 entfernen und die Taster gegen Masse schalten.

Gibts dazu Messungen? Scopebilder über den Spannungseinbruch wären nett.

Ich habe noch zwei weitere Pollin Boards aus einer älteren Bestellung da 
funktioniert mit den 47µF Elkos alles problemlos, kann also nicht am 
Wert liegen. Rein an der Ladungsmenge kann ein eventueller 
Spannungseinbruch eigentlich auch nicht liegen, die kleinen 
Kondensatoren verbraten nur <1% der Ladungsträger die in dem Elko 
vorhanden sind. Also bleiben nur parasitäre Widerstände und 
Induktivitäten.

von Peter D. (peda)


Lesenswert?

Bernd schrieb:
> Bitte jetzt keine endlosen Diskussionen über die Entprellung der Taster,

Aha, Du kennst also die Ursache (C17..19).
Auch der neue 220µF wird irgendwann altern und dann wird Dich das 
Problem wieder ärgern.


> ich finde die Lösung gut und sie funktioniert.

Jede Lösung, die nicht die Ursache beseitigt, sondern nur die Wirkung 
bekämpft, ist Mist.


Peter

von Martin (Gast)


Lesenswert?

Ich hab auch Probleme beim Drücken der Taster.
Das Testprogramm von Pollin macht nicht das was es soll.
Wie kann ich nun die Ursache beseitigen?

von Ich (Gast)


Lesenswert?


von Martin (Gast)


Lesenswert?

Das heißt die Widerstände raus und eine Brücke rein?
Und wie genau schalte ich die Taster gegen Masse?

von Ich (Gast)


Lesenswert?

Keine Brücke sondern Taster anstelle der Widerstände.
R7 R8 R11 C17 C18 C19 ersatzlos entfernen.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Will man die vorhandenen Taster dabei weiter verwenden, muss man an drei 
Stellen Leiterbahnen auftrennen, jeweils den linken oberen Tastenpin von 
Vcc trennen:
1
Leiterbahn zu diesem Pin abtrennen
2
 |
3
 V
4
 X----O
5
 |    |
6
 |    |
7
 O----O
8
TasterX

Die abgetrennten Pins mit Drahtbrücken an Masse legen.

von Martin G. (schraubendreher)


Angehängte Dateien:

Lesenswert?

Nun hab ich es wie beschrieben gemacht, jedoch funktioniert nun gar 
nichts mehr.
Der Buzzer klackt ohne mein Zutun ganz oft und die gewünschte Funktion 
erfolgt auch nicht.

von Peter D. (peda)


Lesenswert?

Martin G. schrieb:
> Nun hab ich es wie beschrieben gemacht, jedoch funktioniert nun gar
> nichts mehr.

Du mußt natürlich den internen Pullup einschalten und beachten, daß die 
Tasten nun low aktiv sind.

Und vor allem brauchst Du eine zuverlässige (bulletproof) 
Entprellroutine.


Peter

von Martin G. (schraubendreher)


Lesenswert?

Ah ok alles klar.
Nein doch nicht bitte nochmal langsam und verständlich.

von Martin V. (oldmax)


Lesenswert?

Hi
Ich benutze dieses Board nun schon einige Zeit  und staune ein wenig 
über die Hinweise, Leiterbahnen zu unterbrechen und irgendwelche 
Bauteile zu entfernen. Eine Reklamation bei Pollin bringt da wohl mehr 
Erfolg. Es sei denn, man traut seiner Löttechnik nicht und da wird 
vermutlich das Problem sein. Ich habe keinerlei Probleme. Ein Hinweis: 
wenn sich das Board halt nicht so verhält, wie man's erwartet, dann 
reklamiert oder wenn das aus igendwelchen Gründen nicht möglich ist, 
benutzt doch ein Steckbrett. Einfach ein altes 40pol. IDE-Kabel aus 
alten PC's einseitig auf eine 40pol. Fassung gelötet und die Verbindung 
ist fertig. Die Fassung in das Steckbrett und nun könnt ihr eure 
Schaltungen entwerfen, wie es euch beliebt. Eine Platine zu verkratzen 
und Bauteile nach eigener Wahl einzulöten kann nicht im Sinne des 
Erfinders sein und als Tip nicht wirklich hilfreich.
Gruß oldmax

von Schlaumeier (Gast)


Lesenswert?

>Eine Platine zu verkratzen
>und Bauteile nach eigener Wahl einzulöten kann nicht im Sinne des
>Erfinders sein und als Tip nicht wirklich hilfreich.

Die Tastenbeschaltung ist dennoch Murks!

von Jones (Gast)


Lesenswert?

Pollin bietet auch einen bereits fertig aufgebauten und getesteten 
Bausatz an. Die Bauelemente sind qualitativ vollkommen in Ordnung, 
sicher sind die DIL-Fassung nicht gerade hochwertig. Aber eh man es auf 
die Bauteile schiebt sollte man mal seine Lötkünste überprüfen. Manche 
Kondensatoren mögen nun mal nicht "langzeitige Erwärmungen".

von Peter D. (peda)


Lesenswert?

Martin Vogel schrieb:
> Hi
> Ich benutze dieses Board nun schon einige Zeit  und staune ein wenig
> über die Hinweise, Leiterbahnen zu unterbrechen und irgendwelche
> Bauteile zu entfernen. Eine Reklamation bei Pollin bringt da wohl mehr
> Erfolg.

Das Ding hat einen Schaltungsfehler, d.h. bei Reklamation kann man nur 
sein Geld zurück bekommen.

Man muß auch nichts durchkratzen, wichtig ist nur, daß man die 
Kondensatoren in Reihe zu den Tasten entfernt.

Um den Einfluß zu simulieren, bräuchte man genaue Modelle der 
Kondensatoren und der Leiterbahninduktivität.


Peter

von Martin V. (oldmax)


Lesenswert?

Hi
Du meinst, parallel zu den Widerständen. Nun ja, sicherlich nicht grad 
elegant gelöst, aber er sollte doch den Taster entprellen. Allerdings 
mag die Schaltung keine gesetzten PullUp's und darauf schließe ich mal 
des Fehlverhalten. Prinzipiell widerspricht nichts dem Entfernen und ei 
Anschluß eines Tasters einseitig auf den Jumper, andere Seite gegen 
Masse. Aber wie ich schon sagte, es funktioniert auch so, wenn man die 
PullUp's nicht setzt.....
Gruß oldmax

von Jones (Gast)


Angehängte Dateien:

Lesenswert?

@Peter:
das ist wohl sehr unwahrscheinlich.

C17..19=220nF
R7..11=33kOhm

von Peter D. (peda)


Lesenswert?

Jones schrieb:
> @Peter:
> das ist wohl sehr unwahrscheinlich.
>
> C17..19=220nF

Die Praxis zeigt deutlich das Gegenteil.
Jeder der die Kondis entfernt hat, hatte danach die Probleme nicht mehr.

Keramikkondensatoren sind sehr niederohmig, d.h. da können durchaus 
mehrere 10A Impulsströme fließen (für wenige ns).


Peter

von Jones (Gast)


Lesenswert?

Passiert wahrscheinlich nur Leuten die den Taster so schnell drücken das 
ein idealer DIRAC-Impuls entsteht. :)

Schade, habe gerade kein passendes GHz-Oszi zur Hand.

von Simon K. (simon) Benutzerseite


Lesenswert?

Das hat doch nichts mit der Geschwindigkeit des Drückens zu tun...

von Jones (Gast)


Lesenswert?

deswegen ist da auch ein :)

und hättest du den Satz zu Ende gelesen oder verstanden wüsstest du was 
gemeint ist!

von Martin G. (schraubendreher)


Lesenswert?

Hallo nochmal,
ich würde das Board gerne betreiben nur was muss ich nun alles dazu 
ändenr damit es funktioniert?

von Jo O. (brause1)


Lesenswert?

Martin G. schrieb:
> Hallo nochmal,
> ich würde das Board gerne betreiben nur was muss ich nun alles dazu
> ändenr damit es funktioniert?

Was haste denn gemacht ?
selbst zusammengelötet? oder bestückt gekauft?
Schon irgendwas an der Bestückung geändert?
und was funktioniert nicht? bei welchem Programm?

von oldmax (Gast)


Lesenswert?

hi
Über 2 Monate, und noch immer kein funktionierendes Board? Also, die 
Leiterbahnen sind aufgetrennt, die Platine hingehunzt, sehr schön ! 
Warum nicht mal lesen, was einfacher ist....
Die eigene Löttechnik überprüfen, da bei anderen dieses Board 
anscheinend seine Dienste tut. Siehe meinen Beitrag. Ach ja, es gibt 
z.B. für 5€ mehr ein fertiges Board. Aber das funktioniert vermutlich 
genausowenig. Warum? Nun, einen µC zu betreiben erfordert ein wenig mehr 
Wissen. Da muß z.B. auch ein Programm erstellt, übersetzt und geflasht 
werden. Ist nicht einfach nur Controller stecken und fertig.
Eigenes Unvermögen mit schadhaften Bauteilen zu begründen ist der 
schlechteste Weg zum Erfolg. Da kommst du keinen Schritt voran, auch 
nicht, wenn du dir die teuren STK's zulegst. Der Gedanke, das durch 
einen Tastendruck die Versorgungsspannung einbricht läßt nun wirklich 
nicht auf schadhafte Taster schließen. Kondis schon möglich, und da ist 
der Tip mit den 220 µF gar nicht so schlecht. Bedenkt, das diese Platine 
ein Entwicklungsboard ist. Die Taster benutze ich gar nicht. Zur 
Schaltungsentwicklung nutze ich ein Steckboard, welches "meine" 
Schaltung erlaubt. Die Taster auf dem Pollin-Board sind wirklich nur für 
anfängliche Spielereien....
Ich empfehle dir erst einmal ein paar Std. Elektrotechnik, danach 
Elektronik. Dann wirst du die Schaltung verstehen und auch, wie man 
einen Fehler durch Messungen eingrenzt und findet. Wenn du dir Mühe 
gibst, schaffst du es vielleicht noch in diesem Jahr. Also ran....
Enen guten Rutsch ins Neue und nicht verzagen, wenn's in 2009 nicht mehr 
klappt.
Gruß oldmax

von Peter D. (peda)


Lesenswert?

Wie oft denn noch?

C17..19 abknipsen, dann läufts!


Peter

von teN crA (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Wie oft denn noch?
>
> C17..19 abknipsen, dann läufts!
>
>
> Peter
Also bei dem Addon auch?
Da sieht die Beschaltung ja gleich aus?
Warum soll man den laut Pollin ATMEL Evaluations-Board die 
Kondensatoren abknipsen und die Widerstände zur Masse brücken?

von Peter D. (peda)


Lesenswert?

Der AVR kann interne Pullups benutzen. Schaltet man dann Tasten gegen 
GND spart man sich die externen Pullups ein.

Bei Tasten gegen VCC braucht man in jedem Fall externe Pulldowns, hat 
also einen höheren Schaltungsaufwand.

Es geht aber beides und ist kein Fehler.


Die Kondensatoren sind dagegen ein echter Schaltungsfehler.
Wie stark er sich auswirkt, hängt von der Leiterbahnführung der VCC- und 
GND-Leitungen und vom ESR der Siebkondensatoren ab.
Das erklärt auch, warum der Fehler bei fabrikneuen Kondensatoren mit 
geringem ESR oft noch nicht bemerkt wird.


Peter

von Stefan B. (Gast)


Lesenswert?

> Warum soll man den laut Pollin ATMEL Evaluations-Board die
> Kondensatoren abknipsen und die Widerstände zur Masse brücken?

Soll man nicht. Lies die Diskussionsseite des Artikels zu diesem 
Vorschlag.

Es reicht aber, wie Peter vorschlägt, die Kondensatoren auszulöten und 
die Leiterbahn dort offen zu lassen. Die dadurch fehlende 
Entprellfunktion des Kondenstors programmiert man dann in Software.

von Jo O. (brause1)


Lesenswert?

Vielleicht nochmal die Begründung, weil die im Artikel nicht deutlich 
drinsteht:

Nomalerweise ist der Kondensator C19 (330nF) entladen, weil er mit R7 
(33k) überbrückt ist.

Drückt man jetzt auf die Taste, dann wird damit die Versorgungsspannung 
direkt auf diesen entladenen Kondensator geschaltet.
Der im Einschaltaugenblick fließende Strom wird nur durch den ESR des 
Kondensators und den Kontaktwiderstand des Tasters begrenzt. Da diese 
Impedanzen sehr klein sind, kann die Versorgungsspannung so weit 
einbrechen, dass andere Bauteile dadurch gestört werden. Wenn jetzt z.B. 
die Versorgung des uC (mit 100nF abgeblockt) direkt am Taster liegt, 
dann fällt die Spannung am uC von 5V auf 5V*(100nF/330nF) = 1.5V ab. 
Dies führt unweigerlich zu Fehlfunktionen.

Ein Vergrößern der Elkos am Spannungsregler macht wenig Sinn, da diese 
Elkos einen deutlich höheren (altersabhängigen) ESR haben als C19. 
Außerdem sind diese relativ weit entfernt, so dass durch die Impedanz 
der Leiterbahn das Einbrechen der Spannung um uC kaum verhindert werden 
kann.

Bei solchen Spielchen (Spannung ohne Widerstand auf Kondensator 
schalten) kann auch leicht mal passieren, dass hinterher die doppelte 
Spannung (oder auch eine negative Spannung) am Kondensator liegt. Der 
Kondensator kann nämlich mit der Leiterbahninduktivität einen 
Schwingkreis bilden.

von eProfi (Gast)


Lesenswert?

Schon mal dran gedacht, den Stromimpuls durch einen R in Reihe zum 
Taster oder zum C zu verringern?

von Jo O. (brause1)


Lesenswert?

Jo O. schrieb:
> dann fällt die Spannung am uC von 5V auf 5V*(100nF/330nF) = 1.5V ab.

Peinlich, peinlich.
Ich bin zu blöd die Spannung am Kondensator richtig zu berechnen.
Und keiner sagt was.
Die Spannung fällt natürlich auf : 5V*(100nF/330nF+100nF) = 1.16V ab.


eProfi schrieb:
> Schon mal dran gedacht, den Stromimpuls durch einen R in Reihe zum
> Taster oder zum C zu verringern?

Es gibt viele Möglichkeiten das Problem zu beheben. Bei deinem Vorschlag 
muss man aber nachrechnen welche Spannung bei betätigtem und nicht 
betätigtem Schalter am Eingang liegt. Und das hängt dann auch noch vom 
Eingangswiderstand des uC ab.

Mann kann auch einfach den Kondensator über den Schalter legen. Das 
dürfte alle Probleme beseitigen.
Einwände dagegen?

von Jo O. (brause1)


Lesenswert?

Ich selber hatte den Kondensator damals einfach rausgeschmissen. Das ist 
nach meiner Meinung in diesem Fall das vernünftigste. Dann muss man 
softwareseitig nur damit rechnen, dass der Schalter prellen kann. Die 
Logik bleibt so, dass die für das Board geschriebenen Programme die 
Eingänge richtig interpretieren.

von Gunther J. (boerser)


Angehängte Dateien:

Lesenswert?

Hallo zusammen. Schön, dass ich nach 2 Monaten Fehlersuche auf diesen 
Thread gestoßen bin.
Meine Idee war auch, entweder C7 zu vergrößern oder die 
Entprell-Kondensatoren zu entfernen. Interessanterweise hängt sich der 
Controller nicht auf, wenn man ihn lediglich mit 2 MHz betreibt, also 
DIV8 bei den Fuses. Auf der anderen Seite klingt es logisch, dass ein 
Controller bei 16 MHz mehr Energie verbraucht und deshalb anfälliger auf 
den Spannungseinbruch reagiert.
Am Anfang des Threads wurde nach einem Oszillogramm gefragt. Auch wenn 
das Thema nicht mehr ganz aktuell ist, hab ich mal eines angehängt. Bei 
all meinen Messungen betrug der Einbruch ca. 0,4V. Meiner Meinung nach 
müsste das innerhalb der Toleranz liegen, was der µC (in meinem Fall 
ATmega644) verträgt. Aber möglicherweise gibt es da auch statistische 
Ausreißer. Schließlich steigt das Ding nicht bei jedem Tastendruck aus.
Meine erste Idee war der Schaltregler gewesen. Denn die Art, wie sich 
die Spannung wieder einschwingt, deutet auf einen Regelkreis hin. Mein 
Fehler. Das zeigt ja gerade, dass der Regler schonmal funktioniert, 
nicht wahr?
Ich nehme an, das Entfernen der Entprell-Cs dürfte der sinnvollste Weg 
sein. Weil weiter oben auch das Entfernen von R7, R8 und R11 
vorgeschlagen wurde: Die brauche ich doch als Pulldowns, oder? Mir 
erschließt sich der Hintergrund dieses Vorschlags nicht.

von Werner B. (werner-b)


Lesenswert?

Bitte nicht die Hälfte weglassen. Da steht nicht dass

> ... das Entfernen von R7, R8 und R11
> vorgeschlagen wurde ...

 sondern

> ... Taster anstelle der Widerstände.
> R7 R8 R11 C17 C18 C19 ersatzlos entfernen.

Ich habe jetzt den Schaltplan nicht im Kopf (täte warscheinlich auch weh 
besonders das aufmachen ;-), aber der Erfolg sollte sein, dass die 
Taster active-low betrieben werden.

von Klaus2 (Gast)


Lesenswert?

Hallo,

kann man die PullUps auch durch Auftrennen der Leiterbahn entfernen? 
Oder wie?

Klaus.

von Timo S. (kaffeetas)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

anbei ein Foto von meinem Umbau auf active-low.
Die beiden 10kOhm Widerstände sind die Pullups für I2C Leitungen, diese 
müßen dann von "unten" an 5V gehängt werden.

Grüße
 Timo

von Aufpasser (Gast)


Lesenswert?

> C17..19=220nF
Wer hat es mal mit weniger Kapazität versucht?
So 1 bis höchstens 10nF.

von Xian (Gast)


Lesenswert?

Ja! Hab ich!

Und jetzt mal eine Lösung ohne Leiterbahnen auftrennen oder 
Programmänderungen (Entprellung, Pull-Up oder Ähnliches):

Die Widerstände gegen 100k austauschen, die Kondensatoren gegen 100n.

Bei mir haben sich damit alle Probleme erledigt. Die Zeitkonstante (R*C) 
bleibt halbwegs konstant & damit die Entprellfunktion gewährleistet.

Mal ne Frage an die erfahrenen Praktiker: Sind 47mu nicht ein wenig 
Wenig für den Stützelko von so ner Platine, insbesondere wenn noch das 
Addon-Board dranhängt?

von sBronco (Gast)


Lesenswert?

Ich hab auch diese beiden Boards v2.01 und addon, bei mir bekommen beide 
Saft vom Netzteil, haben ja auch beide nen 7805

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Es ist und bleibt Pfusch, Taster gehören ohne Zusatzbeschaltung zwischen 
Portpin und GND, die Entprellung übernimmt ein Stück Programmcode.

von Martin (Gast)


Lesenswert?

... die Entprellung übernimmt ein Stück Programmcode ...

Woher kommt diese Weisheit?

von Peter D. (peda)


Lesenswert?

Martin schrieb:
> ... die Entprellung übernimmt ein Stück Programmcode ...
>
> Woher kommt diese Weisheit?

Weil es am sinnvollsten ist.

Man muß nur einmal eine Entprellroutine entwickeln und bekommt fürderhin 
alle gewünschten Ereignisse auf dem Silbertablett serviert (drücken, ist 
gedrückt, loslassen, ist losgelassen), ohne Nebeneffekte.

Diese Entprellroutine wird dann nur eingefügt und man muß niemals wieder 
darüber nachdenken, wie man denn nun die Tasten auswertet, ohne den 
Programmablauf zu behindern bzw. ohne Tastenereignisse zu verlieren.

Eine Entprellroutine spart also massig Entwicklungszeit bei jedem neuen 
Projekt. Sie spart auch etwas Material, aber das ist nur ein kleiner 
Nebeneffekt.


Man sieht hier täglich Beispiele, wie sich Leute regelrecht abquälen, 
nur weil sie keine effiziente Entprellroutine verwenden wollen.


Peter

von Xian (Gast)


Lesenswert?

Kluchscheißender Kluchscheißer schieb

> Es ist und bleibt Pfusch, Taster gehören ohne Zusatzbeschaltung zwischen
> Portpin und GND, die Entprellung übernimmt ein Stück Programmcode.

Jain! Wenn Du Rechenleistung/Speicher/Timer über hast: Ja.

Es steht aber nicht ohne Grund im Artikel 
http://www.mikrocontroller.net/articles/Entprellung :

" Softwareentprellung

... Dabei ist zu beachten, dass zusätzliche Rechenleistung und je nach 
Umsetzung auch Hardwareressourcen benötigt werden (z. B. Timer)."

Dem stehen Bauteilkosten < 10ct gegenüber...

Alle Beginner, die nach einer einfachen Lösung des hier beschriebenen 
Problems umsehen, seien daher auf mein Posting hingewiesen.

@ alle Erfahrenen: Mich würde interessiern wie groß der Stützelko eines 
vom 7805 versorgten Atmel8/16/32 mit ein wenig Peripherie 
(LEDs/Display/Tasten,...) typischerweise sein sollte?
Und wenn man eine Hardware-Entprellung vorzieht, welche Werte für die 
Kondensatoren/Widerstände/Zeitkonstanten sinnvoll sind? 100n und 100k = 
10ms erscheinen mir recht sinnvoll. Eure Meinung?

von MarioT (Gast)


Lesenswert?

Xian schrieb:
> ... Dabei ist zu beachten, dass zusätzliche Rechenleistung und je nach
> Umsetzung auch Hardwareressourcen benötigt werden (z. B. Timer)."
>
> Dem stehen Bauteilkosten < 10ct gegenüber...

Bin voll Deiner Meinung.

Xian schrieb:
> Und wenn man eine Hardware-Entprellung vorzieht, welche Werte für die
> Kondensatoren/Widerstände/Zeitkonstanten sinnvoll sind? 100n und 100k =
> 10ms erscheinen mir recht sinnvoll. Eure Meinung?

Man darf es aber nicht so anklemmen wie im Pollin-Board, das ergibt 
einen Kurzschluß.

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Xian schrieb:
> Kluchscheißender Kluchscheißer schieb
>
>> Es ist und bleibt Pfusch, Taster gehören ohne Zusatzbeschaltung zwischen
>> Portpin und GND, die Entprellung übernimmt ein Stück Programmcode.

Ja, das schrieb ich, und dazu stehe ich auch.

>
> Jain! Wenn Du Rechenleistung/Speicher/Timer über hast: Ja.

Nööö, wieso?

Die Entprellung kostet alle 20 ms (alle 20000 Takte bei 1 MHz) 20 Takte 
Rechenleistung (in ASM), das sind gerade mal 0,1%. Das merkt das 
Hauptprogramm überhaupt nicht. Im Gegenteil, denn die Entprellung hat ja 
bereits die Flanken erkannt und separat zur Verfpgung gestellt 
(Silbertablett eben).
Kommt Autorepeat oder anderweitige kurz/lang-Erkennung dazu, dann werden 
es ein paar Takte mehr, die verbrauchte Rechenzeit liegt aber immer noch 
weit unter 0,5%.
Kommt eine Hochsprache zum Einsatz, oder werden die Variablen aus 
anderen Gründen im SRAM gehalten, dann kommen noch ein paar Takte für 
das Holen und Zurückschaffen der Variablen hinzu, es bleibt weiterhin 
unter 0,5% Prozessorlast.
Nur in reinem Bascom wird es eng, da Bascom ja alle Register sichert, 
wenn zur ISR verzweigt wird, was unnötig Stack und Rechenzeit 
verschwendet. Aber auch da gibt es eine effiziente Lösung, die auf RN 
veröffentlicht ist.

Wenn Du diese <0,5% Rechenleistung nicht über hast, dann hast Du etwas 
Anderes grundlegend falsch gemacht.

Im Gegenteil, der Einsatz von PeDas Entprellalgorithmus spart jede Menge 
Code beim Auswerten der Tastendrücke im Hauptprogramm, spart also mehr 
Speicher als er selbst kostet (Silbertablett halt).

>
> Es steht aber nicht ohne Grund im Artikel
> http://www.mikrocontroller.net/articles/Entprellung :
>
> " Softwareentprellung
>
> ... Dabei ist zu beachten, dass zusätzliche Rechenleistung und je nach
> Umsetzung auch Hardwareressourcen benötigt werden (z. B. Timer)."

Leute, die sich vor der Verwendung dieser Entprellung drücken, meiden 
meist auch den Timer-Interrupt. Ich behaupte einfach mal kackfrech, dass 
sie die Vorzüge dieser Art Programmierung mangels Wissen noch nicht 
erkannt haben. Die AVRs haben Timer, es gibt kein Geld zurück, wenn man 
sie meidet. Ein Timer kann oft mehrere Dinge quasi gleichzeitig managen, 
die Entprellung lässt sich meist von einem sowiso benötigten Timer 
nebenher erledigen.

>
> Dem stehen Bauteilkosten < 10ct gegenüber...
>
> Alle Beginner, die nach einer einfachen Lösung des hier beschriebenen
> Problems umsehen, seien daher auf mein Posting hingewiesen.

Die einfache und sorgenfreie Lösung ist nunmal die Entprellung im 
Timer-Interrupt.

>
> @ alle Erfahrenen: Mich würde interessiern wie groß der Stützelko eines
> vom 7805 versorgten Atmel8/16/32 mit ein wenig Peripherie
> (LEDs/Display/Tasten,...) typischerweise sein sollte?

Da reichen normalerweise bereits die 100nF-Kerkos an den 
IC-Stromversorgungspins. Denn Elkos haben (ohne Not) hinter dem 78xx 
nichts zu suchen, da sie den Regler stören. Der einzige Fall, bei dem 
ich einen kleinen Elko hinter dem 78L05 dulde, ist ein DCC-Lokdecoder, 
und das auch nur, um kurze Unterbrechungen der Stromversorgung (Kontakt 
Gleis-Räder) zu überbrücken.

> Und wenn man eine Hardware-Entprellung vorzieht, welche Werte für die
> Kondensatoren/Widerstände/Zeitkonstanten sinnvoll sind? 100n und 100k =
> 10ms erscheinen mir recht sinnvoll. Eure Meinung?

von Xian (Gast)


Lesenswert?

Ich will hier keinem erfahrenen Entwickler widersprechen, auch wenn der 
Name geradezu herausfordert. ;) Aber anscheinend habe ich das eine oder 
andere falsch verstanden; bitte daher um ein Wort der Erklärung:

Kluchscheißender Kluchscheißer schrieb:

> Nööö, wieso?
>
> Die Entprellung kostet alle 20 ms (alle 20000 Takte bei 1 MHz) 20 Takte
> Rechenleistung (in ASM), das sind gerade mal 0,1%.

Das ist die reine Rechenleistung. Bei einfachen Mikrocontrollern können 
die Interrupts sich doch nicht gegenseitig unterbrechen (, da keine 
Prioritäten vorhanden...), oder? Wenn jeder Tastendruck einen solchen 
auslöst, stehen für die Dauer der Auswertung keine Interrupts mehr zur 
Verfügung, oder? Sind dann zeitkritische Auswertungen/Messungen noch 
möglich?

> Wenn Du diese <0,5% Rechenleistung nicht über hast, dann hast Du etwas
> Anderes grundlegend falsch gemacht.

... oder was nicht richtig verstanden. s.o. Die Hardwarelösung erfordert 
ein einziges weiteres Bauteil, wenn man den internen Pull-X verwendet. 
Und man kann sich dann sicher sein, dass die Taste länger als ein Zeit Y 
gedrückt wurde, je nach Zeitkonstante Z.
Ich bin mir durchaus der Eleganz und Flexibilität von SW-Lösungen 
bewusst. Solche einfache analogen Tiefpassfilter sieht man aber durchaus 
öfters. Die werden lange nicht immer in SW realisiert. Warum?
Und wenn es so wenig eine Rolle spielt, warum ist der genannte Artikel 
hier sooo geschrieben?

> Im Gegenteil, der Einsatz von PeDas Entprellalgorithmus spart jede Menge
> Code beim Auswerten der Tastendrücke im Hauptprogramm, spart also mehr
> Speicher als er selbst kostet (Silbertablett halt).

Das finde ich interessant! Wie ist das gemeint? Wenn ich mehr als nur 
die Auswertung des Tastendrucks haben will, die Dauer oder Ähnliches, 
kann ichs noch nachvollziehen. Aber falls nicht, muss ich mit der 
HW-Lösung nur den entsprechenden Port auslesen, oder ich lasse einen 
Interrupt auslösen und kann mir jedes Mal sicher sein, dass die Taste 
tatsächlich gedrückt wurde. Wie soll ich dem gegenüber noch 
Code/Rechenleistung einsparen können?

> Leute, die sich vor der Verwendung dieser Entprellung drücken, meiden
> meist auch den Timer-Interrupt. Ich behaupte einfach mal kackfrech, dass
> sie die Vorzüge dieser Art Programmierung mangels Wissen noch nicht
> erkannt haben.

Verwende Timer und kenne Vorzüge. Kann mich aber auch in die Haut eines 
Anfängers reinversetzen, der nur den Status einer Taste auswerten will, 
ohne darüber zu promovieren. (Sorry wegen der Zynik. ;))

> Da reichen normalerweise bereits die 100nF-Kerkos an den
> IC-Stromversorgungspins. Denn Elkos haben (ohne Not) hinter dem 78xx
> nichts zu suchen, da sie den Regler stören.

??? Höre ich das erste Mal. Dachte immer, der unterstützt den Regler. 
Verwende meistens eine Elko und einen FoKo oder KerKo. Woher du haben? 
Sollte das Board von Pollin ohne Elko besser laufen?

von Falk B. (falk)


Lesenswert?

@  Xian (Gast)

>Ich will hier keinem erfahrenen Entwickler widersprechen,

Warum tust du es dann?

>Das ist die reine Rechenleistung. Bei einfachen Mikrocontrollern können
>die Interrupts sich doch nicht gegenseitig unterbrechen (, da keine
>Prioritäten vorhanden...), oder?

Eher oder, siehe Interrupt. Der8051 hat Prioritäten, der AVR nicht.
Aber selbst ohne Prioritäten ist das Null Problemo.

> Wenn jeder Tastendruck einen solchen
>auslöst, stehen für die Dauer der Auswertung keine Interrupts mehr zur
>Verfügung, oder?

Theoretisch ja. Praktisch sind das ein paar Mikrosekunden, die in keinem 
Programm eine Rolle spielen. Ausserdem werden Tasten meist periodisch in 
einem Timer Interrupt eingelesen und entprellt, das ist 
deterministisch.

> Sind dann zeitkritische Auswertungen/Messungen noch möglich?

Wenns WIRKLICH zeitkritisch ist, macht man keine Tasenabfrage. Aber 
soooo zeitkritisch sind nicht mal 1% der Programme.

>... oder was nicht richtig verstanden. s.o.

Eben.

>Die Hardwarelösung erfordert
>ein einziges weiteres Bauteil, wenn man den internen Pull-X verwendet.

Nö, man braucht für einen SOLIDE Lösung noch einen weiteren Widerstand, 
damit der Taster den Kondensator nicht ungebremst kurzschließt. Siehe 
Schmitt Trigger.

>bewusst. Solche einfache analogen Tiefpassfilter sieht man aber durchaus
>öfters. Die werden lange nicht immer in SW realisiert. Warum?

Kann man so allgemein nicht beantworten.

>Und wenn es so wenig eine Rolle spielt, warum ist der genannte Artikel
>hier sooo geschrieben?

>Verwende Timer und kenne Vorzüge. Kann mich aber auch in die Haut eines
>Anfängers reinversetzen, der nur den Status einer Taste auswerten will,
>ohne darüber zu promovieren. (Sorry wegen der Zynik. ;))

Dann wird er wie Millionen andere vor ihm Lehrgeld zahlen müssen.

>> Da reichen normalerweise bereits die 100nF-Kerkos an den
>> IC-Stromversorgungspins. Denn Elkos haben (ohne Not) hinter dem 78xx
>> nichts zu suchen, da sie den Regler stören.

Das ist schlicht Unsinn. Siehe den brandneuen Artikel [[Stromversorgung 
für FPGAs]].

>??? Höre ich das erste Mal. Dachte immer, der unterstützt den Regler.

Ist auch so. Nur leider gibt es immer wieder Fälle, wo es Leute was 
falsch gemacht haben und daraus falsche Schlüsse ziehe und 
verallgemeinern.

MfG
Falk

von Xian (Gast)


Lesenswert?

@Falk Brunner
>>Ich will hier keinem erfahrenen Entwickler widersprechen,
>
> Warum tust du es dann?

Weil ich das Eine oder Andere nicht verstehe, anders kenne oder anders 
beurteile (z.B. 7805 & Elko). Foren sind dafür da, nachzufragen, oder?

Entschuldige bitte, dass ich nicht allen Postern auf Anhieb vertraue und 
Lob preise. Weiß ja nicht, ob mans mit einem Entwickler, einem 
Berufschullehrer, einem Bastler, einem HW-Hacker oder einem Troll zu tun 
habe. Jeder wird eine andere Sicht auf ein Problem haben. Und das muss 
nicht mit seiner Intelligenz oder Erfahrung zusammen hängen. Vielmehr 
können unterschiedliche Anwendungsfelder unterschiedliche Anforderungen 
und daher verschiedene (richtige) Antworten auf ein und die gleiche 
Frage haben.

> Aber selbst ohne Prioritäten ist das Null Problemo.
...
> Theoretisch ja. Praktisch sind das ein paar Mikrosekunden, die in keinem
> Programm eine Rolle spielen.
...
> Aber
> soooo zeitkritisch sind nicht mal 1% der Programme.

Ich liebe pauschale Aussagen... Die heizen eine Diskussion so richtig 
schön an.

Was ist denn zum Beispiel mit Encoder-Auswertung, 
Geschwindigkeitsmessungen oder Ähnlichem für Regelungen? Dafür sind 
Mikrocontroller doch ganz gut geeignet, oder? Und eine Art UI für 
Parameteränderungen o.Ä. will man dann vielleicht trotzdem!

>>Die Hardwarelösung erfordert
>>ein einziges weiteres Bauteil, wenn man den internen Pull-X verwendet.

> Nö, man braucht für einen SOLIDE Lösung noch einen weiteren Widerstand,
> damit der Taster den Kondensator nicht ungebremst kurzschließt.

Tut der wirklich not? Ich will ja eine einfache, funktionierende 
Lösung und nicht DIN-zertifizierte Elektronik, um sie zu verkaufen.

>>Solche einfache analogen Tiefpassfilter sieht man aber durchaus
>>öfters. Die werden lange nicht immer in SW realisiert. Warum?
>
> Kann man so allgemein nicht beantworten.

Aha!

Wdh:
>>Und wenn es so wenig eine Rolle spielt, warum ist der genannte Artikel
>>hier sooo geschrieben?

> Dann wird er wie Millionen andere vor ihm Lehrgeld zahlen müssen.

Was genau soll denn passieren? Ein paar Erläuterungen helfen manchmal 
bei solchen Aussagen Nachfragen zu vermeiden.

Mein ursprüngliches Posting bezog sich auf das Problem bei dem Pollin 
Board. Man muss zwei Bauteile austauschen oder gleich anders einsetzen. 
Nichts durchkratzen oder ähnliches müssen. Dann funktioniert das Board. 
Problem gelöst. Viele Anfänger suchen eine solch einfache Lösung. Wenn 
später etwas eigenes, zeitunkritisches aufgebaut wird, kann man ja per 
SW entprellen.
Ein erfahrener Entwickler wird sich auch sicher kein Pollin Board 
kaufen.

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Xian schrieb:
> ...
> Mein ursprüngliches Posting bezog sich auf das Problem bei dem Pollin
> Board.

Das ist schlichtweg eine Fehlkonstruktion.

Gut, das ist jetzt stark übertrieben, aber optimal ist es keinesfalls. 
Ich vermute, es wurde von den Azubis im Rahmen der Ausbildung 
entwickelt, so wie die anderen Bausätze auch, die alle nicht zu Ende 
gedacht wurden.

Wer das Board in Verbindung mit einem älteren Rechner (mit echten 
COM-Schnittstellen) als Ponyporog-Programmer nutzt, ist damit gut 
bedient. Als Experimentierboard ist es aber ziemlich ungeeignet, weil 
vieles unnötig kompliziert gemacht wird (Tastenbeschaltung, 
Stiftleistenbelegung, usw.). Man gewöhnt sich damit an, uneffizient zu 
programmieren. Als reine Testplatine ist ein Stück Lochrasterplatine mit 
IC-Sockel und ein paar Stift- oder Buchsenleisten bedeutend besser 
geeignet.

Nochmal zur Entprellung, denn ich denke, dass Du da etwas missverstanden 
hast:

Es geht darum,
- im Abstand von 5 bis 30 ms eine Routine aufzurufen, die
- den Port einliest (alle 8 Tasten auf einmal),
- mit dem Zustand der "letzten Runde" vergleicht (8 Bit breit für
  8 Taster gleichzeitig),
- bei Unterschieden für jedes Bit separat einen 2-Bit-Prellzähler
  hochzählt,
- bei Überlauf des Prellzählers (für jedes Bit separat) den neuen
  Portzustand übernimmt,
- bei der Flanke von unbetätigt nach betätigt für jede Taste separat
  einen Merker setzt, der dem Hauptprogramm mitteilt, dass ein neuer
  Tastendruck erfolgte,
- dazu (für 8 Tasten gemeinsam!) nur 4 Register und weniger als 20
  Takte Rechenzeit alle rund 20 ms benötigt.

Der Timer kann nebenher andere Dinge tun. Wird z.B. ein Takt von 1 ms 
gebraucht, um Millisekunden für eine Stopuhr zu zählen, so zählt man 
eine Hilfsvariable hoch, verANDet sie mit 15 und verzweigt bei 0 zur 
Entprellroutine. Diese wird dann alle 16 ms aufgerufen. Will man 
Hundertstelsekunden zählen (Timer-Int. alle 10 ms), dann kann man die 
Entprellung in jeder Runde oder jeder zweiten Runde aufrufen.

Dabei wird der Port, an dem die Taster hängen, regelmäßig abgefragt (und 
verglichen), egal ob ein (oder mehrere) Taster betätigt ist/sind oder 
nicht. Ein Tastendruck löst also keinen zusätzlichen Interrupt aus und 
blockiert an keiner Stelle den Programmablauf. Irgendwo im Hauptprogramm 
fragt man dann die Tastendruckmerker ab, erledigt bei gesetztem Merker 
den zugehörigen Job und löscht dabei diesen Merker (denn der Job ist ja 
getan). Einfacher geht es nun wirklich nicht.

von Jo O. (brause1)


Lesenswert?

Xian schrieb:
> Solche einfache analogen Tiefpassfilter sieht man aber durchaus
> öfters. Die werden lange nicht immer in SW realisiert. Warum?

Sowas hab ich vorher noch nie gesehen. Ganz ehrlich!
Und wenn ich sowas gesehen hätte, dann wäre es keine Tiefpassfilter 
gewesen.
Von dem was da geroutet ist kann man ja nicht mal ein vernünftiges tau 
angeben.
Beim Drücken des Schalters macht macht das Dings einfach nur einen 
kurzen Kurzschluss auf der Versorgungsspannung. Ein bisschen schieben an 
den Bauteilwerten ändert an diesem Verhalten nichts.(Ich wiederhole das, 
obwohl es hier bestimmt jetzt schon 20 mal in diesem Thread drinsteht.)

Wenn du das "Solche" weggelassen hättest, hätte ich das Zitat von dir 
aber sofort unterschrieben.

Man kann man nämlich kein Signal vernünftig digitalisieren in dem 
Frequenzanteile auftauchen die eine höhere Frequenz haben als die halbe 
Abtastfrequenz: http://de.wikipedia.org/wiki/Abtasttheorem.
Wenn man sowas macht, dann sollte man sich sehr genau überlegen was das 
für Folgen haben kann.

Wenn der Taster nicht direkt auf dem Board wäre, sondern über eine 
längere Leitung angeschlossen wäre, und damit höherfrequente Störungen 
auf die Leitung eingestreut werden könnten, dann ist eine reine 
SW-Lösung nicht mehr möglich. Dann muss die Bandbreite vor der 
Digitalisierung zusätzlich begrenzt werden.

mein Fazit:
Ein Tiefpassfilter an dieser Stelle wäre schon in Ordnung, ist aber 
leider auf dem Pollinboard nicht geroutet.
Reine SW-Lösungen führen auch oft zu Fehlern, weil das Shannontheorem 
leicht vergessen werden kann. (Und von vielen, auch professionellen, 
Entwicklern einfach ignoriert wird)

Richtig wäre:
Bandbreite mit einem analogen Tiefpassfilter entsprechend der 
Abtastfrequenz reduzieren, dann den Rest in SW machen.

von Falk B. (falk)


Lesenswert?

@  Xian (Gast)

>Entschuldige bitte, dass ich nicht allen Postern auf Anhieb vertraue und
>Lob preise. Weiß ja nicht, ob mans mit einem Entwickler, einem
>Berufschullehrer, einem Bastler, einem HW-Hacker oder einem Troll zu tun
>habe.

War ein kleiner Test. Hast bestanden ;-)

>Ich liebe pauschale Aussagen... Die heizen eine Diskussion so richtig
>schön an.

Wieso pauschal? Man hat dir mehrfach vorgerechnet, das die Entprellung 
nur Bruchteile an Rechenleistung schluckt. Was willst du mehr?

>Was ist denn zum Beispiel mit Encoder-Auswertung,
>Geschwindigkeitsmessungen oder Ähnlichem für Regelungen?

Was soll damit sein?

> Dafür sind
>Mikrocontroller doch ganz gut geeignet, oder?

Ja und?

> Und eine Art UI für
>Parameteränderungen o.Ä. will man dann vielleicht trotzdem!

UI? User Interface?
Ja, das ist oft benötigt. Aber nochmal, die Entprellung in Software 
fällt immer mit ab.

>Tut der wirklich not? Ich will ja eine einfache, funktionierende
>Lösung und nicht DIN-zertifizierte Elektronik, um sie zu verkaufen.

Jaja, erst alles in Frage stellen und dann doch Bastelmurks produzieren. 
Du weist nicht was du willst. Und du verrenst dich in eine Sackgasse.
Dann nimm deine Schaltung und nutze sie. Ende.

>Was genau soll denn passieren? Ein paar Erläuterungen helfen manchmal
>bei solchen Aussagen Nachfragen zu vermeiden.

>Nichts durchkratzen oder ähnliches müssen. Dann funktioniert das Board.
>Problem gelöst. Viele Anfänger suchen eine solch einfache Lösung. Wenn
>später etwas eigenes, zeitunkritisches aufgebaut wird, kann man ja per
>SW entprellen.

Was ist denn bitte schön bei dir zeitkritisch? Gerade Anfänger machen 
gar nichts zeitkritisches, die lassen eine LED mit 16 MHz CPU-Takt 
blinken.

Ausserdem reden wir über des Kaisers neue Kleider. Die einfache Lösung 
wurde mehrfach präsentiert, funktioniert.

MfG
Falk

von Falk B. (falk)


Lesenswert?

@  Jo O. (brause1)

>Reine SW-Lösungen führen auch oft zu Fehlern, weil das Shannontheorem
>leicht vergessen werden kann. (Und von vielen, auch professionellen,
>Entwicklern einfach ignoriert wird)

Abtasttheorem für Tasten? Jetzt wird's philosophisch! ;-)

MfG
Falk

von Jo O. (brause1)


Lesenswert?

Falk Brunner schrieb:
> Abtasttheorem für Tasten? Jetzt wird's philosophisch! ;-)

Die Frage war, warum man analoge Tiefpassfilter öfter sieht. Darauf 
bezog sich die Antwort.

Hast recht, dass man sich bei nem Taster direkt auf der Platine 
wahrscheinlich nicht drum zu scheren braucht. Da gibts halt keine hohen 
Frequenzanteile, die zu Fehlauslösungen führen können. Dann brauch man 
natürlich auch nicht zu filtern.

Andererseits hatte ich schon mehrfach den Fall, dass bei abgesetzen 
Schaltern und Tastern genau dieser Fehler zu Fehlauslösungen geführt 
hat.

Eine Entwicklungsschmiede z.B. hat es geschafft den seit Jahren 
problemlos funktioniereneden Analogfilter an dieser Stelle zu sparen. 
Die waren ganz stolz, dass jetzt alles parametrierbar im uC 
untergebracht wäre. Und billiger wäre die Platine jetzt auch. Die haben 
sogar die EMV Test bestanden. Leider waren die Kunden nicht so 
überzeugt, da öfter mal Fehlauslösungen auftraten.

Mann muss sich halt im Klaren darüber sein, dass reine SW Lösungen nur 
Scheiben aus dem Signal auswerten, und dass man solche Lösungen fast 
immer mit bestimmen Störsignalen überrumpeln kann. Und das tritt in der 
Praxis häufiger auf, als ich es für möglich gehalten hätte. In einer EMV 
verseuchten Umgebung ist es oft nur eine Frage der Zeit, bis es mal zu 
einer Fehlauslösung kommt. Die Fehlersuche ist dann fast unmöglich.

von Xian (Gast)


Lesenswert?

Also, um Missverständnisse auszuräumen:
1. Ich stelle nicht die Eleganz und Flexibilität einer SW-Lösung in 
Frage.
2. Mir ist klar wie das Programm funktionieren sollte.
3. Es ging mir nur um die Antwort auf die Frage: Wie krieg ich das 
Pollin-Board zum Laufen. Nicht ob das Layout gut gelöst ist oder nicht.
Und Tatsächlich kommen keine Fehler mehr bei meiner Lösung. Elegant oder 
nicht: ist so.
4. Mir ist auch klar, dass durch das Fehlen von dem Widerstand zur 
Versorgung beim Hochziehen keine Filterwirkung vorhanden ist. Aber 
nochmal: Es funktioniert so. Meinetwegen für dich Bastelmurks. Ich 
meinte eher KISS (Keep it Simple & Small)...
5. @Falk: Die von mir zitierten Aussagen von Dir sind mAn pauschal.

Meine noch offenen Fragen:
1. Mir ist trotz der ganzen bestimmt nett gemeinten Beiträge nicht klar, 
was passieren soll. Nochmal deutlich gefragt: *Wo ist der Nachteil einer 
HW-Entprellung?* Warum nicht bei Schaltungen verwenden? Warum 
Bastelmurks (also wenn Versorgungsanschluss über Widerstand realisiert 
wird.)
2. Ein RC-Glied ist doch ein Tiefpass, oder?
3. Wenn man Encoder auswerten will: Da kommen die Flanken. d.h. die 
Interrupts evtl. mit zig 100kHz rein. Die Interrupts sollen nicht durch 
das Ausführen eines Timer-Interrupts verpasst werden. Wie kann man das 
Problem anders lösen? Lösungvorschläge (Ohne 
Prioritäten/CPLDs/FPGAs/Zusatzchips (Nur wegen Tastern diese zu 
verwenden halte ist mAn überflüssig.))?

Danke für sachliche Antworten!

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Oberer Absatz:
Zu 3.
Das Pollin-Board ist betreffs Tasterbeschaltung Pfusch 
(Fehlkonstruktion). Die beste Lösung ist einfach, es zu meiden. Sieh es 
einfach als Fehlkauf, oder ändere die Beschaltung (Taster zwischen 
Portpin und GND) und nutze die internen PullUps.

Unterer Absatz:
Zu 1.
Sie ist bei kurzen Leitungen zum Taster einfach nicht nötig. Bei 
längeren Leitungen benutze ich auch einen externen (gegenüber dem 
internen niederohmigeren) Pullup-Widerstand und in verseuchter Umgebung 
auch ein RC-Glied (niederohmiger R und kleiner C in Reihe) parallel zum 
Taster. Bei Tastern auf dem Board ist das aber nicht nötig.

Zu 2.
Man kann es auch als Integrierglied sehen, kommt halt auf den Kontext 
an.

Zu 3.
Von Encodern war bisher keine Rede. Man muss auch den Anwendungsfall 
unterscheiden. Positionsbestimmung von Antrieben stellen oft so hohe 
Anforderungen, dass ein kleiner AVR damit überfordert ist.
Handbetätigte Drehgeber lassen sich gut im Timer-Interrupt von etwa 1 ms 
Intervall abfragen. Dazu wird aus dem aktuellen und vorhergehenden 
Zustand ein 4-Bit-Index gebildet, über den der Inkrement-Wert (0, +1, 
-1) aus einem Array gelesen wird und zum Zähler addiert wird. Je nach 
Beschaffenheit des Drehgebers kann die LUT (das Array) unterschiedlich 
ausfallen.

von Mitleser (Gast)


Lesenswert?

Xian schrieb:
> 2. Ein RC-Glied ist doch ein Tiefpass, oder?

definitiv : NEIN!

- Ein Tiefpass kann aus einem R und und einem C aufgebaut sein, muss 
aber nicht

- Je nach Verdrahtung und Signalfluss kann ein RC-Glied auch ein 
Hochpass sein oder ein Tiefpass oder ein Diffentiator oder ein 
Integrator oder einfach nur ein R und ein C oder was weiß ich ...

- Ein RC-Glied kann auch ein Murxpass sein, wie auf dem Pollinboard.

von Xian (Gast)


Lesenswert?

Danke Kluchscheißender Kluchscheißer.

Verstehe ich das richtig: Eine Entprellung  (SW oder HW) kann ganz 
entfallen?

Integrierglied nur für Strom, oder? Für Spannung PT1 (oder: Verzögerung 
1.Ord.)!? Reihenschaltung ist tatächlich wesentlich eleganter, richtig.

Von Encodern habe ich weiter oben bereits gesprochen. Wirklich nix für 
mu-Controller? Doch CPLD oder Chip? Dachte eigentlich, dass sollte 
funzen.

& Pollin-Board nix? Alternativen für Einsteiger, die <50€ kosten? 
Nochmal: nicht schön, aber es funktioniert doch.
Bei 20€ kann man auch nicht sooo viel erwarten. Ich kenne einige 
versierte Entwickler, die damit eingestiegen sind (... vielleicht sind 
sie deswegen so versiert! ;)).
Wer wenig/nicht löten, sondern primär programmieren kann/will und 
einfache Einsteiger-HW sucht, ist damit mAn gut bedient, Taster hin oder 
her.
Wer mehr will baut eh früher oder weniger selbst was auf.

Grüße
Xian

von Falk B. (falk)


Lesenswert?

@  Xian (Gast)

>Von Encodern habe ich weiter oben bereits gesprochen. Wirklich nix für
>mu-Controller? Doch CPLD oder Chip? Dachte eigentlich, dass sollte
>funzen.

Siehe Drehgeber

>Nochmal: nicht schön, aber es funktioniert doch.

Ja, wenn man den Bug beseitigt.

>Bei 20€ kann man auch nicht sooo viel erwarten.

Aber nicht so einen elementaren Fehler!

MfG
Falk

von Mitleser (Gast)


Lesenswert?

Xian schrieb:
> Verstehe ich das richtig: Eine Entprellung  (SW oder HW) kann ganz
> entfallen?

All das hier hängt doch von der Anwendung ab. Natürlich kann es 
Anwendungen geben, bei denen nicht gefiltert oder entprellt werden muss.
Wenn du z.B. 2 Tasten an den Eingängen hast, die eine schaltet eine 
Funktion (Beleuchtung) ein und die andere schaltet sie wieder aus, dann 
kommst du ohne Filter aus.
Wenn der Tastendruck eine Lampe für 3 minuten einschalten soll, dann 
brauchst du auch nicht zu entprellen.
Du musst dir halt überlegen, dass ein Schalter prellen kann und dass 
Störungen auf den Leitungen liegen können.
Wenn das für deine Application keine Rolle spielt, dann brauchst du es 
auch nicht zu machen.

Die RC Kombination auf dem Pollinboard, 330nf und 33k, lädt den 
Kondensator unverzögert (--> Kutzschluss) auf und verlängert nach öffnen 
des Tasters das Siganl etwas, da der Kondensator über denn 33k wieder 
entladen wird --> tau =11ms. Damit sieht der Eingang dann das Prellen 
des Schalters nicht.
Leider sieht der uc gar nix, weil ihn der anfängliche Kurzschluss längs 
in den Reset gejagt hat.

Der Satz: "Es funktioniert so." Klingt zwar doll, ist er aber nicht. Ich 
bin mir sicher, dass der Entwickler und die Tester des Boards bei Pollin 
auch sowas ähnliches gedacht und gesagt haben.
Ich bin mir sogar sicher, dass bei denen der Fehler auch nicht 
aufgetreten ist, dann hätten sie den nämlich abgestellt. Leider sind 
solche Fehler nicht unbedingt reproduzierbar. und je nach Netzteil und 
Temperatur und Tagezeit und Beleuchtung und Luftfeuchtigkeit und 
Wechselkurs des Euro tritt so ein Fehler mal zutage und mal nicht.

von Peter D. (peda)


Lesenswert?

Jo O. schrieb:
> Eine Entwicklungsschmiede z.B. hat es geschafft den seit Jahren
> problemlos funktioniereneden Analogfilter an dieser Stelle zu sparen.
> Die waren ganz stolz, dass jetzt alles parametrierbar im uC
> untergebracht wäre. Und billiger wäre die Platine jetzt auch. Die haben
> sogar die EMV Test bestanden. Leider waren die Kunden nicht so
> überzeugt, da öfter mal Fehlauslösungen auftraten.

Dann hat der Softwareentwickler aber seine Hausaufgaben nicht gemacht.

Leider gibt es viele SW-Entprellungen, die den Namen nicht verdienen.
Entprellen wird oft nicht als richtige Aufgaben wahrgenommen und dann 
auch nicht richtig implementiert.

Ich hab auch lange Zeit nur ne 2-fach Abtastung programmiert und dann 
kamen noch vereinzelt Preller vor.
Das Problem ist, bei fabrikneuen Tasten merkt man den Fehler noch nicht. 
Erst mit Alterung der Bauteile fällt es auf.

Nach der Umstellung auf 4-fach Abtastung habe ich nie wieder Preller 
gehabt.
Eine 4-fach Abtastung scheint mir das Optimum zu sein. Die Erweiterung 
auf 8-fach Abtastung wäre aber leicht möglich.


SW-Entprellen ist kein Hexenwerk. Aber man muß sich einmal damit 
beschäftigen.


Peter

von Xian (Gast)


Lesenswert?

Mitleser schrieb:
> Der Satz: "Es funktioniert so." Klingt zwar doll, ist er aber nicht.

Sorry die unpräzise Aussage. Es funktioniert mit dem Umbau auf 100n und 
100k bei mir. Hatte anfänglich das gleiche Problem.

von Gerhard K. (mikros)


Lesenswert?

Sorry dass ich mich hier kurz reinhänge:

Kluchscheißender Kluchscheißer schrieb:
> Nur in reinem Bascom wird es eng, da Bascom ja alle Register sichert,
> wenn zur ISR verzweigt wird, was unnötig Stack und Rechenzeit
> verschwendet. Aber auch da gibt es eine effiziente Lösung, die auf RN
> veröffentlicht ist.

Hast Du vielleicht einen Link, finde da nichts.(Wahrscheinlich zu blöd
zum Suchen)

Danke trotzdem

MfG
Mikros

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Xian schrieb:
> Mitleser schrieb:
>> Der Satz: "Es funktioniert so." Klingt zwar doll, ist er aber nicht.
>
> Sorry die unpräzise Aussage. Es funktioniert mit dem Umbau auf 100n und
> 100k bei mir. Hatte anfänglich das gleiche Problem.

Die Pollin-Beschaltung ist und bleibt auch bei anderer Dimensionierung 
Pfusch, da sie Spikes auf der Versorgungsspannung verursacht, die unter 
ungünstigen Bedingungen zum Reset oder Programmabsturz führen können.

Wenn Du unbedingt mit RC-Glied arbeiten willst, dann ändere die 
Schaltung. Sinnvolle Beschaltungen der Taster wurden oben bereits zur 
Genüge genannt.

Wenn Du unbedingt mit dieser Schrott-Beschaltung leben möchtest, so tu 
es, ich muss mich ja nicht nach Dir richten. Aber verbreite hier bitte 
nicht die Mär, dass damit alles in Ordnung wäre, denn das wäre unfair 
gegenüber anderen Anfängern und Pollin-Board-Käufern.

Und ja, ich hatte mir das Board auch gekauft, eigentlich mit dem 
Hintergrund, bei Fragen zu diesem Board helfen zu können. Ich war dann 
recht froh, dass ein Bekannter, der selbst nicht programmiert, dem ich 
deshalb gelegentlich AVR-Software schreibe, einen billigen Programmer 
für seinen etwas betagten Bastel-PC suchte. Somit wurden auf dem Board 
nur die IC-Sockel, Quarz-Sockel und die zum Programmieren erforderliche 
Hardware bestückt. Die Peripherie, also Taster, LEDs, Piepser und die 
Jumper dazu wurden gar nicht erst bestückt. Das Board wird als reiner 
billiger Ponyprog-Programmer genutzt.

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Gerhard K. schrieb:
> Sorry dass ich mich hier kurz reinhänge:
>
> Kluchscheißender Kluchscheißer schrieb:
>> Nur in reinem Bascom wird es eng, da Bascom ja alle Register sichert,
>> wenn zur ISR verzweigt wird, was unnötig Stack und Rechenzeit
>> verschwendet. Aber auch da gibt es eine effiziente Lösung, die auf RN
>> veröffentlicht ist.
>
> Hast Du vielleicht einen Link, finde da nichts.(Wahrscheinlich zu blöd
> zum Suchen)

Na dann suche ich mal........... Fertig Mais-Teer....
Beitrag "Re: BASCOM: Taste lang oder kurz gedrückt?"

>
> Danke trotzdem
>
> MfG
> Mikros

von Gerhard K. (mikros)


Lesenswert?

Hallo!

Danke schön!

Hab im Artikelbereich gesucht!

MfG
Mikros

Edit: Doch zu blöd !

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Gerhard K. schrieb:
>
> Edit: Doch zu blöd !

Achwas, was meinst Du, wie oft ich was nicht finde....

von Thomas (kosmos)


Lesenswert?

Hallo ich rolle das ganze nochmals kurz auf, da mein Kumpel sich dieses 
Board bestellt hat und schon mit dem löten angefangen hat.

1. Wie groß sind die Widerstände R7-R9 ich habe bisher mit 10 kOhm 
Pulldown gute Erfahrungen gemacht 5V/10kOhm=0,5mA Dauerbelastung der 
Spannungsversorgung pro Schalter. Da im Artikel 100kOhm empfohlen 
werden.
2. Oder soll der Beschriebene Spannungseinbruch daher kommen das beim 
Drücken des Tasters der Kondensator die Spannungsversorgung kurzfristig 
belastet bis er voll ist.
3. Wie groß sind die C17-C19

von Hannes L. (hannes)


Lesenswert?

Thomas O. schrieb:
> Hallo ich rolle das ganze nochmals kurz auf, da mein Kumpel sich dieses
> Board bestellt hat und schon mit dem löten angefangen hat.
>
> 1. Wie groß sind die Widerstände R7-R9

Siehe Bestückungsplan in der Anleitung, welche bei Pollin zum Download 
bereit liegt.

> ich habe bisher mit 10 kOhm
> Pulldown gute Erfahrungen gemacht

Es hat sich allgemein eingebürgert, Taster nach GND zu schalten. Da 
braucht es keine Pull-Down, sondern Pull-Up. Diese sind bereits im AVR 
drin. Sie müssen nur "verstärkt" werden, wenn die Leitungen zu den 
Tastern zu lang sind (Einkoppeln von Störungen) oder wenndie Software 
nicht ordentlich entprellt.

> 5V/10kOhm=0,5mA Dauerbelastung der
> Spannungsversorgung pro Schalter. Da im Artikel 100kOhm empfohlen
> werden.
> 2. Oder soll der Beschriebene Spannungseinbruch daher kommen das beim
> Drücken des Tasters der Kondensator die Spannungsversorgung kurzfristig
> belastet bis er voll ist.

Genau.

> 3. Wie groß sind die C17-C19

Siehe Stückliste in der Bedienungsanleitung.

...

von Trollig (Gast)


Lesenswert?

Wie lange kann man eigentlich über einen falsch geschalteten Kondensator 
diskutieren.

Die einfache Lösung steht hier:

eProfi schrieb:
> Schon mal dran gedacht, den Stromimpuls durch einen R in Reihe zum
> Taster oder zum C zu verringern?Beitrag melden | Bearbeiten | Löschen |

Aber jeder wie er möchte...

von oldmax (Gast)


Lesenswert?

Hi
Warum holt ihr so einen alten Beitrag aus dem Keller ? Viele Probleme 
mit dem Pollin-Board sind doch längst zigmal abgehandelt. Wer ein wenig 
nachdenkt, lässt die Finger eh von den Tastern auf dem Board und baut 
sich eine gescheite Testplatine oder nutzt für Experimente Steckbretter. 
Die 2 Taster sind doch schon nach 5 Minuten langweilig....
Gruß oldmax

von Thomas (kosmos)



Lesenswert?

Ich habe das ganze mal am Oszi nachgestellt statt der 33 kOhm Pulldowns 
habe ich aber 39 kOhm genommen weil ich keine 33er da hatte. Als 
Kondensator habe ich mal einen gängigen 100nF Kerko genommen die jeder 
in der Hosentasche haben sollte.

So wie das auf dem Bild aber aussieht sind das doch Folienkondensatoren, 
sowohl an den Tastern also auch an den einzelnen ICs.

von Hannes L. (hannes)


Lesenswert?

Thomas O. schrieb:
> Ich habe das ganze mal am Oszi nachgestellt statt der 33 kOhm Pulldowns
> habe ich aber 39 kOhm genommen weil ich keine 33er da hatte. Als
> Kondensator habe ich mal einen gängigen 100nF Kerko genommen die jeder
> in der Hosentasche haben sollte.
>
> So wie das auf dem Bild aber aussieht sind das doch Folienkondensatoren,
> sowohl an den Tastern also auch an den einzelnen ICs.

Ach Thomas, was soll der Quatsch. Es lohnt sich nicht, diesen Murks zu 
verschlimmbessern.

Taster werden nach GND geschaltet, es wird der AVR-interne PullUp 
aktiviert und eine vernünftige Software-Entprellung (nach Peter 
Dannegger) programmiert, und schon ist die Welt in Ordnung.

Es ist sooooo einfach, aber die Leute bei Pollin haben's (noch) nicht 
begriffen und viele Käufer fallen drauf rein, wollen sich nicht 
eingestehen, dass sie Murks gekauft haben. Allein die industrielle 
Produktion der Platine mit Durchkontaktierungen, Lötstopplack und 
Bestückungsdruck garantiert noch kein Spitzenproduckt.

...

von Thomas (kosmos)


Lesenswert?

@Hannes Lux, das kann ja jeder machen wie er will. Ich für meinen Teil 
verwende seit jeher Pulldowns die sind auf der Platine und man sieht 
sie, man weiß mit einem Blick was da los ist auch ohne den Quelltext 
geöffnet zu haben.

Ich habe ja auch nichts gegen eine Softwareentprellung wenn Sie 
gebraucht wird. Aber nach meinen Messungen prellen diese Mikroschalter 
halt nicht bzw. so kurz das Sie mit einer sehr kurzen 
Softwareentprellung zurechtkommen.

Ich selber habe dieses Bord auch gar nicht. Ein Kumpel von mir hat es 
sich bestellt und ich bin im Forum darüber gestolpert das es da Probleme 
mit einsackender Spannung bei Tastendruck gibt und es ihm mitgeteilt. 
Nun das einfachste ist einfach den Kondensator wegzulassen und keine 
Klimmzüge auf dem Board zu unternehmen.

von Peter D. (peda)


Lesenswert?

Thomas O. schrieb:
> Ich für meinen Teil
> verwende seit jeher Pulldowns

Kann jeder machen wie er will.
Ich nehme immer die internen Pullups, schon weil die sich beim 8051 
nicht abschalten ließen. Und beim AVR hab ich das dann bequemer Weise 
übernommen.

Thomas O. schrieb:
> Ich habe ja auch nichts gegen eine Softwareentprellung wenn Sie
> gebraucht wird.

Ich nehme sie immer, da sie das Programmieren deutlich bequemer macht 
(Flankenerkennung, Störunterdrückung, Komfortfunktionen).


Thomas O. schrieb:
> Aber nach meinen Messungen prellen diese Mikroschalter
> halt nicht bzw. so kurz das Sie mit einer sehr kurzen
> Softwareentprellung zurechtkommen.

Nun, das Gerät soll aber auch nach 2 Jahren noch funktionieren, wenn auf 
den Kontakten Staub und Oxydschichten liegen und die Federspannung 
nachgelassen hat.


Peter

von Frank P. (mauz)


Lesenswert?

Thomas O. schrieb:
> Nun das einfachste ist einfach den Kondensator wegzulassen und keine
> Klimmzüge auf dem Board zu unternehmen.
Genau, C17-19 einfach nicht einlöten, funktioniert und das Testprogramm 
muss auch nicht angepasst werden. Entprellroutinen sollten auch damit 
klarkommen, wenn gegen Vcc geschalten wird, Pedas tut es, wenn ich nicht 
irre. Alles andere ist unnötiger Aufwand, für die kurze Lernphase und 
die kleine Tests, für die man das Board braucht.
frank

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
Noch kein Account? Hier anmelden.