Forum: Mikrocontroller und Digitale Elektronik LED mit Taster Ein / Aus schalten


von Jan H. (janiiix3)


Lesenswert?

Hallo Freunde,

abgesehen vom Entprellen... Möchte ich wenn ich meine Taste drücke 
(INT0, dort springt er auch rein) meine LED mit dem ersten Tastendruck 
EINschalten & mit dem zweiten AUSschalten... Ich bin gerade durch den 
Wind... Wieso klappt das nicht ?
1
#define alle_AN      PORTB |= (0b00001111)
2
#define alle_AUS    PORTB &= ~(0b00001111)
3
4
ISR (INT0_vect)
5
{
6
  //INT0_DISABLE;
7
  
8
  if (alle_AUS)
9
  {
10
    alle_AN;  
11
  }
12
    else  
13
  {
14
    alle_AUS;
15
  }
16
}

von Steffen (Gast)


Lesenswert?

Schau mal unter dem Stichwort "Prellen"

Tasterabfragen macht man nicht mit einem Interrupt, sondern in der main 
()

von Conny G. (conny_g)


Lesenswert?

Hallo Jan,

besser nicht nur Code-Schnippsel posten, sondern alles, ggf. als Anhang.

Denn jetzt kommt die Frage: Hast Du den Port zu Beginn auch als Ausgang 
deklariert mit
1
  DDRB |= 0b00001111;

Ansonsten klappt das nicht mit dem
1
  if (alle_AUS)

denn wenn zu Beginn alles aus ist, dann erhälst Du
1
  if (PORTB &= ~0b00001111)

d.h. wird hier in der if-Bedingung bereits eine Zuweisung vorgenommen 
und sie danach ausgewertet, also PORTB auf 0b00000000 gesetzt, danach 
stellt das IF fest, dass der Ergebnis wert "0" ist und nimmt den 
"else"-Zweig.
Der wiederum setzt alle Pins auf 0.

von Togglegast (Gast)


Lesenswert?

PORTB ^= 0b00001111;

von kopfkratzer (Gast)


Lesenswert?

kopfkratz
Rhetorische Fragen zum 1 April hmmm, sind denn die "NSA Witze" schon 
ausgegangen ?
Was schreibst Du denn als erstes in Deinem Post ?
Achja und wie ist denn so bool deklariert in C ?
Und welche Fehler wirft eigentlich Dein Compiler so aus ?
Da hinten ein dreiköpfiger Affe !!!!!111!!1ELF!!!!

von C-Frage (Gast)


Lesenswert?

Was ist der Unterschied zwischen
  if (x=y)
und
  if (x==y) ?

von Michael W. (Gast)


Lesenswert?

Antwort: 1 (ein) Tastenpreller... :-)

SCNR

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.