Forum: Mikrocontroller und Digitale Elektronik Lookup Table für Display oder externen Speicher


von Juan C. (juan)


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

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Juan C. (juan)


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.

von Benedikt K. (benedikt)


Lesenswert?

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.

von Juan C. (juan)


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

von Juan C. (juan)


Lesenswert?

Hallo zusammen,

kann ein Erfahrener von Euch mir weiterhelfen?
Habe schon im Internet viel geguckt aber nix gefunden.
Für Links oder Doku. über dieses Thema (Adrssleitungen mit Matrix, 
Tabelle) wäre ich herzlich dankbar!

Viele Grüße

Juan

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.