www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EMV Taster schützen


Autor: klosk (Gast)
Datum:

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

mfg

Autor: Marcus B. (raketenfred)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du pullup widerstände??

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

Autor: klosk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja hab ich gemacht mit 10k!

Autor: klosk (Gast)
Datum:
Angehängte Dateien:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: klosk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: klosk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
{
  DDRB  &= ~(1<<PB0);
  PORTB |=   1<<PB0;
  DDRB  |=   1<<PB2;
  DDRB  &= ~(1<<PB1);
  PORTB |=   1<<PB1;
  DDRB  |=   1<<PB3;
  for(;;){
    if( debounce( PINB, PB1 ) )
      PORTB ^= 1<<PB2;
    if( debounce( PINB, PB0 ) )
      PORTB ^= 1<<PB3;
  }
}

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?

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: klosk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch sind vorhanden benutze ein AVR NETI/O board

Autor: magnetus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach doch mal ein Bild von deinem Aufbau.

Autor: klosk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ^= ?
int main(void)
{
  DDRB  &= ~(1<<PB0);
  PORTB |=   1<<PB0;
  DDRB  |=   1<<PB2;
  DDRB  &= ~(1<<PB1);
  PORTB |=   1<<PB1;
  DDRB  |=   1<<PB3;
  for(;;){
    if( debounce( PINB, PB1 ) )
      PORTB ^= 1<<PB2;
    if( debounce( PINB, PB0 ) )
      PORTB ^= 1<<PB3;
  }
}


wie kann ich eine if anweisung mit dem Ergebnis erstellen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
     if( debounce( PINB, PB1 ) )
       PORTB ^= 1<<PB2;

Debounce liefert Wahr bei der Flanke von Losgelassen nach Gedrückt.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.