Rufus Τ. Firefly schrieb:> Was soll da das &?
Das ist Unsinn, stört aber nicht die Funktion, da das Ergebnis verworfen
wird (keiner lvalue zugewiesen wird).
Vermutlich wird der Compiler dafür nichtmal Code erzeugen.
Eventuell läßt er sich auch zu ner Warnung hinreißen:
warning “statement has no effect”
Jakob schrieb:> Gibt´s elegantere Lösung um so ein Zähler mit C zu programmieren?
Man könnte die Bits direkt zuweisen, aber case 1 paßt dann nicht.
Sicher, daß case 1 stimmt?
Peter Dannegger schrieb:> Das ist UnsinnIch weiß das, ich vermute, daß der Threadersteller so hoffte,
mehrere Anweisungen irgendwie magisch zu einer zusammenzufassen, damit
sie in einer Zeile behandelt werden können.
Das dürfte irgendwie vom "concatenation operator" von Basic inspiriert
sein.
LM317 schrieb im Beitrag #4031330:
> Unvollständige Problembeschreibung, siehe Netiquette
Was soll hier unvollständig sein? Die anderen haben es auch bloß
verstanden!
Jakob schrieb:> LM317 schrieb:>> Unvollständige Problembeschreibung, siehe Netiquette> Was soll hier unvollständig sein?
Du schreibst nur, DASS du ein Problem hast. Aber nicht, WELCHES Problem
du hast.
> Die anderen haben es auch bloß verstanden!
Ja, das sind aber auch erklärte Cracks. Und es würde Anderen durchaus
helfen, wenn du das Fehlverhalten beschreibst. Denn dann könnte man
diesen Thread mitsamt der Antwort irgendwann wieder mal finden...
Jakob schrieb:> PS: bin noch Anfänger... unnötige Kommentare können gleich erspart> werden!
Du solltest nicht allzu jungforsch auftreten und mit Ausrufezeichen im
Befehlston um dich werfen. Das kommt manchmal nicht gut an und bewirkt
das Gegenteil.
Jakob schrieb:> Was soll hier unvollständig sein?
Ich habe den verlinkten Artikel gelesen (zutreffendes ankreuzen):
[ ] Ja
[ ] Nein
Deine Beschreibung:
>> aber irgendwas mache ich falsch.
Vollständig wäre:
Was will ich mit dem Code erreichen?
Was macht der µC das er nicht machen sollte?
Jakob schrieb:> Die anderen haben es auch bloß verstanden!
Wenn bei einem Switch Case das break fehlt wird man schnell misstrauisch
und wenn das der Fehler war hat man das Problem schon gelöst ohne zu
verstehen was du mit deinem Code überhaupt erreichen willst.
Walter schrieb:> ist definitiv nicht nur das break falsch
Klar sind die verUNDeten Zuweisungen falsch, sie haben aber ausser einer
Warnung eben auch keine negative Auswirkung. Der Optimierer schmeißt so
unnötiges Zeug einfach weg...
BTW: auch die Schleife, die so menschenfreundlich und
grundschulmäßig von 1 bis 8 läuft, deutet auf Verbesserungspotential
hin.
Lothar Miller schrieb:> BTW: auch die Schleife, die so menschenfreundlich und> grundschulmäßig von 1 bis 8 läuft, deutet auf Verbesserungspotential> hin.
Und das wäre?
LM317 schrieb im Beitrag #4031722:
> Lothar Miller schrieb:>> von 1 bis 8 läuft> Nicht bis 7?
a<8 ist für mich nicht 8 (<=8 wäre bis 8)
LM317 schrieb im Beitrag #4031722:
>> Und das wäre?> Dazu müsste man erstmal wissen was du erreichen willst.
Einfach 3 LED´s im 500ms-Takt binär blinken lassen.
Jakob schrieb:> Lothar Miller schrieb:>> BTW: auch die Schleife, die so menschenfreundlich und>> grundschulmäßig von 1 bis 8 läuft, deutet auf Verbesserungspotential>> hin.>> Und das wäre?
C Programmierer fangen bei 0 an zu zählen.
Das ebnet dann gleich auch den Weg zu einem einfacheren Programm,
welches die auszugebenden Werte aus einem Array holt.
Jakob schrieb:> Lothar Miller schrieb:>> BTW: auch die Schleife, die so menschenfreundlich und grundschulmäßig>> von 1 bis 8 läuft, deutet auf Verbesserungspotential hin.> Und das wäre?
Dass man eine solche Schleife von 0 bis 7 laufen lässt. Das machen die,
die Erfahrung mit Programierung und Binärzahlen haben...
Jakob schrieb:> Einfach 3 LED´s im 500ms-Takt binär blinken lassen.
Ich sehe im Programmcode aber 4 Pins, die angesteuert werden...
EDIT: Karl Heinz war schneller und ausführlicher... ;-)
P.S.
Für a reicht auch ein uint8_t.
P.P.S.
Wenn ich es richtig sehe, ist da noch ein Fehler in Deinem Switch:
Für 2, 5, 7 wird D mit 0x.8 besetzt. Richtig wäre aber für 2, 4, 6.
@Jakob
Bei dem Beispiel von Karl-Heinz si noch angmerkt, dass die letzten
Element im Array nicht explizit gesetzt sind.
Diese werden aber automatisch auf 0 gesetzt.²
Und ob es die letzten oder ersten Werte sind, merkt man bei einer
Endlosschleife auch nicht.
Und die ersten Werte von den Arrays sind vertauscht (weil du die in
deinem Programm auch so seltsam angeordnet hast)
² Dies gilt aber nur bei einer Initialisierung, bei globalen und static
Variablen
Dirk B. schrieb:> @Jakob>> Bei dem Beispiel von Karl-Heinz si noch angmerkt, dass die letzten> Element im Array nicht explizit gesetzt sind.
Kannst die Dinge ruhig beim Namen nennen :-)
Mein Array hätte eine Länge von 7 haben sollen. Keine Ahnung, wie mir da
jetzt die 8 reingerutscht sind.
Ist aber auch kein Beinbruch
Dirk B. schrieb:> Die 0 gehört doch dazu.
Schon. Aber der TO hatte im Eröffnungscode nur 7 unterscheidbare Fälle.
Das default ignorier mal. Der kommt nicht zum zug.