Forum: Mikrocontroller und Digitale Elektronik Atmel Tiny - Taster Problem


von Sepp A. (seppi)


Lesenswert?

hallo zusammen,

hab n kleines problem, ich möchte einen taster auf einem board einlesen 
(funk avr von pollin) und damit eine led leuchten lassen.

bestückt ist es mit einem atmel tiny 2313, und ich programmiere es aus 
dem avr studio (win avr)

das programm sieht in etwa so aus:

#define TAST  PORTB1

#define LED2   PIND5
#define LED1   PIND6

#define LED2NR     5
#define LED1NR     6


int main (void)
{
   DDRD  = 0xFF;        // D als ausg.


   PORTD = (0<<PD6) | (0<<PD5) | (1<<PD4) | (1<<PD3) | (1<<PD2) | 
(1<<PD1) | (1<<PD0);

   DDRB  = 0x00;       // alle Pins von Port B als Eingang
   PORTB = 0xFF;       // alle bits des ports auf log 0

   while(1)
   {
     PORTD |= (true  << LED1NR);
     PORTD |= (TAST  << LED2NR);
   }

   return 0;
}

jetzt müsste doch led nummer eins dauerhaft leuchten und led nummer 2 
bei gedrücktem taster oder?

von Walter (Gast)


Lesenswert?

Sepp Ackermann schrieb:
> PORTD |= (true  << LED1NR);
>      PORTD |= (TAST  << LED2NR);

probier mal
PORTD |= (1  << LED1NR);
if ( PINB& hier gewünschten pin nehmen )
      PORTD |= (1  << LED2NR);
else
      PORTD &= ~(1  << LED2NR);

oder besser arbeite erst mal das Tutorial durch

von Micha S. (e-tec)


Lesenswert?

Walter schrieb:
> oder besser arbeite erst mal das Tutorial durch

so wie ich das sehe verucht er ja grad das tutorium durchzuarbeiten,
und:

JEDER HAT MAL KLEIN ANGEFANGEN!

von Peter D. (peda)


Lesenswert?

Sepp Ackermann schrieb:
> #define TAST  PORTB1

Sicher, daß man Tasten mit dem Ausgangsregister einliest?


>      PORTD |= (TAST  << LED2NR);

Kannst Du mal kommentieren, was diese Zeile machen soll.


Peter

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.