Sida 1 av 1
minnesallokering i sram på attiny2313
Postat: 3 december 2008, 23:20:42
av jyrgen
Hejsan.
Håller på med ett program som skulle behöva en tvådimensionell array som är ungefär 10*40 chars stor. Problemet är ju dock att 10*40=400bytes och sram minnet är 128 bytes i avr:en. Går det att göra detta utan externt minne? Skulle det annars gå att göra 10st 1*40 arrayer som man alternerar mellan i sram när man använder dom? arrayen behöver inte vara global utan behöver endast ligga i main.
Postat: 3 december 2008, 23:27:54
av sodjan
> Skulle det annars gå att göra 10st 1*40 arrayer som man
> alternerar mellan i sram när man använder dom?
Var ska de andra 9 ligga under tiden ?
Postat: 3 december 2008, 23:31:17
av johano
Behöver du "fulla" chars i arrayen, eller kan du "packa" fler element i samma char?
En 10*40 array av bit:ar skulle ju bara behöva ta upp 50bytes
/johan
Postat: 4 december 2008, 06:37:09
av Swech
Måste alla 10x40 behållas och vara unika?
Eller kan du som jag tror du menar jobba med 1x40 först,
därefter återanvända din 1x40 array till nästa rad?
Om så är fallet så är det naturligtvis möjligt.
Men beskriv vad det är du skall göra, det låter som att det
måste gå att lösa på ett smidigare sätt...
Swech
Postat: 4 december 2008, 09:33:33
av vfr
Precis! Det beror helt på vad du vill göra och vad det är som skall lagras i arrayen. Är det statiska data så ligger det nog bättre i prommet än i RAM. Är det inte fulla byte så kan det gå att bitpacka. Berätta lite mer!
Postat: 5 december 2008, 15:00:04
av jyrgen
ok var lite luddig föklaring kanske. Jag vill använda Q-learning och för det behöver man en Q-tabell. Det fungerar sedan så att man ger ett system + poäng om det systemet gör är bra och minus om det systemet gör är dåligt. Jag vill alltså ha 10*40 chars som går att ändra på jämt dvs varje char ska kunna anta alla värden den kan vid alla tidstilfällen.
Postat: 5 december 2008, 15:24:25
av sodjan
Jaha, men då så, hur har du tänkt fixa 400 variabler med 128 byte minne ??
Postat: 5 december 2008, 16:24:45
av Micke_s
jyrgen: det går att göra utan extern minne, byt AVR till en med mer ram.
Exempel Atmega88 har 1k ram
Postat: 5 december 2008, 16:37:32
av Andax
Vilka tecken ska varje position kunna anta? Det går ju alltid att packa ihop tecken för flera positioner i en byte.... är det bara + och - räcker ju 50 bytes t.ex.
Postat: 6 december 2008, 17:16:28
av dangraf
ett alternativ är att spara arrayerna i t.ex flash eller eeprom och därefter kompiera över arrayen till ram-minnet så fort du behöver arbeta och ändra på den.
Det kommer gå långsammare att accessa dessa minnen jämfört med ram minnet, men det kanske inte är några problem?
/daniel
Postat: 7 december 2008, 13:19:28
av jesse
Nu vet jag inget om Q-learning , men jag antar att varje char ska kunna anta ett värde mellan 0 och 100. Dvs 7 bitar. Men kanske behövs bit 8 som nån slags flagga under bearbetningen?
Postat: 7 december 2008, 16:25:37
av strombom
Ska din pryl massproduceras? Annars finns det ingen anledning till att snåla med storleken på mikrokontrollern, köp en med massor av minne...