Taster an eigener Schaltung wirkungslos

OP #944336
Hallo!

Bei meiner selbstgebauten Schaltung klappt wieder etwas nicht.
Mit dem gleichem Chip auf dem Entwicklungsboard geht alles.

Ich habe einen Taster an PD5 angeschlossen:
VCC -> Taster -> PD5
1
//#include <TINY2313.h>                            // ATtiny2313 MCU
2
#define F_CPU 7372800UL
3

4

5
#include <avr/io.h>
6
#include <util/delay.h>                               // Delay functions
7
#include <inttypes.h>
8

9
inline uint8_t debounce(volatile uint8_t *port, uint8_t pin)
10
{
11
    if ( ! (*port & (1 << pin)) )
12
    {
13
        /* Pin wurde auf Masse gezogen, 100ms warten   */
14
        _delay_ms(30);  // max. 262.1 ms / F_CPU in MHz
15
        _delay_ms(30);
16
        if ( *port & (1 << pin) )
17
        {
18
            /* Anwender Zeit zum Loslassen des Tasters geben */
19
           _delay_ms(30);
20
           _delay_ms(30);
21
           return 1;
22
        }
23
    }
24
        return 0;
25
}
26

27
int main(void)
28
{
29

30
   DDRD=0x40;           /* PIN PD5 auf Eingang (Taster)=0,PD6 auf Ausgang=1            */
31
   PORTD=0x10;          /* Pullup-Widerstand aktivieren, fÃŒr PD5            */
32

33
while(1)
34
{
35

36
if (debounce(&PIND, PD5))             /* Falls Taster an PIN PB6 gedrueckt..    */
37
   {
38
   PORTD ^= (1<<PD6);  /* ..LED an Port PD6 an-bzw. ausschalten */
39
   }
40
}
41
return 0;
42
}
So. Nun ist das Problem, dass sich die LED im Halb-Sekundentakt
an/ausschaltet.
Für mich sieht es so aus, als ob "irgendeine" Restspannung die Routine
veranlasst immer die LED zu schalten.
Wenn ich nun aber mein Multimeter zwischen GND und PD5 klemme, dann habe
ich diese Probleme nicht mehr.
Der Taster funktioniert dann so wie er soll (evtl. ein bisschen langsam
in der Reaktion, aber er geht wenigstens).
Habe ich den Taster nun gar nicht angeschlossen, also an PD5 nichts
angebracht, so schaltet die LED auch munter vor sich hin.

Nun gehe ich davon aus, dass ich irgendein Bauteil vor dem Taster
vergessen habe.

Könnt ihr mir (mal wieder) auf die Sprünge helfen?

Vielen Dank

Tobi
Angehängte Dateien:
#944342
Logo, wenn Du den Taster an VCC anschließt und einen Pull-Up 
aktivierst, dann ändert sich bei Tastendruck der Zustand des Pins auch 
nicht. Entweder einen externen Pull-Down-Widerstand einbauen (und den 
Pull-Up deaktivieren) oder (und besser, weil ohne Zusatzhardware) den 
Taster gegen GND anschließen. In der Software musst Du dann natürlich 
berücksichtigen, dass ein gedrückter Taster eine 0 am Pin verursacht, 
was aber auf den meisten kommerziellen Experimentierboards genau so 
gemacht wird.
Gast #944349
Hi

Das ist aber nicht im Ernst dein Schaltplan?

Nur zur Information: Einen Schalter legt man am besten zwischen Portpin 
und Masse. Das Portpin verbindet man über einen Widerstand (z.B. 10k) 
mit VCC. Schalter offen Portpin=H, Schalter gedrückt Portpin=L.
In deinem Fall ist das Portpin bei offenen Schalter unbeschaltet. 
Dadurch fängt er alle möglichen Ladungen ein und arbeitet 
unkontrolliert. Mit dem Multimeter wird er Hochohmig auf Masse gelegt 
und bekommt dadurch ein stabiles Potential.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.