Gast
#520285
ich hab nen problem mit folgendem code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
ich hoffe es liegt nur am späten abend im prinzip soll nur bei tastendruck die led angehn eigentlich simpel
|
Anzeige
|
schon wieder mal Taster
Gast
#520285
ich hab nen problem mit folgendem code:
ich hoffe es liegt nur am späten abend im prinzip soll nur bei tastendruck die led angehn eigentlich simpel
Gast
#520290
Bei deinem 2.Zugriff auf DDRD überschreibst du hart das,was du vorher
gesetzt hast.Zufällig bleibt alles ausser PD5 Eingang,allerdings ist das
nur ein glücklicher Zufall.
if ( PIND & (1<<PIND3) ) { PORTD |= (1 << PD5); }
Nimmt das den überhaupt der Compiler?Sollte zumindest eine Warnung
ergeben,wenn (1<<PIND) ausgewertet wird.
Gast
#520296
Wie hast du denn LED und Taster angeschlossen? Bei der Schaltung wie im Tutorial (Vcc => R => LED => Pin) ist PORTD &= ~(1<<PD5); // LED AN PORTD |= (1 << PD5); // LED AUS und bei einem Taster (Pin => Taster => GND und interne Pullups benutzt) wäre !(PIND & (1<<PD3)) // Verbindung geschlossen (PIND & (1<<PD3)) // Verbindung offen Also alle Aktionen genau umgekehrt wie bei dir.
Gast
#520299
moment, wo ist jetz der fehler, beim
DDRD = (1 << PD5); // PIN PD5 als Ausgang
oder bei
if ( PIND & (1<<PIND3) ) { PORTD |= (1 << PD5); }
ich versteh das doch richtig, dass der fehler bei DDRD = (1 << PD5);
ist!?!?
eine warnung bekomme ich nicht vom compiler
Gast
#520303
Verzeihung,ich hab die '3' übersehen: PIND3.So sollte es nun doch funktionieren. Trotzdem wäre schonmal interessant,wie du deine Taster&LED verschaltet hast.
Gast
#520306
also das mit der led stimmt schon mal, hab grad mal die sache mit dem taster raus gemacht und probiert
Gast
#520309
bei mir is das gleich aufm board mit drauf, die led hängt halt auf PD5 und der taster auf PD3 wollts eigentlich nur mal probieren, aber bei den kleinesten sachen kommen die größten probleme
Gast
#520314
Dann gibt´s doch bestimmt Beispielcode zu deinem Board,wo sowas schonmal gemacht wurde,oder? Wie Stefan schon angemerkt hat,ist es entscheidend ob deine Taster und LEDs Low- oder High-Aktiv angeschlossen sind.Das lässt sich am einfachsten am Schaltplan des Boards sehen.Da kann man erkennen,ob eine logische '1' am Portpin die LED leuchten lässt oder ob man den Pin auf '0' setzen muss,damit die LED leuchtet.
Gast
#520315
Du machst es dir unnötig kompliziert, wenn du so spärlich und ungenau antwortest. Nochmal: Wie hast du denn LED und Taster angeschlossen? Man kann eine LED auf zwei Arten anschliessen. 1/ Vcc => Vorwiderstand => LED => Pin (=> GND im µC) Hier leuchtet die LED bei LOW am Pin, d.h. DDRD |= (1 << PD5); // PIN PD5 als Ausgang PORTD &= ~(1 << PD5); // PIN PD5 LOW 2/ (Vcc im µC =>) Pin => LED => Vorwiderstand => GND Hier leuchtet die LED bei HIGH am Pin, d.h. DDRD |= (1 << PD5); // PIN PD5 als Ausgang PORTD |= (1 << PD5); // PIN PD5 HIGH Wenn du es selbst nicht herausfinden kannst und wenn es ein fertiges Board ist - gibt es ein Schaltbild zum Nachsehen oder hast du ein Foto, wo man was erkennen kann oder hat das Board wenigstens einen Namen?
Gast
#520318
hab mal eben den schaltplan angeschaut, da is es Pin => LED => Vorwiderstand => GND taster is vcc => taster => pin => widerstand//kondensator => masse also entprellen schon dabei Hi, ist das das Pollin -Board? Dann solltest Du den PULL-UP nicht aktivieren. DDRD = (1 << PD5); PORTD = 0x00; Gruss Andreas
Gast
#520425
danke Andreas, hab das pollin board 2.0 und und jetzt klappts wunderbar freu Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|