- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Sound-Funktion

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.02.2006
    Ort
    München
    Alter
    36
    Beiträge
    161
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von SprinterSB
    Nö, so nicht sound_on ist einmal global, einmal lokal. Es bezieht sich also auf unterschiedliche Objekte...
    sound_on ist aber doch nur einmal, nämlich global, definiert?!

    Zitat Zitat von SprinterSB
    Das globale sound_on ist zudem volatile (flüchtig). Die Deklaration des lokalen sound_on fliegt in die Tonne!
    Wie gesagt, sound_on ist nur einmal, global, deklariert...

    Ich dachte globale Variablen kann ich überall (also egal aus welcher Funktion) ändern und die Variable nimmt dann in allen Funktionen diesen Wert an?

    Wenn ich jetzt Müll geredet habe, bin ich in meinen Grundfesten der C-Prorammierung erschüttert.

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Zitat Zitat von ManniMammut
    sound_on ist aber doch nur einmal, nämlich global, definiert?!
    Ooops, stimmt, da hab ich was falsch gelesen.

    Zitat Zitat von ManniMammut
    Ich dachte globale Variablen kann ich überall (also egal aus welcher Funktion) ändern und die Variable nimmt dann in allen Funktionen diesen Wert an?

    Wenn ich jetzt Müll geredet habe, bin ich in meinen Grundfesten der C-Prorammierung erschüttert.
    Jein. Wenn du zum Beispiel hinschreibst (a global)

    a = 0;
    if (0 == a)
    {
    }

    Dann wird ein (optimierender) Compiler das if immer ausführen, wenn er weiß, daß er a auf 0 gesetzt hat. Damit ist für ihn die Bedingung immer erfüllt! Wenn zB zwischen der Zuweisung und dem if eine IRQ auftritt, in der a verändert wird, hat der Compiler keine Möglichkeit, das zu wissen.
    Daher definiert man a als volatile.
    int volatile a;
    und sagt damit, daß a flüchtig ist, sich also ohne Zutun des Compilers (er weiß ja nicht wann eine IRQ zuschlagen könnte oder ob die Hardware evtl a ändert) ändern kann.

    Das volatile hat die Konsequenz, daß jedes mal, wenn auf a zugegriffen wird, dieses auch wirklich geschrieben oder gelesen wird. Damit wird die 0 in a gespeichert und danach a wieder gelesen.

    Und alles wird gut...
    Disclaimer: none. Sue me.

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.02.2006
    Ort
    München
    Alter
    36
    Beiträge
    161
    Ah!
    Okay, danke, wieder was dazugelernt. Werde ich dann mal daheim ausprobieren (sitze im Moment in der Schule...).

    //€DIT: Sobald ich sound_on als volatile int deklariere, geht's

    So, dann muss ich mal schauen, wie ich weiterkomme.

  4. #14
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Naja, so lernt man zwar einprägsam, aber durch Lesen von Tutorials geht's manchmal schnaller
    Disclaimer: none. Sue me.

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test