ATMega169: Frage bzgl. LCD-Segmentadressen

OP #2097788
Lesenswert?

Hallo,

ich versuche gerade die einzelnen Segmente meines Butterflys 
anzusprechen. Dabei orientiere ich mich am Beispielcode von Atmel. Um 
alle Segmente zu (de)aktivieren, wird folgender Code verwendet:


1
   // Set/clear all bits in all LCD registers
2
    for (i=0; i < LCD_REGISTER_COUNT; i++)
3
        *(LCD_Data + i) = show;

LCD_Data ist ein unsigned char Pointer, der auf das erste Display 
Memory-Register LCDDR0 zeigt. Auf diesen Pointer wird einfach der Offset 
i addiert, der eines der folgenden Register angibt. Beispiel: *(LCD_Data 
+ 2) dereferenziert auf den Inhalt des Registers LCDDR2.

Problem: LCDDR4, LCDDR9, LCDDR14 und LCDDR19 existieren laut Datenblatt 
gar nicht. Dies äußert sich z.B. bei den Registerdefinitionen für den 
Compiler darin, dass sich eine Lücke bei diesen Registern auftut:
1
SFR_B_EXT(LCDDR0, 0xEC)    /* LCD Data Register 0 */
2
SFR_B_EXT(LCDDR1, 0xED)    /* LCD Data Register 1 */
3
SFR_B_EXT(LCDDR2, 0xEE)    /* LCD Data Register 2 */
4
SFR_B_EXT(LCDDR3, 0xEF)    /* LCD Data Register 3 */  
5
SFR_B_EXT(LCDDR5, 0xF1)    /* LCD Data Register 5 */
6
// [...] usw.

Adresse 0xF0 ist somit nicht vergeben, aber in dem Beispielcode wird 
einfach an diese Adresse der Wert show geschrieben. Wieso ist das 
erlaubt? Kann das nicht undefiniertes Verhalten bewirken?
OP #2098309
Lesenswert?

Knut Ballhause schrieb:
> Das Datenblatt sagt klipp und klar:
>
> 23.5.5       LCD Memory Mapping
> Write a LCD memory bit to one and the corresponding segment will be
> energized (visible).
> Unused LCD Memory bits for the actual display can be used freely as
> storage.
>
> Das von Dir genannte Register ist mit 'Reserved' deklariert, sollte also
> nicht benutzt werden.

Welches Datenblatt benutzt du? Bei mir steht folgendes (siehe Anhang).
Das erweckt beim zweiten und dritten Lesen wieder den Eindruck bei mir , 
dass das Beschreiben in Ordnung geht.

Allgemein ist das aber sehr sehr schlechter Stil und man sollte so etwas 
nicht machen.
Angehängte Dateien:

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