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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.