[C lang] obsługa wyświetlacza LCD od Nokii pod Avr

Oct 05, 2005 4 Replies

Pytanie kieruję do osób, które korzystały z drivera tego wyświetlacza, gdzieś krążącego po sieci. Dlaczego wzorce liter są zapisywane w RAM'ie, a nie w kodzie programu. Deklaracja tablicy z wzorcami jest następująca



static const byte FontLookup [][5] = { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # (...)



Te wzorce plus pamięć ekranu zajmują aż coś koło 960 B. W ATmega8 nie zostaje już prawie nic na program... Co z tym zrobić? Jak wymusić umieszczenie tej tablicy w kodzie programu, a nie w RAM'ie? Jakieś sugestie ?



Pzdr. Krzysztof.


Ja mam tak:

static unsigned char PROGMEM ascii[] = { 0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x5F,0x00,0x00,0x00, ... }

A odczyt tak:

void charLCD(unsigned char ch) { unsigned int i; unsigned char akt; if(ch>31) for(i=0;i<6;i++) { memcpy_P(&akt, ascii + (((ch-32)*6)+i), sizeof(char)); dataLCD(akt); } }

Przy czym dataLCD() to funkcja przesyłająca daną do LCD.

Pozdrawiam

Krzysztof snipped-for-privacy@wp.pl napisał(a):

Należy użyć odpowiednich atrybutów ;) #define ATRYBUT __attribute__ ((section (".progmem.gcc"))) //zaraz za tablicą wektorów lub #define ATRYBUT __attribute__ ((section (".fini9"))) //zaraz za ... ??? (sprawdź gdzie ;) ) lub #define ATRYBUT __attribute__ ((section (".eeprom"))) //w eepromie też się da ;)

char FontLookup [][5] ATRYBUT = { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " { 0x14, 0x7f, 0x14, 0x7f, 0x14 } // # };

Proponuję zajrzeć do pliku *.map .

Piotrek

PS Można też umieścić dane w pliku *.S , wolna wola ;) I nie próbuj odczytywać takich danych , jak "zwykłych" zmiennych. Reszta o tym , w manualach AVR-GCC.

Ta część poszła!

Help, help!! Tu jest link do deklaracji atrybutów, ale co dalej...?

formatting link
Jak odczytać dane z tej tablicy...??

Pzdr. Krzysztof.

Chyba coś mam:

formatting link
Pzdr. Krzysztof.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required