Compiler optimizations disabled

OP #3370773
Hallo, vorab schonmal ich bin kompletter Neueinsteiger im Gebiet der 
Microcontroller Programmierung, also verzeiht bitte wenn das Problem was 
ich habe ganz simpel zu lösen ist..

Habe bereits in diversen Foren nach gelesen, jedoch bringen die dort 
erklärten Hilfestellungen keine Verbesserung mit sich..

Habe mir aus diversen Programmbeispielen mal ein paar Textzeilen 
herauskopiert um 4 LED´s an PA0, PA1, PD2 und PD3 dauerhaft von meinem 
Attiny2313 einschalten zu lassen.

Nun wollte ich das beim ersten Anlaufen des Programms PA0 und PA1 
angehen, 500ms gewartet wird und dannach PD2 und PD3 angehen, um zu 
testen wie das mit der Zeitverzögerung funktioniert..

hier mein Qq
1
//----------------------------------------------------------------------
2
#define F_CPU 100000UL //
3
#include <avr/io.h> //
4
#include <util/delay.h>
5

6
//----------------------------------------------------------------------
7
main ()
8
{
9
  // Pin 1 von Port A (PA1) als Ausgang schalten
10
  DDRA = (1 << PA0) | (1 << PA1);
11
  DDRD = (1 << PD2) | (1 << PD3);
12
  // Endlosschleife
13
  while (1) 
14
  {
15

16
    {
17
      PORTA |= (1 << PA0)| (1 << PA1); 
18
      _delay_ms(250);        // Warte 250ms           
19
      PORTD |= (1 << PD2)| (1 << PD3);
20
    }
21
  }
22
  return  (0);
23
}
24
//----------------------------------------------------------------------

Habe dazu zusätzlich die util\delay.h eingebunden, jedoch kommt jedes 
mal folgende Fehlermeldung:

Hinweis: Es wird die im Quelltext angegebene Sprache verwendet: C
Hinweis: Es wird die im Quelltext angegebene Einstellung des Prozessors 
verwendet: ATtiny2313
Hinweis: Um den vollen Funktionsumfang von C/C++ nutzen zu können, 
verwenden Sie bitte die Dateiendung '.cc' oder '.cpp'
compilieren ...  In file included  from LED.c:17:

c:/program files 
(x86)/myavrworkpadplus/winavr/lib/gcc/../../avr/include/util/delay.h:90: 
3:  warning: #warning "Compiler optimizations disabled; functions from 
won't work as designed"
linken ... vorbereiten ...
brennen ...
benutze: mySmartUSB Light an com3 mit ATtiny2313
schreibe Flash: 3420 Bytes
schreibe EEPROM: 1 Bytes
»baud=25600
Timeout beim Schreiben des Flash.


Die Compiler optimierung steht im Makefile auf s, also laut diversen 
anderen Foren sollte die Optimierung eingeschaltet sein..

Gruß Martin
Gast #3370795
Was ist denn nun das eigentliche Problem? Dass für delay.c die 
Optimierungen deaktiviert sind, ist vermutlich so gewollt, da sonst das 
delay vom compiler wegoptimiert wird. Ich denke das bezieht sich nur auf 
delay.c.

Das das brennen nicht funktioniert, hat eine andere Ursache. Dein 
Programm compiliert und linkt, ist also syntaktisch korrekt.
OP #3370805
Das Problem ist, wenn ich die Programmzeilen #include <util/delay.h> und 
delay_500ms rausnehme, wird das Programm einwandfrei gebrannt und die 
LED´s leuchten...
Dann kann nach meiner Ansicht nach ja nur entweder der Qq mit dem delay 
nicht stimmen, oder die Optimierung einen Fehler haben welche auch die 
Fehlermeldung bringt..
Ist es dann ein Programmfehler das man dies garnicht so schreiben kann?
Gast #3370808
>Aber auch "weiter unten" noch steht "CFLAGS += -O$(OPT)"
>Aber das Makefile haben wir bisher ja nicht gesehen.

Das ist natürlich richtig. Die Vermutung liegt nahe das das
makefile nicht vollständig ist.
OP #3370821
Am Makefile habe ich so nichts geändert, habe mal die Optionen 
herauskopiert, glaube die meintest du mit CFLAGS

#---------------- Compiler Options C ----------------
#  -g*:          generate debugging information
#  -O*:          optimization level
#  -f...:        tuning, see GCC manual and avr-libc documentation
#  -Wall...:     warning level
#  -Wa,...:      tell GCC to pass this to the assembler.
#    -adhlns...: create assembler listing
CFLAGS = -g$(DEBUG)
CFLAGS += $(CDEFS)
CFLAGS += -O$(OPT)
CFLAGS += -funsigned-char
CFLAGS += -funsigned-bitfields
CFLAGS += -fpack-struct
CFLAGS += -fshort-enums
CFLAGS += -Wall
CFLAGS += -Wstrict-prototypes
#CFLAGS += -mshort-calls
#CFLAGS += -fno-unit-at-a-time
#CFLAGS += -Wundef
#CFLAGS += -Wunreachable-code
#CFLAGS += -Wsign-compare
CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
CFLAGS += $(CSTANDARD)


Ich versuche mal ein anderes Makefile zu bekommen und dieses 
auszutauschen
Gast #3370830
>Am Makefile habe ich so nichts geändert, habe mal die Optionen
>herauskopiert, glaube die meintest du mit CFLAGS

Mein Gott zeig das ganze Teil;)

Wird das makefile überhaupt benutzt?
Gast #3370837
SeriousSam schrieb:
> Dass für delay.c die
> Optimierungen deaktiviert sind, ist vermutlich so gewollt, da sonst das
> delay vom compiler wegoptimiert wird.

Weist du's oder rätst du?

Was ist an der Warnung "Compiler optimizations disabled; functions from 
<util/delay.h> won't work as designed" mißverständlich?

Ohne Optimierung macht delay.c Mist - so einfach ist das.
OP #3370867
Habe jetzt den Makefile aus dem Sample Ordner kopiert.. Im mfile Ordner 
gibt es noch einen Makefile_template ohne Endung welcher komplett 
identisch mit dem wbo ist.

Oder bin ich am falschen Makefile?

Dies waren die beiden einzigen, bei denen man die Optimierung über 
dieses s ändern konnte..
Gast #3370972
>Oder bin ich am falschen Makefile?

Kann es sein das du SySi und Workpad benutzt?
Dann solltest du evtl. besser nicht im makefile rumhacken.
Ich denke mal dann du musst die Optimierung in deiner IDE einstellen.
Gast #3371102
Ja mit Workpad arbeite ich, habe gerade nochmal komplett meine 
Sicherheitskopie die ich gemacht habe neu reinkopiert, also alles auf 0 
zurück gesetzt..

Compiler Optimierung steht auf s und der Fehler ist immernoch der 
gleiche, also am geänderten Makefile liegts wohl nicht...

Wie kann ich die Optimierung denn über IDE ändern?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.