Tiny13 auf STK500 Taster Probleme erkennen.

Gast #3857936
Lesenswert?

Hey,
ich versuche momentan ein bisschen Programmieren zu lernen
aber komme mit dem STK500 nicht ganz zurecht.

Ich wollte PINB2 auf Tastendruck testen.
Letztendlich habe ich es mit diesem Code geschafft:
1
/*
2
 * GccApplication1.c
3
 *
4
 * Created: 26.10.2014 21:29:53
5
 *  Author: Gigi
6
 */ 
7

8
#include <avr/io.h>
9
#ifndef F_CPU
10
#warning "F_CPU war noch nicht definiert, wird nun mit 900000 definiert"
11
#define F_CPU 900000UL     /* Quarz mit 3.6864 Mhz */
12
#endif
13

14
#include <avr/io.h>
15
#include <util/delay.h>
16

17
int main(void)
18
{
19
  
20
  DDRB |= (1<<DDB0) | (1<<DDB1); // Ausgang
21
  DDRB &= ~(1 << DDB2);
22
  PORTB |= (1<<PB2); //Pullup = Taster OFF
23
  PORTB |= (1<<PB1); // Pullup = LED aus (STK)
24
  
25
  
26
  
27
    while( 1 )                  // Endlosschleife
28
    {
29
      PORTB ^= ( 1 << PB0 );  // Toggle PB0 z.B. angeschlossene LED
30
      _delay_ms(1000);       // Eine Sekunde warten...
31
    
32
       if ((PINB & 0x4) == 0)
33
       {
34
         PORTB ^= (1<<PB1);
35
         _delay_ms(500);
36
    }     
37
  
38
  }
39
  return 0;
40
}

Mir gehts insbesondere umfolgende Zeile :
1
 if ((PINB & 0x4) == 0)

Geht das nicht eleganter, bzw gibt es noch andere Methoden ?
In ASM kann ich die Bits ja per Namen ansprechen z.B. PINB2,
allerdings scheint das in C nicht zu funktionieren.
Und jedes mal umrechnen in Hex wollte ich auch nicht.
1
 if ((PINB & PINB2) == 0) //funktioniert nicht
2
    if (PINB == 0b00000100) //geht auch nicht
3
    if (!(PINB2))           // auch nicht erwünschtes Ergebnis

Vielen Dank für eure Hilfe,
Gruß,
Gigi
Gast #3857942
Lesenswert?

Hab ich ja schon..
Aber ich sehe gerade den Fehler.
Mist..

Habe alles 10mal hin und her überflogen aber genau die Stelle hat mir 
gefehlt. DANKE!

Ich sollte nächstes mal vielleicht nciht ganz so spät versuchen was 
neues zu lernen :D

Lieben Gruß,
Gigi

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