Projekt funktioniert nach Neuinstallation von WINAVR nicht mehr

Gast #2453793
Lesenswert?

Hallo zusammen,

nach längerer Pause möchte ich mal wieder ein wenig programmieren.

Ich habe noch ein altes ATMEGA128-Projekt, welches ich nun erweitern 
möchte. Mittlerweile habe ich allerdings einen neuen Rechner (WIN7). Den 
letzten Stand meines Projektes habe ich selbstverständlich noch 
(c-files, kompilierte hex-files usw.). WINAVR musste ich auf den neuen 
Rechner selbstverständlich neu installieren.

Jetzt hat sich folgendes Problem ergeben:
Spiele ich das alte hex-file in die Zielschaltung funktioniert es noch. 
Kompiliere ich das ungeänderte c-file neu läuft nichts mehr.

Mir ist bis jetzt nichts aufgefallen, woran das liegen könnte. Einziger 
Anhaltspunkt:

Winavr gibt beim kompilieren folgende Warnung aus:
c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: 
#warning "This header file is obsolete.  Use <avr/interrupt.h>."

Hatte schon jemand mal dieses Problem? Kann mir jemand helfen?

Bernd
Gast #2453799
Lesenswert?

Bernd schrieb:
> Winavr gibt beim kompilieren folgende Warnung aus:
> c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning:
> #warning "This header file is obsolete.  Use <avr/interrupt.h>."
>
> Hatte schon jemand mal dieses Problem? Kann mir jemand helfen?

Und? Was passiert wenn du in deinem Projekt statt der früheren signal.h 
die interrupt.h einbindest.
Zeig mal, wie z.Z. die Prozedurköpfe deiner ISR aussehen.
Gast #2453806
Lesenswert?

interrupt.h ist ohnehin schon eingebunden. Hier mal der Kopf des 
main-files:

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
/*****************************************************


Project : DMX-Adapter
Version :
Date    : 23.02.2006
Author  : Bernd
Company :
Comments:


Chip type           : ATmega128
Program type        : Application
Clock frequency     : 16,000000 MHz


*****************************************************/
//Variablendeklaration
.....
Gast #2453811
Lesenswert?

Bernd schrieb:
> interrupt.h ist ohnehin schon eingebunden.

Das ist dann doppelt gemoppelt, weil die neue signal.h das ohnehin schon 
macht.

Die Warnung kommt aus der signal.h

.\WinAVR\avr\include\avr\signal.h
1
#warning "This header file is obsolete.  Use <avr/interrupt.h>."
2
#include <avr/interrupt.h>
Gast #2453818
Lesenswert?

Kann z.B. an einer "aggressiveren" Optimierung im neueren WINAVR liegen.

Wenn du im Code z.B. Einfachst-Warteschleifen mit Variablenhochzählen 
hast statt der _delay_Xs() Funktionen, wäre das eine Problemstelle.

Auch in der Gegend gemeinsam genutzter Variablen in ISR und 
Usermodeprogramm waren frühere Versionen "gutmütiger" (Stichwort 
fehlendes volatile).

Auf die harte Tour kannst du so was rausfinden, wenn du die 
Versionsnummern des GCC und des WINAVR heraussuchst und in den 
Changelogs und Bugtrackern nach siehst, was sich bei der Entwicklung der 
Toolchain getan hat.

Wenn dein Code nicht top-secret ist, wäre das Zeigen des Sourcecodes und 
Fragen nach KOmmentaren möglicherweise einfacher (Stichwort 
"Hose-Runter-Approach").
Gast #2453848
Lesenswert?

Das wäre eine Möglichkeit - daran könnte es liegen.

Hab zum Initialisieren meines Displays damals ein paar Warteschleifen 
(einfache for-Schleife zum Hochzählen) eingefügt. Ich werd mir das mal 
anschauen.

Danke erstmal.
Gast #2453922
Lesenswert?

FUNKTIONIERT!!!

Nochmal vielen Dank für die schnelle Info.

Hab einfach die Warteschleifen durch die Delayfunktion ersetzt und das 
Headerfile eingefügt - und schon geht's wieder.

Was ich allerdings von WINAVR schwach finde, dass meine alten 
Warteschleifen ohne Fehlermeldung beim kompilieren anscheinend ignoriert 
werden...

Bernd
Gast #2453990
Lesenswert?

Bernd schrieb:
> Was ich allerdings von WINAVR schwach finde, dass meine alten
> Warteschleifen ohne Fehlermeldung beim kompilieren anscheinend ignoriert
> werden...

Wenn du in der Konfiguration die Compileroptimierung abschaltest (AVR 
Studio 4: Optimization -O0), wird auch deine alte Schleife 
funktionieren.
Gast #2456134
Lesenswert?

Die Funktion ist ja eigentlich nicht schlecht. Ich hab sie gerade mal 
ausprobiert. Es kommen aber bei mir nicht die Werte in us bzw. ms raus 
(die Zeiten sind kürzer)

Weiß jemand, wo mein am Compiler die Clockfrequenz festlegt?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren