Forum: Mikrocontroller und Digitale Elektronik Atmega8 AVR C++ Code Funktionen schreiben??


von Digit-22 N. (digit-22)


Angehängte Dateien:

Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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?

von Digit-22 N. (digit-22)


Lesenswert?

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

von surrli (Gast)


Lesenswert?

Was soll denn das Programm genau machen?

uint8_t zeit wird bei jedem Funktionsaufuf wieder auf 0 gesetzt.

von Digit-22 N. (digit-22)


Lesenswert?

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

von Digit-22 N. (digit-22)


Angehängte Dateien:

Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von RTFM (Gast)


Lesenswert?

Peter II schrieb:
> Und warum nimmt du *.txt zum Programmieren

Er nimmt *.txt zum posten ;-)

von Fred S. (kogitsune)


Lesenswert?

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
Noch kein Account? Hier anmelden.