Hallo zusammen, kann man Taster irgendwie Softwaretechnisch gegen EMV schützen? habe das Problem dass die Taster sich selbstständig machen! mfg
hast du pullup widerstände?? häufigste ursache, wenn der taster sich verselbstständigt
klosk schrieb: > habe das Problem dass die Taster sich selbstständig machen! Du meinst warscheinlich falsche Auslösungen. Da hilft einfach eine Entprellsoftware. Beitrag "Entprellen für Anfänger" Peter
ne ne entprellt sind die mit nem delay , das Problem ist wenn mein mosfet mit 2khz taktet macht sich meine Software selbstständig, verlässt zum Beispiel dass Menü springt in andere Menüpunkte usw. ist es ein fehler wenn ich die taster so angeschlossen habe`? gruß
Falsch angeschlossen sind die Taster nicht. Falsch wäre es, bei dieser Beschaltung die Pullupwiderstande im µC zu aktivieren. Gegen Störeinstrahlung kann eine RC-Kombination auf dem Controllereingang helfen. Grüße, Peter
klosk schrieb: > ne ne entprellt sind die mit nem delay , das Problem ist wenn mein > mosfet mit 2khz taktet macht sich meine Software selbstständig, verlässt > zum Beispiel dass Menü springt in andere Menüpunkte usw. Nun, dann solltest Du daraus ja was gelernt haben: Ein Delay ist keine wirksame Entprellmethode! Peter
okay ich versuche mal deine methode, habe aber noch eine frage bezüglich deines codes: und zwar: so wie ich das verstanden habe ist dieser teil des programms für die auflistung der zu entprellenden taster notwenig?
1 | {
|
2 | DDRB &= ~(1<<PB0); |
3 | PORTB |= 1<<PB0; |
4 | DDRB |= 1<<PB2; |
5 | DDRB &= ~(1<<PB1); |
6 | PORTB |= 1<<PB1; |
7 | DDRB |= 1<<PB3; |
8 | for(;;){ |
9 | if( debounce( PINB, PB1 ) ) |
10 | PORTB ^= 1<<PB2; |
11 | if( debounce( PINB, PB0 ) ) |
12 | PORTB ^= 1<<PB3; |
13 | }
|
14 | }
|
wo kommt der große teil des programms hin? und wo kommt das ergebnis dieses tasters her wenn ich beispielsweise eine if anweisung für den taster brauche?
Ich denke das Problem sind nicht die Taster, oder probier auch dort mal nen Kondensator zwischen dem Schalter und GND. Könnte es sein dass du direkt am µC keine 100nF zwischen VCC und GND geschaltet hast? Gruss David
ich versuche diese Entprellsoftware zuerst aus, kann mir jemand helfen diese einzubinden verstehe sie nicht! Beitrag "Entprellen für Anfänger" Was wird hier genau gemacht? was bedeutet das ^= ?
1 | int main(void) |
2 | {
|
3 | DDRB &= ~(1<<PB0); |
4 | PORTB |= 1<<PB0; |
5 | DDRB |= 1<<PB2; |
6 | DDRB &= ~(1<<PB1); |
7 | PORTB |= 1<<PB1; |
8 | DDRB |= 1<<PB3; |
9 | for(;;){ |
10 | if( debounce( PINB, PB1 ) ) |
11 | PORTB ^= 1<<PB2; |
12 | if( debounce( PINB, PB0 ) ) |
13 | PORTB ^= 1<<PB3; |
14 | }
|
15 | }
|
wie kann ich eine if anweisung mit dem Ergebnis erstellen?
klosk schrieb: > ich versuche diese Entprellsoftware zuerst aus, kann mir jemand helfen > diese einzubinden verstehe sie nicht! Lies bitte auch die nachfolgenden Beiträge in dem Thread. Da hat auch einer die Tasten high-aktiv geschaltet. > was bedeutet das ^= ? Schau bitte in irgendein C-Buch, -Tutorial, -Kurs, -Referenz. > wie kann ich eine if anweisung mit dem Ergebnis erstellen? Ganz genau wie in dem Codebeispiel:
1 | if( debounce( PINB, PB1 ) ) |
2 | PORTB ^= 1<<PB2; |
Debounce liefert Wahr bei der Flanke von Losgelassen nach Gedrückt. 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.