Hej Leute ich versuche gerade einen Atmega8 so zu programmieren das ich 2 LED Blinkprogramme mit Funktionen habe. Ich habe 2 Taster 5 LEDs und möchte wenn ich den einen Taster drücke das Funktion1 und bei Taste 2 Funktion2 läuft. Jede Funktion hatt dann ein anderes Blinkprogramm. Leider klappt es noch nicht so richtig. Ist es bei AVR denn anders als bei ganz normalen C Programmierung? Muss irgendwas noch mit eingebaut werden...? Man kann das bestimmt auch anders lösen doch mir geht es hautsächlich um Funktionen. Im Anhang ist mein Code. LG Shabi
Shabi N. schrieb: > Ist es bei AVR denn anders als > bei ganz normalen C Programmierung? nein. aber der Programm würde auf auf einem PC nicht sinnvolles machen > float funk2() warum float? > uint8_t zeit =0; > switch (zeit) welchen werte wird wohl zeit jetzt haben? bzw immer haben?
Hallo float wollte ich wieder raus nehmen hatte mit Int angefangen und einfach mal float ausprobiert... HHmm Zeit wenn so gefragt wird warscheinlich 0?? Lg Shabi
Was soll denn das Programm genau machen? uint8_t zeit wird bei jedem Funktionsaufuf wieder auf 0 gesetzt.
surrli schrieb: > Was soll denn das Programm genau machen? > Ich habe 2 Taster 5 LEDs und möchte wenn ich den einen Taster drücke das Funktion1 und bei Taste 2 Funktion2 läuft. Jede Funktion hatt dann ein anderes Blinkprogramm. Wie ist es denn generell bei Funktionen? Gibt es was was ich noch nicht beachtet habe? Shabi
So hab mein Programm mal komplett umgeschrieben. So funktioniert es bis auf eine Sache. Wenn ich z.B. Taste1 drücke wird funk1 ausgeführt und das Programm läuft so wie es soll. Und das gleiche gilt auch für Taste2... Jetzt ist das Problem wenn ein Programm läuft kann ich das andere Program nicht starten. Nur wenn ich den Controller neu starte kann ich wieder das andere Prog. starten. Also ich will mitten drin die Programme wechseln können. Was sagt ihr? LG Shabi
Shabi N. schrieb: > Was sagt ihr? naja nimmer lieber der 1.Version und schreibe für die Zeit variable ein static. warum haben deine funktione jetzt ein int es rückgabe, du gibst doch überhaupt nichts zurück - das sollte doch einige Warnungen geben. Und warum nimmt du *.txt zum Programmieren, C bekommt die endung .c oder bei C++ halt .cpp.
Shabi N. schrieb: > Wenn ich z.B. Taste1 drücke wird funk1 ausgeführt und das Programm läuft > so wie es soll. Und das gleiche gilt auch für Taste2... Wie soll denn das "while" jemals verlassen werden können? Du hast geschrieben:
1 | while (2) {....} |
und
1 | while(3){....} |
Code bitte nicht als .txt, sondern als *.c anhängen!
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.