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
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
Martin W. schrieb:> Die Compiler optimierung steht im Makefile auf s, also laut diversen> anderen Foren sollte die Optimierung eingeschaltet sein..
also hast du im Makefile "-Os"?
Auszug aus dem makefile
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc
FAQ.)
OPT = s
Muss dort -Os drin stehen?
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.
holger schrieb:>>OPT = s>>>>Muss dort -Os drin stehen?>> Nein, das ist richtig so. Das wird dann weiter unten zu -Os> zusammengebaut.
Aber auch "weiter unten" noch steht "CFLAGS += -O$(OPT)"
Aber das Makefile haben wir bisher ja nicht gesehen.
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?
>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.
>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?
habe das Makefile angehängt.. Also als Sprache steht oben im Header C
drin, habe auch einfach mal ausprobiert die Endung in CC bzw in CPP zu
ändern, der Fehler bleibt aber trotzdem...
Wo sehe ich ob das Makefile benutzt wird?
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.
Martin W. schrieb:> habe das Makefile angehängt.. Also als Sprache steht oben im Header C> drin, habe auch einfach mal ausprobiert die Endung in CC bzw in CPP zu> ändern, der Fehler bleibt aber trotzdem...> Wo sehe ich ob das Makefile benutzt wird?
Nunja, dass das nicht funzt ist klar:
Sorry das war mein Fehler, das s wird durch ein $ ersetzt, war nur ein
Makefile mit dem ich mal was ausprobiert habe ob der Fehler so weg geht,
also es steht im richtigen Makefile CFLAGS += -O$(OPT) drin..
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..
>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.
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?