itao nimmt zuviel speicher

OP #586508
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;

}
#586517
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!
Gast #586527
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.

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