Forum: Compiler & IDEs itao nimmt zuviel speicher


von Alexander S. (alex130)


Lesenswert?

Sobald ich die Funktion itao einfüge kann ich das Programm nicht mehr in 
den Eeprom des ATmega16 einfügen benutze ein STK500 Code. Was mache ich 
falsch die lcd-routines.h ist die aus dem tutorial woran liegt das das 
kann doch nicht zuviel code sein?????:

#include <avr/io.h>
#include "lcd-routines.h"
//#include <util/delay.h>
#include <avr/interrupt.h>
//#include <util/delay.h> //
#define F_CPU 4000000
//unbedingt Kompiler Optimierung einstellen & F_CPU frequenz angeben



int main(void)
{
  DDRD = 0xFF;   // Port D komplett als Ausgang einstellen
    lcd_init();

   lcd_clear();
   lcd_data('T');
   lcd_data('e');
   lcd_data('s');
   lcd_data('t');
   lcd_data('1');
   lcd_data('2');
   lcd_data('3');
   lcd_data('4');
   lcd_data('5');
   lcd_data('6');
   lcd_data('7');
   lcd_data('8');

while (1)
{
int porta;
char zeichen[4];
porta=PINA;
itoa(porta,zeichen,10);
}
return 0;

}

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Hast du die fette floating-point Mathe-Library im makefile eingebunden 
oder die schlanke integer Mathe-Library? Benutzt du die 
Optimierungsoptionen des GCC?

Kurz: Wie sieht dein makefile aus?

von Johannes M. (johnny-m)


Lesenswert?

Alexander Schreiber wrote:
> Sobald ich die Funktion itao einfüge kann ich das Programm nicht mehr in
> den Eeprom des ATmega16 einfügen
Das Programm hat im EEPROM auch überhaupt nichts zu suchen! Das gehört 
in den Flash...

> benutze ein STK500 Code.
Ein was?

> Was mache ich
> falsch die lcd-routines.h ist die aus dem tutorial woran liegt das das
> kann doch nicht zuviel code sein?????:
Nein, eigentlich kann es das nicht sein. Aber am itoa sollte es 
eigentlich nicht liegen können. Das braucht selbst ohne Optimierung 
nicht so wahnsinnig viel Speicher. Immerhin hat der Mega16 16 KB 
Flash...

Aber wenn Du natürlich versuchst, das Programm ins EEPROM zu quetschen, 
dann KANN es nicht funktionieren...

EDIT:
Was soll eigentlich der Sch..., hier mehrere Threads zum selben Thema 
aufzumachen? Einer reicht völlig!

von yalu (Gast)


Lesenswert?

> //unbedingt Kompiler Optimierung einstellen & F_CPU frequenz angeben

Hast du den Hinweis in dem Kommentar befolgt (Optimierung aktivieren)?

Andere Anmerkung, die mit deinem aktuellen Problem nichts zu tun hat,
aber wahrscheinlich mit deinem nächsten:
1
char zeichen[4];
2
porta=PINA;
3
itoa(porta,zeichen,10);

Das Array zeichen ist zu klein. Es muss mindestens 3 Ziffern, ein
Vorzeichen und die Stringendenull aufnehmen können. Das sind 5
Elemente.

von Alexander S. (alex130)


Lesenswert?

Sorry tut mir leid mit den mehreren Thread und muss auch zugeben das 
damit eine Denkfehler beseitigt wurde mit dem Flash und Eeprom danke 
bitte nicht sauer sein.

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
Noch kein Account? Hier anmelden.