hps schrieb:
> Wenn man keinerlei Entprellung hat, kann beim alternierenden Ein-und
> Ausschalten elektrischer Verbraucher auf der Ausgangsseite hochfrequente
> Strahlung erzeugt werden
Jede Schaltflanke erzeugt solche "Störungen". Aber das ist hier völlig
irrelevant. Denn ein prellender Taster würde solche "Störungen" auch
erzeugen, wenn er die LED direkt, ganz ohne µC, schalten würde.
Und der Ausgang würde an der LED ganz ohne Taster die "Störungen" auch
erzeugen, wenn die LED z.B. mit 1kHz PWM geschaltet würde. Und dann
dauernd und vielfach.
> entspricht der Kondensator einer guten und kostengünstigen
> elektronischen Praxis.
Ich mache sowas nur bei Schaltern, die einen gewissen Mindeststrom zum
"Freibrennen" der Oxidschicht brauchen. Als allgemeine "Regel" ist so
eine "Bastlerfaustformel" völlig ungeeignet. Und zum Thema "gute
Praxis": an keinem meiner üblichen Taster, die auf Logikpegel agieren,
ist ein solcher Kondensator. Keine davon ist negativ aufgefallen. Auch
nicht im EMV-Test.
hps schrieb:
> Zunächst solltest Du den Taster hardwaremäßig "entprellen", indem du
> z.B. einen 100nF Kondensator parallel zum Taster verlötest.
Bei solchen "Entprellkondensatoren" , die dann vom Taster
kurzgeschlossen werden, sollte man aber genau wissen, ob man das schon
tun darf. Generell ist das der Lebensdauer des Tasters eher nicht
zuträglich.
Und wenn man schon einen µC hat und die Anwendung eine Entprellung
braucht, dann macht man das in Software.
@ wolle g. (wolleg)
Diese Abfrage macht mit der Invertierung erst mal einen Knoten ins Hirn:
1 | if (!(P3IN&BIT0) == BIT0)
|
Warum schreibst du nicht so:
1 | if ( P3IN&BIT0 ) // Eingangspegel = high?
|
2 | P4OUT &=~BIT0; // j: Augang = low --> LED = ein
|
3 | else
|
4 | P4OUT |=BIT0; // n: Augang = high --> LED = aus
|
Die Abfrage auf
reicht aus, denn ein if macht den if-Pfad dann, wenn der Ausdruck in der
Abfrage ungleich 0 ergibt. Und wenn der Ausdruck 0 ist, dann macht er
den else-Pfad.
Und wenn ich am P3In das gewünschte Bit 1 ausmaskiert habe, dann kommt
da bei gedrücktem Taster 2 raus oder bei nicht gedrücktem eine 0. Fazit:
da muss nichts mehr weiter invertiert und verglichen werden...
BTW:
Warum schaltest du den Schalter so umständlich?
Der MSP hat doch sicher schaltbare Pullups. Den schaltest du ein und
klemmst den Taster zwischen Eingangspin und GND. Und dann musst du nur
noch die Programmlogik umkehren. Oder die LED mitsamt Vorwiderstand
ebenfalls zwischen Vcc und Ausgangspin schalten (aber das ist sie nach
deinem Kommentar sowieso).