Atmega 32 speicherplatz

Gast #2473675
Lesenswert?

Guten Abend/Nacht,


so habe gestern den ganzen Tag ein Programm geschrieben, welches mir die 
Timerwerte mit bestimmten Werten versieht.

So, nun passt mein Array aber nicht mehr auf den Controller^^

Aber was ich nicht verstehe:

    Device: atmega32
    Program:    7570 bytes (23.1% Full)
    (.text + .data + .bootloader)
    Data:      18090 bytes (883.3% Full)
    (.data + .bss + .noinit)

Das zeigt mir AvrStudio 5 an.
Aber wieseo ist das Programm nur zu 23% voll und .data zu 883%?
Kann ich mein Array irgendwie anders speichern, so dass es drauf 
passt???

lg otto
Gast #2473703
Lesenswert?

huh super, schnell!!

sieht gerade so aus:

uint32_t array[4434] = {
0x4ffff,  0x34c4a,  0x29896,  0x265b9,  0x24c4a,  0x23d08,  0x232dc, 
0x22b98,  0x22625,  0x221e8,
...
};

Was heißt denn veränderliche Daten? Hab ich schon gelesen konnte aber 
nix damit anfangen.
Und 32k höhrt sich doch nach viel an, kriegt ich das da denn nicht rein?
Gast #2473704
Lesenswert?

Nö, ins Ram passen nur 2kb :)
Ins Flash kommt das Programm und unter umständen Daten die SEHR SEHR 
selten verändert werden oder statisch sind. Z.b. Bilder oder 
Schriftarten für ein grafik Display. Die Daten im Flash können auch 
verändert werden....aber das Flash macht nur eine bestimme Anzahl von 
Schreibzyklen mit ( gelesen werden kann es unbegrenzt)
Gast #2473710
Lesenswert?

Achso und zum Zweck des ganzen. Es soll ein Stroboskop Licht werden. Hab 
da eine nette Formel im Atm32 Datenblatt gefunden um den ocr-Wert von 
einer bestimmten Frequenz zu bekommen. Dann hab ich mir ein Programm 
geschrieben, was diesen Werte ausrechnet und den besten Vorteiler dazu 
findet. Nun wollte ich das ganze aufspielen und dann mit nem Pointer das 
array "abfahren". Momentan wird der ocr Wert in Echtzeit berechnet, was 
aber ziemlich "ruckelig" ist.

@Eumel: Ja die müssen nicht geändert werden! Einfach einmal drauf. Wie 
geht das?
Gast #2473938
Lesenswert?

Hallo,

danke für Eure Hilfe!!

Habe es nun geschaft, mittels "#include <avr/pgmspace.h>" und "PROGMEM" 
alles in den Flash zu bekommen!!
sieht jetzt so aus:

    Program:   25306 bytes (77.2% Full)
    (.text + .data + .bootloader)
    Data:        354 bytes (17.3% Full)
    (.data + .bss + .noinit)

Nun noch mal zum uint32_t, ja es sind immer nur 2,5Bytes!
Aber ein uint16_t wäre ja zu klein.
Wie bekomm ich denn genau die 2,5Bytes?

Lg Otto
Gast #2473984
Lesenswert?

@fdssd Nun ja das sind alle Möglichkeiten mit 1Mhz Quarz und den 5 
Vorteilern von 0.1 bis 10kHz.
Ja ich will das Stroboskop Licht ja auch nehmen um z.B. 
Lüftergeschwindikeit zu messen oder so.
So richtig funktionieren wird das dann nur bis so 500Hz, weil ab da die 
"Frequenzschritte" zu groß werden.
Aber ich fand, dass es eine nette Idee ist :)
#2474070
Lesenswert?

Otto schrieb:
> @fdssd Nun ja das sind alle Möglichkeiten mit 1Mhz Quarz und den 5
> Vorteilern von 0.1 bis 10kHz.

Das kann man doch sicher auch zur Laufzeit ausrechnen, oder nicht?

Ob der µC nach dem Umschalten der Frequenz erst nach 1 oder 10ms 
reagiert (weil er mit rechnen beschäftigt ist), ist bei einem Stroboskop 
ja wohl zweitrangig.

Auf der anderen Seite: Für nicht benutztes Flash gibts kein Geld zurück.

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