www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster Einlesen klappt irgendwie nicht


Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mal ein ganz "kleines" problem...

Folgende Konfiguration ist gegeben
Controller: Atmega8
Takt: 20Mhz Quarz
Spannung: 5V
LED An PD7 über 330Ohm nach ground
Taster1 an PB0(ICP1) mit pull Down wenn gedrückt ist es ein High
Taster2 an PB1(OC1A) mit pull Down wenn gedrückt ist es ein High

Mein Programm


#define Taster1        PINB & (1<<PINB0)
#define  Taster2        PINB & (1<<PINB1)


DDRB &= ~( 1 << DDB0 );  //Eingang
DDRB &= ~( 1 << DDB1 );  //Eingang

while(1)
    {
      if(Taster1)
      {
        LED_0_0;
        while(Taster1); //warten bis taste losgelassen
      }
      if(Taster2)
      {
        LED_0_1;
        while(Taster2);
      }

    }



Problem: nach dem Drücken Auf Taster2 flackert die LED
Bleibt man auf Taster2 gedrückt leuchtet sie, lässt man los, flackert 
sie wieder.

Drückt man Taster1 leuchtet sie ganz gurz nicht mehr, bleibt man 
gedrückt, leuchtet sie nicht, bis man loslässt. Danach flackert sie 
wieder unregelmässig!

Woran kann das liegen?

Ich habe die Pegel an den eingängen geprüft. Sie stimmen und sind nicht 
floatend!

Danke schonmal

Autor: Rene H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entprellung?

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene H. schrieb:
> Entprellung?

Nein das ist es bestimmt nicht, weil wenn ich nichts deücke, flackert es 
ja und prellen kann der taster nur wenn ich ihn drücke.

Hab was festgestellt.

Wenn ich den Quarz durch einen 4MHz ersetzte klappts!

Aber weshalb? mein aufbau ist auf einer Streifenraster Platine.

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mal die eingänge auf spikes untersucht.

Und siehe da, Es treten Spikes mit einer frequenz von mehreren Mhz mit 
200mV auf.

Autor: Guido Scheidat (flintstone)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Claudio,

abgesehen von den Spikes, die du misst. Wie groß ist der Pullup?
Mir gefällt das Programm nicht so ganz. Was verbirgt sich hinter LED_0_0 
und LED_0_1? Ich vermute, da werden die LEDs jeweils eingeschaltet. Und 
wo werden sie wieder ausgeschaltet?

Gruß
Guido

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guido Scheidat schrieb:
> Hallo Claudio,
>
> abgesehen von den Spikes, die du misst. Wie groß ist der Pullup?
> Mir gefällt das Programm nicht so ganz. Was verbirgt sich hinter LED_0_0
> und LED_0_1? Ich vermute, da werden die LEDs jeweils eingeschaltet. Und
> wo werden sie wieder ausgeschaltet?
>
> Gruß
> Guido

Ooops sorry hab gedacht ich hätte alle defines gepostet :)
#define  LED_0_1        PORTD |= (1<<PD7)  //Einschlaten
#define LED_0_0        PORTD &= ~(1<<PD7)  //Ausschalten

Ja sie werden ein und ausgeschaltet


Ich hab nochwas merkwürdiges...
Die Spikes scheinen irgendwie intern zu sein.
Wenn ich die beiden eingänge Hart an Ground hänge also direkt ohne 
widerstand flackerts immernoch.

Lediglich eine Logische 1 wird problemlos erkannt!

Pulldown ist 10kOhm

Aber auch mit 0Ohm flackerts sehr merkwürdig

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Claudio Hediger schrieb:

> Aber auch mit 0Ohm flackerts sehr merkwürdig

Wie sieht dein Aufbau aus?
Abblockkondensatoren an der Versorgungsspannung?


Ansonsten klingt das für mich nach

Wackelkontakt
schlechte Bauteile
schlechte Lötstelle

irgendsowas in der Richtung.

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Wie sieht dein Aufbau aus?
> Abblockkondensatoren an der Versorgungsspannung?

Ja hat es alles...

Es wird durch das STK500 Gespiesen und dieses hängt an einem 
Stabilisierten Netzteil

Karl heinz Buchegger schrieb:
> Ansonsten klingt das für mich nach
>
> Wackelkontakt
> schlechte Bauteile
> schlechte Lötstelle

Hmmm aber weshalb wird denn der Low zustand am pin nicht mal dann 
erkannt, wenn ich direkt mit ground dran gehe und diesen zustand auch 
mit dem Oszilloskop messen kann?

Ich denke übertaktung tut dem Atmega8 nicht gut

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Claudio Hediger schrieb:

> Ooops sorry hab gedacht ich hätte alle defines gepostet :)

Mach dir das Leben so einfach wie möglich.
Häng einfach dein C-File als Attachment im Posting an und alle sind 
glücklich.
Du, weil du keine Arbeit hast
Wir, weil wir alles sehen

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Claudio Hediger schrieb:

> Ich denke übertaktung tut dem Atmega8 nicht gut

Moment.
Was verschweigst du uns?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Claudio Hediger schrieb:
>
>> Ich denke übertaktung tut dem Atmega8 nicht gut
>
> Moment.
> Was verschweigst du uns?

Edit:
Stand schon im Ursprungsposting, unser Fehler

> Takt: 20Mhz Quarz

Werden allerdings die meisten überlesen haben. Wenn du solche Sachen 
machst und Bauteile ausserhalb ihrer Spez. betreibst, dann stell das in 
deinem Posting bitte so heraus, so dass man es auf keinen Fall übersehen 
kann.

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Mach dir das Leben so einfach wie möglich.
> Häng einfach dein C-File als Attachment im Posting an und alle sind
> glücklich.
> Du, weil du keine Arbeit hast
> Wir, weil wir alles sehen

ja da hast du recht...

Hab das problem gefunden...

Mit 20Mhz klappts nicht mehr egal wie mans macht... Auch wenn man auf 
Low prüft anstatt auf high...

Mit 12MHz läuft alles Problemlos...

Also ich weiss nun das ich den Atmega8 nicht übertakten darf :)

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Controller: Atmega8
> Takt: 20Mhz Quarz

Was geht denn hier ab? Das ist 25% (Atmega8) oder 150% (Atmega8L) 
übertaktet.

EDIT: q.e.d.

Autor: Hrm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheibenhonig.

Autor: Guido Scheidat (flintstone)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe noch ein Anmerkung zu deinem Programm:

Die Zeilen
        while(Taster1); //warten bis taste losgelassen
und
        while(Taster2);
kannst du weglassen. Sie bewirken einfach nichts.

Gruß
Guido

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.