Hallo Leute, ich benutze zum programmieren von ATMega16 AVR-Studio. Ich kommuniziere mit ATMEGA16 und Terminal mittels Funktionen. D.h. ich gebe Text am Terminal aus. Beim drücken im AVR-Studio auf "BUILD AND RUN" kommt folgende Meldung: ******************************************** AVR Memory Usage ---------------- Device: atmega16 Program: 2894 bytes (17.7% Full) (.text + .data + .bootloader) Data: 972 bytes (94.9% Full) (.data + .bss + .noinit) ********************************************* Mein Problem ist dass sobald die (oben angegebene) vorletzte Zeile fast voll ist gibt mein Terminal-Programm zunächst das richtige aus dann aber nur Schrott. Sobald ich ein paar übergebene Strings lösche dann zeigt das Terminal-Programm was richtiges an. Kann mir bitte jemand erklären was die Zeile bedeuten. MFG
Im RAM. Also in genau dem gleichen Speicher in dem auch deine Variablen sind. Und von diesem Speicher sagt der Compiler, dass alleine deine Variablen diesen Speicher bereits zu 95% dicht machen.
kann ich mein RAM reduzieren? Ich benutze hauptsächlich viele char Anweisungen. Diese sind folgend aufgebaut: int uart_sende_zeichen(unsigned char zeichen) { while (!(UCSRA & (1<<UDRE)));// warten bis Senden moeglich ist UDR = zeichen; // sende Zeichen return 0; } // puts ist unabhaengig vom Controllertyp void sende_string (char *text) { while (*text) { uart_sende_zeichen(*text); text++; } } int main (void) { usartinit(); sende_string("\n\n\rWaehlen Sie bitte einen Modus aus:\n\n\r"); return (0); } MFG
Du könntest die Strings in den Programmspeicher auslagern. Stichwort: PROGMEM (siehe Wiki, oder GCC Manual). Momentan werden die Strings bei Controllerstart in den Ram geladen, nur damit sie einmalig ausgegeben werden. Also bei dieser Prozessorarchitektur immense Speicherverschwendung.
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.