Ich habe folgenden Code: include "main.h" int main (void) { init_mcu(); SETBIT (PORTA,LED1); while(1) {;} } aber irgendwie springt der Simulator nicht in die While Schleife? Warum? Gruß Knut
schreib mal eine
1 | asm volatile ('nop'); |
rein. PS: Die LED geht tretzdem nicht an. Du musst den Port noch auf Ausgang schalten.
1 | SETBIT (DDRA,LED1); |
Matthias Lipinsky schrieb: > PS: Die LED geht tretzdem nicht an. Du musst den Port noch auf Ausgang > schalten.SETBIT (DDRA,LED1); init_mcu(); Michael Potthoff schrieb: > wegoptimiert? Ich hoffe nicht?!
Wieso wird eigentlich immer behauptet, dass eine while(1)-Schleife wegoptimiert wird?? Auch wenn sie leer ist, stoppt die Programmausführung und macht nachfolgende Anweisungen unereichbar. Es wäre ein grober Bug, wenn der Optimierer eine solche Schleife anfasst. :-/
Tim T. schrieb:
> Warum hat deine int main kein Return?
Warum sollte Sie einen return haben, klär mich auf?
Hat man mir auch schonmal um die Ohren gehauen. Das ist C. Ein main() hat immer eine int-Rückgabe und muss damit auch ein return haben. Viele µC-Compiler ignorieren aber solche Fehler und weisen auch nicht durch eine Warnung drauf hin. Korrekt ist es trotzdem nicht.
Weil du mit int main(void) der main-Funktion den Rückgabetyp int gibst. Benutze einfach standartmäßig die Compileroption -Wall dann werden auch so Sachen angemeckert.
Ach ja. Die C-Compiler optimieren auch nicht ohne Sinn und Verstand alles weg. Eine Endlosschleife (auch wenn dort nichts passiert) bleibt als solche enthalten. Der Optimierer kennt solche Konstrukte. Jedoch optimiert er danach alles weg was auf das while(1) folgt - klar.
OK, is mir neu. Bi auch nicht sooo der Profi... Sagt ma, der Simulator in AVR Studio is nicht ganz so toll oder? Ich habe bis jetzt immer mit Programmers Notepad gearbeitet, nu wollte ich ma etwas eleganteres probieren. Aber ich glaub ich bleib beim Notepad. Mit dem Simulator komm ich nach 2h immer noch nicht ganz klar. Gruß Knut
Christian H. schrieb: > Wie? Kann der Programmers Notepad auch AVRs simulieren? Wäre mir neu. Kann es nicht, daher AVR Studio...
Du beschwerst Dich über den Simulator im AVR-Studio, weil Du nicht damit klarkommst. Aus diesem Grund bleibst Du beim Programmers Notepad. Wo ist da die Logik? Oder meinst Du statt "Simulator" das Wort "Editor"?
Ich wollte mal was anderes ausprobieren. Da mir der Simulator nicht gefällt, bleibe ich also erstmal beim PNotepad als Editor, da das Studio zu viel drum herum hat für einen Editor.
Christian H. schrieb: > Das ist C. > > Ein main() hat immer eine int-Rückgabe und muss damit auch ein return > > haben. falsch, es wurde in letzter zeit schon häufig diskutiert. Seit C99 braucht man das return bei der main nicht mit hinzuschreiben.
Außerdem ist C keine Religion. Wenn meine main nunmal niemals zurückkehrt, dann schreib ich auch kein return hin. Weil sie nunmal nicht returnt. Und auch keine höhere Macht mich dafür bestrafen wird, dass sie kein return hat. ;-)
Klaus schrieb: > Außerdem ist C keine Religion. Wenn meine main nunmal niemals > zurückkehrt, dann schreib ich auch kein return hin. Weil sie nunmal > nicht returnt. Und auch keine höhere Macht mich dafür bestrafen wird, > dass sie kein return hat. ;-) Nein keine höhere Macht, jedoch meterlange Threads aufgrund von Diskussionen über den Sinn und Unsinn korrektem (und damit portablem) C-Codes. Wenn das Return trotz "int main(void)" (das impliziert eine Rückgabe) nach C99 (also Standard) weggelassen werden darf, ist das ok. Ist mir aber auch egal.
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.