-         

Ergebnis 1 bis 2 von 2

Thema: _delay_ms wird wegoptimiert [solved]

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    18.06.2005
    Ort
    Hattenhofen
    Alter
    30
    Beiträge
    55

    _delay_ms wird wegoptimiert [solved]

    Anzeige

    Hallo allerseits,
    ich bin recht neu auf dem Gebiet der Hardware-Programmierung und bin auf ein kleines Problem gestoßen:
    Ich muss einen Motor für eine gewisse Zeit (ca. 10 sec) laufen lassen. (Seilwinde!) Ich dache nun, dass ich in einer Haeder-Datei eine Zahl (WAIT_RU_DUWN) festlege, die mir in 100ms angibt, wie lange der Motor laufen soll.
    Ich hab jetzt also eine kleine Routine geschrieben, die nachdem der Motor aktiviert wurde WAIT_RU_DOWN mal das Makro _delay_ms(100); aufruft. Anschließend wird abgeschalten.
    Soweit OK. Jage ich die ganze Sache jetzt durch den avr-gcc und schaue mir das Ergebnis mir avr-objdump -S software.o an, so finde ich zwar irgendwo die Routine mit der Zeitverzögerung, jedoch ist sie leer! Ich verwende den Aufruf:
    avr-gcc -g -Os -mmcu=at90s2313 -c software.c
    avr-gcc -g -Os -mmcu=at90s2313 software.o -o software.out
    Wenn ich statt -Os -O0 verwende, bleibt die Routine bestehen. Bei jerder anderen Optimierungsstufe außer 0 optimiert er mir so meine Zeitverzögerung weg.
    Was kann ich dagegen machen?

    Vielen Dank im Voraus
    Christian

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    18.06.2005
    Ort
    Hattenhofen
    Alter
    30
    Beiträge
    55
    Dumm muss man sein...

    Ich habe versehentlich einen anderen Fehler gemacht: Ich habe die _delay_ms Aufrufe immer in eine for-Schleife verpackt. Hier habe ich versehentlich geschrieben

    for(i=0;i==xxy;i++){...}

    statt

    for (i=0;i<xxy;i++){...}.

    Sorry, das hat sich damit erledigt.
    Christian

Berechtigungen

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