AtTiny13A - umgekehrtes Verhalten beim Taster

OP #3212274
Lesenswert?

Hallo zusammen!

Habe endlich Zeit gefunden um einen AtTiny13A zu programmieren.
Mit LED blinken lassen hat es ja ganz gut geklappt, aber beim Taster 
scheiter ich.

Trotz Verwendung der internen Pull-Ups, wird PINB als High gelesen, wenn 
der Taster offen ist (et vice versa). Es ist definitv kein Öffner und 
gegen Masse geschaltet.

Hier der Code:
1
#define F_CPU 1000000UL // 1MHz ist Default-Takt
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6

7
void on()
8
{
9
  PORTB |= (1 << PB3);
10
}
11

12
void off()
13
{
14
  PORTB &= ~(1 << PB3);
15
}
16

17
#define TASTER PB2
18
uint8_t tasterOn;
19

20
int main(void)
21
{
22
  // Init
23
  DDRB = 0;
24
    DDRB |= (1 << PB3); // LED Ausgang
25
  PORTB |= (1 << TASTER); // Taster Pullup
26
  
27
  // Start (Testblinken)
28
  for(uint8_t i = 0; i < 3; i++)
29
  {
30
    on();
31
    _delay_ms(500);
32
    off();
33
    _delay_ms(500);    
34
  }
35

36
    while(1)
37
  {
38
    // Taster gedrück?
39
    if ( PINB & ( 1 << TASTER ) )
40
    {
41
      tasterOn = 1;
42
      
43
      // entprellen
44
      for(uint8_t i = 0; i<100; i++)
45
      {
46
        _delay_ms(3);
47
        
48
        if ((PINB & ( 1 << TASTER )) == 0)
49
        {
50
          tasterOn = 0;
51
          break;
52
        }
53
      }
54
      
55
      // Taster über längere Zeit gedrückt?
56
      if(tasterOn == 1)
57
      {
58
        on();
59
        _delay_ms(1000);
60
      }
61
      
62
      off();
63
    }
64
    
65
    _delay_ms(10);
66
    }
67
}


Wenn ich ein Proggi gefunden habe, werde ich den Schaltplan posten. 
Erstmal in Textform:
- Reset über 10k Widerstand an VCC
- LED an PB3 gegen VCC (funzt auch)
- Taster (Schließer) an PB2 ohne Widerstand gegen Masse
- Spannungsversorgung aus 9V Batterie, geregelt auf 5V über LP2950 mit 
2x Kondensatoren ohne Elko
- Breadboard, ISP 6x

Verwende den mkII und AVR Studio 6.1

PS: Geht natürlich etwas kürzer, aber ich dachte entprellen würde nicht 
schaden.
Im Debugger funzt es einwandfrei.
Angehängte Dateien:
Gast #3212398
Lesenswert?

Nikolai W. schrieb:

> Trotz Verwendung der internen Pull-Ups, wird PINB als High gelesen, wenn
> der Taster offen ist

Das ist doch genau, was zu erwarten ist.

Wenn du willst, dass bei offenem Taster Low gelesen wird, musst du einen 
externen Pulldown gegen GND verwenden und den Taster gegen Vcc schalten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren