Lookup Table für Display oder externen Speicher

OP #1036765
Lesenswert?

Hallo Zusammen,

gucke gerade ein Programm im Internet und der Author hat eine Lookup 
table, die als Array im PROGMEM definiert ist, für die Darstellung eines 
Graphics auf einem Display benutzt.
z.B. so:
const unsigned char ASCII_font[] PROGMEM=
{
           ' ',  0, 0, 0, 0, 0, 0,
           '!',  0, 0, 95, 0, 0, 0,
           '"',  0, 3, 0, 3, 0, 0,
           '#',  20, 62, 20, 62, 20, 0,
           '$',  36, 42, 107, 42, 18, 0,
           '%',  34, 16, 8, 4, 34, 0,
           '&',  16, 46, 41, 22, 40, 0,
           '\'', 0, 4, 3, 0, 0, 0,
};
und was noch ist, der Author hat auch wahrscheinlich nach dem Schaltplan 
einen externen Speichers nach einer Tabelle adressiert.
z.B. so:

static const unsigned char adress[] PROGMEM ={
0,128,2,130,4,132,6,134,64,192,66,194,68,196,70,198,
32,160,34,162,36,164,38,166,96,224,98,226,100,228,102,230,
8,136,10,138,12,140,14,142,72,200,74,202,76,204,78,206,
40,168,42,170,44,172,46,174,104,232,106,234,108,236,110,238,
16,144,18,146,20,148,22,150,80,208,82,210,84,212,86,214,
48,176,50,178,52,180,54,182,112,240,114,242,116,244,118,246,
24,152,26,154,28,156,30,158,88,216,90,218,92,220,94,222,
56,184,58,186,60,188,62,190,120,248,122,250,124,252,126,254};
Über solche Dinge verstehe ich nicht so gut und hoffe, jemand von Euch 
mir erklären oder einpaar einschlägige Link bzw. Unterlage geben kann. 
Vielen Danke!

Viele Grüße
juan
Persönliche Seite #1036774
Lesenswert?

> const unsigned char ASCII_font[] PROGMEM=

Das ist keine "lookup table", sondern eine Bitmap-Tabelle.

Stelle mal die Dezimalwerte als Binärwerte dar:

>           '#',  20, 62, 20, 62, 20, 0,

00010100  20
00111110  62
00010100  20
00111110  62
00010100  20
00000000  0

> und was noch ist, der Author hat auch wahrscheinlich nach
> dem Schaltplan einen externen Speichers nach einer Tabelle
> adressiert.

Was dieser Satz bedeuten soll, erschließt sich mir nicht.
OP #1036795
Lesenswert?

Rufus t. Firefly wrote:
>> const unsigned char ASCII_font[] PROGMEM=
>
> Das ist keine "lookup table", sondern eine Bitmap-Tabelle.
>
> Stelle mal die Dezimalwerte als Binärwerte dar:
>
>>           '#',  20, 62, 20, 62, 20, 0,
>
> 00010100  20
> 00111110  62
> 00010100  20
> 00111110  62
> 00010100  20
> 00000000  0
>
>> und was noch ist, der Author hat auch wahrscheinlich nach
>> dem Schaltplan einen externen Speichers nach einer Tabelle
>> adressiert.
>
> Was dieser Satz bedeuten soll, erschließt sich mir nicht.

Danke zuerst für die schnelle Antwort.
Für das 1. Problem ist schon klar.

Zur zweiten Frage:
nach dieser Tabelle kann man so machen:
z.B.
void Speicher_setAdress(unsigned int Addr){
     (Tabelle...)

     BUS_PORT = pgm_read_byte(&adress[Addr]);
}
Dann werden die entsprechenden Daten in den Speicher geschrieben.
OP #1036804
Lesenswert?

Benedikt K. wrote:
> Da hat er wohl die Adressleitungen falschrum angeschlossen.
> Die Tabelle dreht die Reihenfolge der Bits um, aus 10000000 wird
> 00000001, aus 01000000 wird 00000010 usw.
> Bei einem RAM sollte das aber egal sein, nur bei Flashs und anderen ROMs
> ist die Reihenfolge wichtig.

Danke. Das ist ja schon richtig, glaube ich. Hast du irgend einen Link 
oder Unterlagen, wo es dort konkrete Vorstellung über dieses Thema gibt?

Viele Grüße
Juan

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