monsterarray im PROGMEM

Gast #498441
Lesenswert?

hallo forum,

folgendes problem: ich möchte einen unsigned char array mit 40000er 
tiefe in den programmspeicher eines ATmega128 legen. syntax in der 
angehängten txt-datei. der beim compilieren kommt jedoch folgende 
fehlermeldung:

>> D:\...\./sinus_40000.txt:3: error: size of variable 'sinus_40000' is
>> too large
>> ../sieben_segment_2.c: In function '__vector_15':

(so sieht die fehlermeldung aus wenn das array in einer includierten 
txt-datei liegt - liegt es direkt im main-c-file ändert sich 
sinnvollerweise nichts.)

mit 20000er tiefe funktioniert es einwandfrei. wo liegt mein fehler, 
oder geht es nicht solch ein großes zusammenhängendes array zu 
deklarieren?


grüße
pumpkin
Angehängte Dateien:
Gast #498454
Lesenswert?

Hallo

Nicht dass ich deine Frage direkt beantworten kann, aber trotzdem ein 
Hinweis: Du scheinst dir eine Lookup-Table für einen Sinus gebastelt zu 
haben, mit einer sehr genauen Auflösung (jedenfalls auf der x-Achse). 
Nur bringt dir dies nicht viel, da die Funktionswerte nur auf 1/256 
genau berechnet werden. Da würde es bei einer so "vernünftigen" Funktion 
wie dem Sinus auch genügen, wenn du die Lookup-Table ebenfalls nur aus 
256 Werten bildest.

Es reicht, diese Werte für den Sinus zwischen 0 und 90 Grad zu 
berechnen, alles weitere, inklusive dem Cosinus (und mit etwas mehr 
aufwand auch dem Tangens) kriegt man mit einfachen Rechenoperationen 
daraus.

Gruss

Michael
Gast #498461
Lesenswert?

ich weiss ich weiss, rein rechnerisch beträgt bei 8 bit auflösung eine 
anzahl von 805 (genauer 804,24...) samples. aber das ist nicht der 
punkt. speicher ist im überfluss vorhanden, aber schnell soll die sache 
sein; deswegen ist keine zeit für eine längliche rechnung um den kleinen 
table 'auseinanderzurechnen'.

aber trotzdem danke für deine antwort.  : )

pumpkin

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