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

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.

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.