Forum: Compiler & IDEs Laufwerkmusik geht doch nicht


von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

MoinMoin

ich mal wieder. Nachdem es bis gestern nun lief, und ich 8 
unterschiedliche Töne gleichzeitig ausgeben konnte, geht es nun wieder 
nicht mehr.

Nun lädt er mir meine neuen Werte nicht mehr ins Tonregister ?!?!?!
1
int main(void)
2
{
3
    uint8_t i = 0;
4
    uint8_t n = 0;
5
    
6
    for (i = 0; i < 8; i++)
7
    {
8
        Kanal.Tonhoehe[i] = Melodie1[0].Tonhoehen[i];
9
    }
10
    
11
    init();    
12
    TEMPO = (45000/BPM);
13
    
14
    
15
    while(1)
16
    {
17
        //while (n < 20)                          //Prüfen ob Anzahl gespielte Töne kleiner als Liste
18
       // {
19
             if (SysTick_64tel == Melodie1[n].Wechsel_bei64tel)         //"Warten" bis es Zeit für den nächsten Tonwechsel ist
20
            {
21
                n++;                                                    //"Pseudozeiger" auf die nächste Toneinstellung setzen
22
            
23
                for (i = 0; i < 8; i++)
24
                {
25
                    Kanal.Tonhoehe[i] = Melodie1[n].Tonhoehen[i];       //Die neuen Tonhöhen übergeben
26
                }
27
            }
28
       // }
29
        
30
    if (n >= 20)                          //Falls alle Töne gespielt, wieder auf Anfang setzen
31
    {    
32
        n = 0;
33
      SysTick_64tel = 0;
34
    }
35
    }
36
}

obwohl die Werte für Systick_64tel steigen, und auch im 
Melodie1[n].Wechsel_bei64tel die richtigen Werte stehen, wird der 
Vergleich nie ausgeführt, bzw der Vergleich wird nie als gleich erkannt, 
und somit auch keine neuen Werte in Kanal.Tonhoehe geladen....

Im Anhang nochmal der gesamte Quelltext. Wie gesagt, bis gestern ging 
es, und eigentlich hab ich nichts geändert..... ?!?!?!?!

MfG Chaos

von dummy (Gast)


Lesenswert?

>Wie gesagt, bis gestern ging
>es, und eigentlich hab ich nichts geändert..

Dann nimm halt den Code von gestern.

von J. T. (chaoskind)


Lesenswert?

Wär der nicht durch den von heute überspeichert worden, hätte ich das 
sicher schon gemacht....

von lex (Gast)


Lesenswert?

Sei froh dass dir das passiert ist.
Du hast einen Fehler gemacht, der jeden Anfänger mal passiert.

Jetzt ist der Zeitpunkt, sich über eine Versionsverwaltung Gedanken zu 
machen (z.B. git). Danach willst du nie wieder ohne entwickeln.

von J. T. (chaoskind)


Lesenswert?

so so git.. noch nie von gehört, gleich mal Tante Google fragen.

und um es nochmal zu verdeutlichen

Systick_64tel und Melodie1[n].Wechsel_bei64tel stehen beide auf 32, aber 
dennoch wird der Teil in den geschweiften Klammern nicht ausgeführt.

if (Systick_64tel == Melodie[n].Wechsel_bei64tel)
{
   neue Töne laden
}

aber die neuen Töne werden nicht geladen.


Woran kann das liegen?

von dummy (Gast)


Lesenswert?

volatile uint16_t SysTick_64tel = 0;

von J. T. (chaoskind)


Lesenswert?

erstmal Feierabend, das mit Volatile werd ich direkt zuhause versuchen.

Ich war eigentlich auch der Meinung, in der ISR muss es volatile sein, 
aber gestern gings auch ohne..  Meld mich nachher nochmal.

von J. T. (chaoskind)


Lesenswert?

Jau danke dir, mit volatile gehts wieder...


Nun wäre natürlich noch intressant zu wissen, wieso es gestern ohne 
ging...
Aber das wird ohne den Quelltext vermutlich nicht mehr zu rekonstruieren 
sein

MfG Chaos

von Falk B. (falk)


Lesenswert?

@ j. t. (chaoskind)

>Jau danke dir, mit volatile gehts wieder...

>Nun wäre natürlich noch intressant zu wissen, wieso es gestern ohne
>ging...

Wahrscheinlich weil die Optimierung im COmpiler ausgeschaltet war.

von J. T. (chaoskind)


Lesenswert?

AAAHHHHHHH!!!! klar!

Ich hab zuhaus die Optimierungen aus, und am andren Rechner hab ich nur 
das c-file geladen (per mail geschickt, die USB-Sticks gehen entweder 
viel zu leicht verloren, oder sind viieeel zu schwer :D) und ein neues 
Projekt erstellt.

Dann ließ sich ja doch alles rekonstruieren!! =)

vielen Dank für deine Aufklärung, du hast meinen Glauben an die Logik 
und all den Krams wiederhergestellt.

MfG Chaos

von Bronco (Gast)


Lesenswert?

Kleiner Tip:
Wenn Du noch nicht mit einer Versionsverwaltung arbeitest, dann packe 
Dir jeden funktionsfähigen Stand (das ganze Projektverzeichnis) einfach 
komplett in ein ZIP und gib diesem einen eindeutigen Namen.
Ist zwar nicht mit einer Versionierung zu vergleichen, aber wenigstens 
hast Du dann Dein altes Zeug noch...

von J. T. (chaoskind)


Lesenswert?

Auf die Idee bin ich auch gekommen, und mach das nun vorerst so. Bis ich 
mal die Zeit finde, mich in diese Versionsverwaltungsgeschichte 
reinzufuchsen.

Vor Änderung einer laufenden Version wird die letzte lauffähige 
gesichert.

von Takao K. (takao_k) Benutzerseite


Lesenswert?

Wieso musik mit diskettenlaufwerk?

Die Laustaerke ist doch wohl nur gering und Bass geht nicht besonders 
gut.

Ausserdem braucht es viel Platz.

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.