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

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.