PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C-Pendants zu DATA, RESTORE, READ (Bascom, Flash-Daten)



Jaecko
15.06.2008, 19:08
Moin.

Mal wieder Umsteigerprobleme von Bascom nach C:
Ich suche die für C (AVR Studio) die Gegenstücke, mit denen ich in Bascom Daten im Flash ablegen und bei Bedarf wieder abholen kann.

Der bisherige Code den ich hab, scheint nicht zu funktionieren (bzw. tuts auch nicht):


flash unsigned char variable[][2] = {
0x01,32,
0x02,24,
0x03,18,
0x04,99
}


In Bascom würde ein Konstrukt etwa so aussehen:


...
DO
...
Restore Datalabel1
Read var1
Read var2
...
LOOP

DATA Datalabel1:
DATA 1, 32
DATA 2, 24
DATA 3, 18
DATA 4, 99


Wenn sich das ganze auch mit Words statt Bytes verarbeiten lässt, wärs noch besser.
Aber dazu würde ja einfach "flash unsigned ui16_t variable[][2] = ..."
gehen... wenns denn gehen würde.

mfG

PicNick
15.06.2008, 19:45
Also, sowas die "DATA" und einfach der Reihe nach auslesen hat C meines Wissens nicht. Da muss alles als Konstante einen namen haben
Schau mal, vielleicht hilft es auf die Sprünge
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=40386&highlight=progmem

Felix G
15.06.2008, 19:49
Ich selbst habe sowas bisher nicht gemacht, kann dir aber sagen wonach du suchen musst: PROGMEM

zu dem Thema gibt es sicher irgendwo passende Tutorials.



edit:
da war ich wohl zu langsam

Jaecko
15.06.2008, 21:04
Also habs jetzt mal versucht, klappt aber nicht so ganz, da der Compiler nen Fehler meldet.

Ausschnitt aus dem Header:




typedef struct{
ui16_t s_current;
ui16_t s_keyfunc;
ui16_t s_next;
} stc_menuitem;

const stc_menuitem menuitems[] PROGMEM =
{
{ 0x0000, 0x0000, 0x0000},

// To be filled

{ 0xFFFF, 0xFFFF, 0xFFFF}
}

void UpdateLCD(void);
void System_Sleep(void);
void System_WakeUp(void);



Fehler: Expected ',' or ';' before 'void'
Bemängelte Zeile: void UpdateLCD(void);
Irgendwie seh ich das angeblich fehlende Zeichen nicht im direkten Vergleich zwischen meinem und dem aus dem anderen Thread.

Felix G
15.06.2008, 21:26
Naja, der Compiler hätte gern ein ; hinter der letzten geschweiften Klammer.

Jaecko
15.06.2008, 21:39
Thx... eigentlich logisch ](*,)
Dachte das hätt ich schon versucht.