Hallo mikrocontroller Community, hab ihr ein einfaches programm um ein paar LEDs zu steuern mit ein ablauf so wie ein LED würfel 5x5x5.... Also Ich habe PD0 als Eingang für ein Taster. Hab schon die entprellung usw. kein problem. Ich habe jetzt eine variable "RS" der gesetzt und zurück gesetzt wird wenn der Programm fertig ist. also ein taster als ein und aus schalter. Ich weiss es ist ein einfaches programm, bin ja nur am lernen und am rum probieren. also bei mir ist das problem das des programm ohne taster druck einfach los geht. ob wohl ich ein if befehl um den ganzen programm hab. > was mach ich falsch? -Oxycotton
if((RS = 0xFF)) ist kein Vergleich, sondern eine Zuweisung. Du brauchst "==" für einen Vergleich. Du solltest DDRD auch noch auf 0 setzen, bevor du die einzelnen Bits setzt. Das hier: RS = ~RS; RS=0; ist auch ziemlich unsinnig. Deine "Entprellung" wird auch nicht so wirklich funktionieren, das flag RS wird immer hin- und her toggeln, solange du den Taster drückst.
Ralf G. schrieb: > böser Fehler! ;-) ..., den der Compiler problemlos findet. Man müsste nur die Warnungen lesen.
Joe F. schrieb: > if((RS = 0xFF)) > > ist kein Vergleich, sondern eine Zuweisung. > Du brauchst "==" für einen Vergleich. > > Du solltest DDRD auch noch auf 0 setzen, bevor du die einzelnen Bits > setzt. > > Das hier: > RS = ~RS; > RS=0; > ist auch ziemlich unsinnig. > > Deine "Entprellung" wird auch nicht so wirklich funktionieren, das flag > RS wird immer hin- und her toggeln, solange du den Taster drückst. danke für die schnelle antwort, ja hab vergessen diese fehler raus zu nehmen, war am rum probieren, bin halt noch fresh mit C. Danke, ich habe die änderungen gemacht aber jetzt geht überhaupt nichts, hab auch die RS = 0; im programm selber rausgenommen und es geht nichts.
Tom schrieb: > Ralf G. schrieb: >> böser Fehler! ;-) > > ..., den der Compiler problemlos findet. Man müsste nur die Warnungen > lesen. da war keine warnung...
Oxy schrieb: > da war keine warnung... Ich habe es extra ausprobiert und würde mit gcc folgende Warnung bekommen (-Wall): ..\sizeTest.c:45:5: warning: suggest parentheses around assignment used as truth value [-Wparentheses] if (RC = 0xff) ^
xxx schrieb: > suggest parentheses around assignment used > as truth value hat er ja gemacht ;-) if((RS = 0xFF))
ja ich weiss, ich habe das nur ausprobiert weil oxy geschrieben hat, es werden keine Warnungen angezeigt.
Ich würde zum Testen deine Entprellung auskommentieren. Wenn dein Programm weiterhin nicht so funktioniert wie du möchtest, muss man weiter sehen. Achja, stell mal die "richtige" Version des Codes hier ein, nicht die "was ich eben noch ausprobiert habe"-Variante, sondern die von der du meinst, dass sie funktionieren sollte
:
Bearbeitet durch User
Deshalb gewöhnt man sich an die Konstante links zu schreiben:
1 | if((0xFF = RS)) //Fehler |
2 | {
|
3 | ...
|
4 | }
|
Dann bekommt man definitiv einen Fehler.
Frank schrieb: > Deshalb gewöhnt man sich an die Konstante links zu schreiben: >
1 | > if((0xFF = RS)) //Fehler |
2 | > { |
3 | > ... |
4 | > } |
5 | >
|
> Dann bekommt man definitiv einen Fehler.
Es würde auch schon reichen, sich zu überlegen was mir der Compiler mit
einer Warnung sagen will. Wenn der Compiler (wörtlich) vorschlägt, den
Ausdruck zu klammern, dann kann das eine Lösung sein - aber nur unter
der Voraussetzung dass man wirklich auch eine Zuweisung meinte. Im
anderen (häufigeren) Fall, wenn man sich fragt "was zum Teufel faselt
der da von einer Zuweisung", sieht man dann auch das Problem und das der
Vorschlag mit der zusätzlichen Klammerung nicht die Lösung ist.
Mit wachsender Erfahrung wird dieses "Problem" immer kleiner, bis es
sich praktisch im Nichts auflöst. Diesen Fehler macht man am Anfang
seiner Karriere ein paar mal, aber das wird schnell immer seltener. Und
wenn, dann sieht man das vergessene = spätestens im Debugger sofotrt.
Die Umkehrung der Operanden hingegen hat das dauerhafte Problem, das
Menschen meistens nicht so denken. Wir denken nun mal nicht "Wenn es
wahr ist, dass 5 die Anzahl der Eier ist", sondern wir benennen den
variablen Teil meistens zuerst. "Wenn es wahr ist, dass die Anzahl der
Eier gleich 5 ist".
Obowhl ich natürlich auch zugebe, dass man sich an alles gewöhnen kann
und dann auch die Umkehrung der Reihenfolge gegenüber der natürlichen
Denkweise irgendwann völlig normal ist.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.