Probleme mit float Berechnung in Funktion (WinAVR)

OP #406631
Lesenswert?
• ▲
▼
Hallo Leute,
ich habe ein ganz übles Problem. Ich will in einer kleinen Funktion
eine float Berechnung durchführen, aber beim compilieren bekomm ich nur
Process Exit Code: 2 im WinAVR. Die Funktion sieht so aus:

...

volatile unsigned int int_count;  //Zähler für INT
...
float Speed()
{
  float result = 0.0;

  int_count = 0;
  NutSleep(1000);

  result = int_count  WHEELcirculation  3.6;


  return result;
}

void main(void)
{

...

}
Nun motzt mein Compiler. Wenn ich anstatt irq_count eine Zahl wie zB.
33.442 einsetze nicht mehr.
Ich programmiere unter WinAVR mit dem Programmers Notepad 2. Als
Betriebssystem des uC hab ich ethernut. Mein uC ist ein Atmega128.
Der Witz ist, das ich das gleiche mit dem ICCAVR Compiler funktioniert
hat. Da ich aber jetzt mit dem WinAVR weiter machen will klappt das
nicht. Ich bin schon am verzweifeln....

Vielen Dank für eure Mühe.
Thomas
OP #406633
Lesenswert?
• ▲
▼
Danke für die rasche Antwort.
Mit Casten hab ichs auch schon versucht. Leider hat deine Möglichkeit
auch die gleichen Fehler gebracht.

Nach Make all bekomm ich:
> "make.exe" all
avr-gcc -c -mmcu=atmega128 -Os -fno-delete-null-pointer-checks -Wall
-Wstrict-prototypes -Wa,-ahlms=main.lst -DETHERNUT1 -D__HARVARD_ARCH__
-IC:/ethernut-4.1.5/nutbld/include  -IC:/ethernut-4.1.5/nut/include
main.c -o main.o
main.c: In function `Speed':
main.c:781: warning: use of cast expressions as lvalues is deprecated
avr-gcc main.o fat.o mmc.o -mmcu=atmega128
-Wl,--defsym=main=0,-Map=WebServer.map,--cref
-LC:/ethernut-4.1.5/nutbld/lib C:/ethernut-4.1.5/nutbld/lib/nutinit.o
-lnutpro -lnutos -lnutarch -lnutdev -lnutnet -lnutfs -lnutcrt -o
WebServer.elf
C:/Programme/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\li 
bc.a(log.o):
In function `log':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
`__addsf3' defined in .text section in
C:/Programme/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_addsub_sf.o)
make.exe: *** [WebServer.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:03

Ich weiß nicht, ob das weiterhilft?

Dennoch Danke.
Gruß
Thomas
Gast #406634
Lesenswert?
• ▲
▼
So hab folgenden Programmcode (siehe Anhang)im AVRStudio compilieren
lassen.

Build started 25.9.2006 at 16:00:36
avr-gcc.exe  -mmcu=atmega128 -Wall -gdwarf-2   -DF_CPU=16000000UL -O0
-fsigned-char -MD -MP -MT Test.o -MF dep/Test.o.d  -c  ../Test.c
avr-gcc.exe -mmcu=atmega128  Test.o     -o Test.elf
avr-objcopy -O ihex -R .eeprom  Test.elf Test.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load"
--change-section-lma .eeprom=0 -O ihex Test.elf Test.eep

AVR Memory Usage
----------------
Device: atmega128

Program:    2802 bytes (2.1% Full)
(.text + .data + .bootloader)

Data:         10 bytes (0.2% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...
Angehängte Dateien:
OP #406638
Lesenswert?
• ▲
▼
vielen Dank,
ich hab gerade ein neues Projekt in WinAVR gemacht.

#define WHEEL 3.6


volatile unsigned int int_count;


float speed(void)
{

return int_count  WHEEL  3.6;
}
void main(void)
{

int_count = 23;


speed();

}

das hat mit der Makefile des anderen auch wunderbar geklappt. Ich
versteh nur nicht warum das in dem Fall geht und beim anderen nicht.
Aber ich schau mir mal das Makefile an.
Vielen Dank nochmals
Gruß
Tom
OP #406639
Lesenswert?
• ▲
▼
@JojoS
WHEELcirculation is nur ein #define mit 1.25 also float. Die Float lib
ist in der makefile drin.
Ich kann ja einfache Berechnungen wie 3.4 + 4.5 * 3.7 oder so
durchführen.
Die Fehlermeldung zum 1. Bsp ist in meinem 2. Beitrag oben:

> "make.exe" all
avr-gcc -c -mmcu=atmega128 -Os -fno-delete-null-pointer-checks -Wall
-Wstrict-prototypes -Wa,-ahlms=main.lst -DETHERNUT1 -D__HARVARD_ARCH__
-IC:/ethernut-4.1.5/nutbld/include  -IC:/ethernut-4.1.5/nut/include
main.c -o main.o
main.c: In function `Speed':
main.c:781: warning: use of cast expressions as lvalues is deprecated
avr-gcc main.o fat.o mmc.o -mmcu=atmega128
-Wl,--defsym=main=0,-Map=WebServer.map,--cref
-LC:/ethernut-4.1.5/nutbld/lib C:/ethernut-4.1.5/nutbld/lib/nutinit.o
-lnutpro -lnutos -lnutarch -lnutdev -lnutnet -lnutfs -lnutcrt -o
WebServer.elf
C:/Programme/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\li 
bc.a(log.o):
In function `log':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
`__addsf3' defined in .text section in
C:/Programme/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_addsub_sf.o)
make.exe: *** [WebServer.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:03

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.