Hi, ich habe zum Testen des USART's von meinem Mega16 ein kleines Programmchen geschrieben was auch funktioniert. Meine Frage ist ob WinAVR, ich kann mir das eigentlich nicht vorstellen oder der Mega16, den float Datentyp nicht unterstützt? for(;;) { PORTA^=0xFF; //alles auf 1 //value = 2.123 * i; value = 10 * i; i++; delay_ms(2000); sprintf(buffer," Der Wert ist %i ",value); //sprintf(buffer,"## Der Wert ist %2.2f",value); len = strlen(buffer); uart_send(buffer, len); //sende chararray mit x zeichen } Der Programmauschnitt funktioniert mit den int - Werten aber nicht den auskommentierten float Varablen. Ich bekomme keine Fehlermeldung beim Compilieren und die Ausgabe funktioniert soweit aber an der Stelle wo die Zahl ausgegeben werden sollte steht nur Misst. Mache ich etwas falsch? Danke!!!
Floating point printf libs einbinden, vgl. Kommentare im WinAVR Beispiel-makefile (PRINTF_LIB...). (die Foren-Suche haette geholfen).
Hi, das ist meine Fehlermeldung des Compilers nach dem ich das Makefile geändert habe: avr-gcc -mmcu=atmega16 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=test.o -std=gnu99 test.o --output test.elf RINTF_LIB = -lm avr-gcc: RINTF_LIB: No such file or directory So habe ich das eingebunden, ich weiss sonst nicht wie ich das machen soll: # Floating point printf version (requires -lm below) #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $PRINTF_LIB = $(PRINTF_LIB_FLOAT) $(SCANF_LIB) Danke!!! $(MATH_LIB)
Warum benutzt du nicht das Programm mfile, das bei WinAVR dabei ist? Du scheinst nämlich das Makefile editieren zu wollen, ohne die make-Anleitung jemals gesehen zu haben (http://www.gnu.org/software/make/manual/html_chapter/make_toc.html). Falls du nicht vorhast, sie zu wenigstens zu überfliegen, bist du mit einem Programm wie mfile besser bedient. > LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $PRINTF_LIB = $(PRINTF_LIB_FLOAT) Das ist sinnlos. Zwei Zuweisungen in einer Zeile, das funktioniert sicher nicht. Lass die LDFLAGS, wie sie sind, und veränder nur die Variable $PRINTF_LIB. Dann werden die Linker-Flags automatisch richtig befüllt. btw: > PORTA^=0xFF; //alles auf 1 Diese Zeile setzt bei PORTA nicht alles auf 1 (falls PORTA vorher nicht 0 war). Richtig wäre eine simple Zuweisung: PORTA = 0xFF; // alles auf 1 Dein Code entspricht: PORTA = PORTA ^ 0xFF; ^ ist in C der Operator für bitweises XOR.
Hi, irgendwie kriege ich das nicht hin mit dem Makefile. Bei dem Programm Mfile finde ich keine Option in der ich etwas mit Floating - Point einbenden kann. Wenn mir jemand helfen könnte währe das wirklich sehr nett. Danke!
Irgendwo gibt es dort eine Zeile mit "MATH_LIB = " diese muss auf "MATH_LIB = -lm" gesetzt werden.
Hi, mit diesem Makefile, das ich mit Mfile, erzeugt habe funktioniert meine Ausgabe jetzt. Vielen Dank!
Hi, ich habe zum Testen des USART's von meinem Mega16 ein kleines Programmchen geschrieben was auch funktioniert. Meine Frage ist ob WinAVR, ich kann mir das eigentlich nicht vorstellen oder der Mega16, den float Datentyp nicht unterstützt? for(;;) { PORTA^=0xFF; //alles auf 1 //value = 2.123 * i; value = 10 * i; i++; delay_ms(2000); sprintf(buffer," Der Wert ist %i ",value); //sprintf(buffer,"## Der Wert ist %2.2f",value); len = strlen(buffer); uart_send(buffer, len); //sende chararray mit x zeichen } Der Programmauschnitt funktioniert mit den int - Werten aber nicht den auskommentierten float Varablen. Ich bekomme keine Fehlermeldung beim Compilieren und die Ausgabe funktioniert soweit aber an der Stelle wo die Zahl ausgegeben werden sollte steht nur Misst. Mache ich etwas falsch? Danke!!! Re: ATmega16, WinAVR und float Beitrag melden Autor: mthomas Datum: 04.11.2004 20:05 ------------------------------------------------------------------------ -------- Floating point printf libs einbinden, vgl. Kommentare im WinAVR Beispiel-makefile (PRINTF_LIB...). (die Foren-Suche haette geholfen). Re: ATmega16, WinAVR und float Beitrag melden Autor: Thomas M - Athomit-online.de Datum: 04.11.2004 20:46 ------------------------------------------------------------------------ -------- Hi, das ist meine Fehlermeldung des Compilers nach dem ich das Makefile geändert habe: avr-gcc -mmcu=atmega16 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=test.o -std=gnu99 test.o --output test.elf RINTF_LIB = -lm avr-gcc: RINTF_LIB: No such file or directory So habe ich das eingebunden, ich weiss sonst nicht wie ich das machen soll: # Floating point printf version (requires -lm below) #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $PRINTF_LIB = $(PRINTF_LIB_FLOAT) $(SCANF_LIB) Danke!!! $(MATH_LIB) Re: ATmega16, WinAVR und float Beitrag melden Autor: Chris Datum: 04.11.2004 21:27 ------------------------------------------------------------------------ -------- Warum benutzt du nicht das Programm mfile, das bei WinAVR dabei ist? Du scheinst nämlich das Makefile editieren zu wollen, ohne die make-Anleitung jemals gesehen zu haben (http://www.gnu.org/software/make/manual/html_chapter/make_toc.html). Falls du nicht vorhast, sie zu wenigstens zu überfliegen, bist du mit einem Programm wie mfile besser bedient. > LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $PRINTF_LIB = $(PRINTF_LIB_FLOAT) Das ist sinnlos. Zwei Zuweisungen in einer Zeile, das funktioniert sicher nicht. Lass die LDFLAGS, wie sie sind, und veränder nur die Variable $PRINTF_LIB. Dann werden die Linker-Flags automatisch richtig befüllt. btw: > PORTA^=0xFF; //alles auf 1 Diese Zeile setzt bei PORTA nicht alles auf 1 (falls PORTA vorher nicht 0 war). Richtig wäre eine simple Zuweisung: PORTA = 0xFF; // alles auf 1 Dein Code entspricht: PORTA = PORTA ^ 0xFF; ^ ist in C der Operator für bitweises XOR. Re: ATmega16, WinAVR und float Beitrag melden Autor: Thomas M - Athomit-online.de Datum: 05.11.2004 22:07 Dateianhang: Makefile (9.7kB, 23 Downloads) ------------------------------------------------------------------------ -------- Hi, irgendwie kriege ich das nicht hin mit dem Makefile. Bei dem Programm Mfile finde ich keine Option in der ich etwas mit Floating - Point einbenden kann. Wenn mir jemand helfen könnte währe das wirklich sehr nett. Danke! Re: ATmega16, WinAVR und float Beitrag melden Autor: Malte - m.marwedelonlinehome.de Datum: 06.11.2004 12:02
# Floating point printf version (requires MATH_LIB = -lm below) PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt PRINTF_LIB = $(PRINTF_LIB_FLOAT)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.