Forum: Mikrocontroller und Digitale Elektronik EMV Taster schützen


von klosk (Gast)


Lesenswert?

Hallo zusammen, kann man Taster irgendwie Softwaretechnisch gegen EMV 
schützen? habe das Problem dass die Taster sich selbstständig machen!

mfg

von Marcus B. (raketenfred)


Lesenswert?

hast du pullup widerstände??

häufigste ursache, wenn der taster sich verselbstständigt

von klosk (Gast)


Lesenswert?

ja hab ich gemacht mit 10k!

von klosk (Gast)


Angehängte Dateien:

Lesenswert?

ne hab ich nicht ^^ habs so angeschlossen ist das ein fehler?

von Peter D. (peda)


Lesenswert?

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

von klosk (Gast)


Lesenswert?

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ß

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von klosk (Gast)


Lesenswert?

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?

von David .. (david1)


Lesenswert?

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

von klosk (Gast)


Lesenswert?

doch sind vorhanden benutze ein AVR NETI/O board

von magnetus (Gast)


Lesenswert?

Mach doch mal ein Bild von deinem Aufbau.

von klosk (Gast)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

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