Forum: Mikrocontroller und Digitale Elektronik Tiny13 auf STK500 Taster Probleme erkennen.


von Gigi (Gast)


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

von HildeK (Gast)


Lesenswert?


von Gigi (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.