Hallo Frunde habe ein Problem und zwar ich versuche mein Programm zu compilieren, leider kommt immer die folgende Fehlermeldung: c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: hope.elf section .text will not fit in region text c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: region text overflowed by 156 bytes gibt es eine Möglichkeit irgendwie den Speicherbereich zu erhöhen, oder muss ich irgendwelche Variablen umdeklarieren??? wäre nett wenn jemand mir helfen kann MfG
tja, dein flash ist voll. entweder du nimmst einen Mega168 oder du schaust wo du was einsparen kannst. Rico schrieb: > muss ich irgendwelche Variablen umdeklarieren??? nö, hier geht es um den Programmcode oder Konstanten, Strings, intialisierte (!=0) Variablen Poste doch mal deinen Code, vielleicht kann man dir Tips geben
Hallo vlad Mein Code findst du im Anhang, wäre echt nett, du wirst bestimmt was finden bei meinen Anfängerkentnisse:-) Danke im Voraus
Hab das gerade mal compiliert: Build started 11.5.2011 at 16:47:12 In file included from ../test88.c:5: c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>." ../test88.c: In function 'Schwellwertvergleich': ../test88.c:514: warning: large integer implicitly truncated to unsigned type ../test88.c:505: warning: 'RkaFehler' may be used uninitialized in this function ../test88.c:505: warning: 'RkiFehler' may be used uninitialized in this function avr-gcc -mmcu=atmega88 -Wl,-Map=test88.map test88.o -o test88.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature test88.elf test88.hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex test88.elf test88.eep || exit 0 avr-objdump -h -S test88.elf > test88.lss AVR Memory Usage ---------------- Device: atmega88 Program: 7902 bytes (96.5% Full) (.text + .data + .bootloader) Data: 382 bytes (37.3% Full) (.data + .bss + .noinit) Build succeeded with 4 Warnings... mfg.
Naja, und den Rest kann/muss man auch ein wenig aufräumen. Z.B dein adc_capture. Du musst nicht immer die erste Messung wegwerfen. Das muss man nur einmal nach dem Einschalten der Referenzspannung. Siehe http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_interne_ADC_im_AVR Leerzeilen sind wichtig zur übersichtlichen Formatierung, man kann es aber auch überteiben. Das mit Nachladen des Times vergiss mal schnell wieder, das war "damals" OK als es keine bessere Möglichkeit gab. Heute nimmt man den CTC Modus. Da muss man auch keinen 16 Bit Timer verbraten. Und auch wenn dein Interrupt nur alle 10s einmal klinget, so macht man dort möglichst keine umfangreichen Dinge. Siehe Interrupt. Hier im beispiel ist es egal, später vielleicht aber nicht mehr. Ansonst versuch mal ein paar Tips umzusetzen: [[Strukturierte Programmierung auf Mikrocontrollern]] MFG Falk P S Aber alles in allem haben wir hier schon deutlich schlechtere Anfängerprogramme gesehen. ;-)
Hallo Thomas ichhab das kleine Teil vom Programm, was das Problemverursacht entfernet.Das komplete Programm ist im Anhang, wenn du nun versuchst zu compilieren wird dann nicht gehen. Ich habe mit Festkommaarithmetik davor versucht hat aber leider nicht viel gebracht Danke
@ Rico (Gast) >ichhab das kleine Teil vom Programm, was das Problemverursacht >entfernet. Sehr sinnvoll!! Augenroll >Das komplete Programm ist im Anhang, wenn du nun versuchst zu >compilieren wird dann nicht gehen. U.a. weil die Funktion RiSchwellwert fehlt. MFG Falk
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.