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; }
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?
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!
> //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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.