Forum: Mikrocontroller und Digitale Elektronik gr. LCD testcode need help


von Holger S. (capa)


Lesenswert?

Ich hab ein Display welches ich kurz testen will obs geht und wollt mal 
fragen ob mir mal schnell einer helfen kann mit einem gcc testcode.

Unter http://cbradio.cz/pcbazar/lcd/01/pdf/LCM_Info.pdf habe ich 
folgenden code gefunden.
1
while (1)
2
{ for ( y = 0; y < 32; y++ )
3
{ for ( x = 0; x < 15; x++ )
4
{ data = 0xF0;
5
BitShiftTimingZeile(data);
6
}
7
for ( x = 0; x < 15; x++ )
8
{ data = 0x0F;
9
BitShiftTimingZeile(data);
10
}
11
}
12
}

Meine frage ist da ich mit gcc noch keine erfahrung hab ob mir das einer 
so umsetzten kann das ich das display kurz testen kann. Ich weiß zum bsp 
nicht was es mit BitShiftTimingZeile auf sich hat und wie das mit den 
variablen deklarieren funktioniert. Quasi "Copy/Past - Compilieren - 
Hochladen - Testen".

von Grml (Gast)


Lesenswert?

Holger Schreiber schrieb:

> Quasi "Copy/Past - Compilieren -
> Hochladen - Testen".

Klar du willst dass dir hier jemand mal schnell nen Code üfr dein 
Display schreibt. Mehr nicht. Dreist.

von Holger S. (capa)


Lesenswert?

Einen Testcode damit ich sehe ob das ding noch geht sowas ham einige 
garantiert sogar irgendwo noch auf platte liegen.

Ich will keine ansteuerung mit menu etc nur diesen einen testcode 
meinetwegen auch als hexfile fals jemand denkt ich will es nur haben 
weil ich abkupfern will.

Display : LCM553-60601
Port : D0-5
MC : Atmega32

von Holger S. (capa)


Lesenswert?

Ich hab nun folgenden code gefunden allerdings wundert es mich das hier 
auch asm befehle eingebettet sind. Wie ihr euch vorstellen könnt meckert 
der compiler rum :/ Wie gesagt will nur testen ob das ding noch in 
ordnung ist nicht das ich teste und mache und das ding ist futsch und 
ich wundere mich ewig warum es nicht geht.
1
Warning  6  control reaches end of non-void function  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  44  1  AVRGCC2
2
Warning  3  implicit declaration of function 'cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  18  2  AVRGCC2
3
Warning  4  implicit declaration of function 'sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  18  2  AVRGCC2
4
Warning  5  implicit declaration of function 'sei'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  61  2  AVRGCC2
5
Warning  1  return type defaults to 'int'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  14  1  AVRGCC2
6
Warning  2  type of '__vector_11' defaults to 'int'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  14  1  AVRGCC2
7
Error  7  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  18  1  AVRGCC2
8
Error  9  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  19  1  AVRGCC2
9
Error  12  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  23  1  AVRGCC2
10
Error  13  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  24  1  AVRGCC2
11
Error  15  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  28  1  AVRGCC2
12
Error  17  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  29  1  AVRGCC2
13
Error  19  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  31  1  AVRGCC2
14
Error  21  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  33  1  AVRGCC2
15
Error  23  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  37  1  AVRGCC2
16
Error  25  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  39  1  AVRGCC2
17
Error  26  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  40  1  AVRGCC2
18
Error  28  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  55  1  AVRGCC2
19
Error  8  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  18  1  AVRGCC2
20
Error  10  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  19  1  AVRGCC2
21
Error  11  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  20  1  AVRGCC2
22
Error  14  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  28  1  AVRGCC2
23
Error  16  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  29  1  AVRGCC2
24
Error  18  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  30  1  AVRGCC2
25
Error  20  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  32  1  AVRGCC2
26
Error  22  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  36  1  AVRGCC2
27
Error  24  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  38  1  AVRGCC2
28
Error  27  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  54  1  AVRGCC2
29
Error  29  undefined reference to `sei'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  61  1  AVRGCC2
1
/*
2
 * AVRGCC2.c
3
 *
4
 * Created: 19.02.2012 21:21:25
5
 *  Author: Capa
6
 */ 
7
8
#include <avr/io.h>
9
#include <stdint.h> 
10
11
char z[60];
12
uint16_t c;
13
14
SIGNAL(SIG_OVERFLOW0)
15
{
16
  unsigned char a,i,j;
17
  TCCR0=(0<<CS00);
18
  if(PORTC&0b00000100)cbi(PORTC,2); else sbi(PORTC,2);
19
  if(PORTD&0b00000100)cbi(PORTD,2); else sbi(PORTD,2);
20
    sbi(PORTD,1);
21
  for(i=0;i<16;i++)
22
  {
23
    cbi(PORTD,0);
24
    cbi(PORTD,5);
25
    a=i+16;
26
    for(j=0;j<60;j++)
27
    {
28
      if(z[59-j]==i) sbi(PORTD,0); else cbi(PORTD,0);
29
      if(z[59-j]==a) sbi(PORTD,5); else cbi(PORTD,5);
30
      sbi(PORTD,4);
31
      cbi(PORTD,4);
32
      sbi(PORTD,4);
33
      cbi(PORTD,4);
34
    }
35
    sbi(PORTD,3);
36
    cbi(PORTD,3);
37
    sbi(PORTD,3);
38
    cbi(PORTD,3);
39
    cbi(PORTD,1);
40
  }
41
  TCCR0=(1<<CS00);
42
43
}
44
45
int main(void)
46
{
47
  TCCR0=(1<<CS00);
48
  TIMSK=(1<<TOIE0);
49
50
  DDRD|=0b00111111;
51
  DDRC|=0b00000100;
52
53
  sbi(PORTD,2);
54
  cbi(PORTC,2);
55
56
  for (c=0;c<60;c++)
57
  {
58
    z[c]=c>>1;
59
  }
60
  sei();
61
}

von Holger S. (capa)


Lesenswert?

Hab mal versucht das ganze anzupassen ich hoffe nur ich habs richtig 
verstanden, cbi setzt ja 0 und sbi setzt 1.

Nun hab ich nur noch ein Problem mit *sei();* wie ich das in c imortiere 
hab ich noch nicht rausgefunden.
1
/*
2
 * AVRGCC2.c
3
 *
4
 * Created: 19.02.2012 21:21:25
5
 *  Author: Capa
6
 */ 
7
8
#include <avr/io.h>
9
#include <stdint.h> 
10
11
char z[60];
12
uint16_t c;
13
14
SIGNAL(SIG_OVERFLOW0)
15
{
16
  unsigned char a,i,j;
17
  TCCR0=(0<<CS00);
18
  if(PORTC&0b00000100)
19
    PORTC |= (0<<PC2);
20
  else 
21
    PORTC |= (1<<PC2);
22
    
23
  if(PORTD&0b00000100)
24
    PORTD |= (0<<PD2);
25
  else 
26
    PORTD |= (1<<PD2);
27
    
28
    PORTD |= (1<<PD1);
29
  for(i=0;i<16;i++)
30
  {
31
    PORTD |= (0<<PD0);
32
    PORTD |= (0<<PD5);
33
    a=i+16;
34
    for(j=0;j<60;j++)
35
    {
36
      if(z[59-j]==i) 
37
        PORTD |= (1<<PD0);
38
      else 
39
        PORTD |= (0<<PD0);
40
        
41
      if(z[59-j]==a) 
42
        PORTD |= (1<<PD5);
43
      else 
44
        PORTD |= (0<<PD5);
45
        
46
      PORTD |= (1<<PD4);
47
      PORTD |= (0<<PD4);
48
      PORTD |= (1<<PD4);
49
      PORTD |= (0<<PD4);
50
    }
51
    PORTD |= (1<<PD3);
52
    PORTD |= (0<<PD3);
53
    PORTD |= (1<<PD3);
54
    PORTD |= (0<<PD3);
55
    PORTD |= (0<<PD1);
56
  }
57
  TCCR0=(1<<CS00);
58
59
}
60
61
int main(void)
62
{
63
  TCCR0=(1<<CS00);
64
  TIMSK=(1<<TOIE0);
65
66
  DDRD|=0b00111111;
67
  DDRC|=0b00000100;
68
69
  PORTD |= (1<<PD2);
70
  PORTC |= (0<<PC2);
71
72
  for (c=0;c<60;c++)
73
  {
74
    z[c]=c>>1;
75
  }
76
  sei();
77
}

von Grml (Gast)


Lesenswert?

Au Backe, viel Erfahrung hast du nicht....

Das sind keine "ASM Befehle" das sind normale C Funktionen bzw. Makros.
sbi und cbi sind deprecated und sind nun in der compat/depreacted.h zu 
finden. sei() und cli() sind kommen aus der interrupt.h.
Die Header musst du halt einbinden. Deshalb wird auch die SIGNAL 
Funktion nur mit meckern akzeptiert. Das ist aber inzwischen auch 
veraltet und man verwendet eigentlich nur noch ISR(interrupt vector).

Warum schreibst du nicht einfach eine Testansteuerung aus dem 
Datenblatt? Du willst doch das DIsplay auch irgendwie benutzen und nicht 
nur testen oder? Dann brauchst du doch sowieso Code den du auch 
verstehst.

von Grml (Gast)


Lesenswert?

Soviel übrigens zum Thema copy&paste von Code. Sowas klappt praktisch 
NIE NIE NIE so wie du dir das vorstellst. Da ist immer portierungsarbeit 
angesagt. Und wofür? Einen Test? Und danach?
Darum ist deine Eingangsfrage auch suboptimal und die Masse an Antworten 
zeigen dir dies auch.

Also lass doch mal raus was du WIRKLICH WILLST. Oder bist du LCD Tester 
von Beruf. Wohl kaum.

von Grml (Gast)


Lesenswert?

Schau mal bei Gelegenheit da rein:
http://www.nongnu.org/avr-libc/user-manual/modules.html

scheint nötig zu sein.

von Holger S. (capa)


Lesenswert?

Grml schrieb:
> Also lass doch mal raus was du WIRKLICH WILLST. Oder bist du LCD Tester
> von Beruf. Wohl kaum.

Das sagte ich bereits mehrfach ich will wissen ob das ding noch 
funktioniert das ich mit c noch nie was gemacht hab sagte ich bereits. 
Ebenso hab ich in mehreren Threads erwähnt das ich anfänger bin und mich 
mit asm beschäftigt hatte für den anfang.

Das da einfach nen include gefehlt hat hab ich dann auch mitbekommen 
nachdem ichs auf einer seite gelesen hatte.

von Grml (Gast)


Lesenswert?

Holger Schreiber schrieb:

> Das da einfach nen include gefehlt hat hab ich dann auch mitbekommen
> nachdem ichs auf einer seite gelesen hatte.

Ja sorry warum fragst du dann wenn du keine Antworten darauf willst. 
Ausserdem fehlen da mindestens 2 includes.

Und geht dein Display nun? Sollte ja jetzt ein Klacks sein. Mach doch 
mal nen Bild von Display (in aktion natürlich). Würde mich 
interessieren. Wo gibts das? Kosten?

von Karl H. (kbuchegg)


Lesenswert?

> Und geht dein Display nun?

Kann ich mir nicht vorstellen

zb

    PORTC |= (0<<PC2);
  else
    PORTC |= (1<<PC2);

Da fehlts an den allereinfachsten Basics.
Und genau darum ist ein GLCD 5 Schuhnummern zu groß für den TO.

von Grml (Gast)


Lesenswert?

Und da ward er auch nie mehr gesehen

von Holger S. (capa)


Lesenswert?

Grml schrieb:
> Und da ward er auch nie mehr gesehen

wer wurd nicht wieder gesehen ?
wenn du mich meinst, sorry arbeitende bevölkerung und so


5 schuhnummern zu groß, mag sein mir gings nur darum ob das ding 
funktioniert und ichs wieder einlagern kann bis ichs benutzen kann oder 
ob ichs in die tonne hauen kann. Mehr wollte ich nicht machen, darauf 
hab ich aber mehrmals hingewiesen das ich nur wissen will ob das ding 
funktioniert. Nicht wie, sondern ob!

von Grml (Gast)


Lesenswert?

Holger Schreiber schrieb:
> Grml schrieb:
>> Und da ward er auch nie mehr gesehen
>
> wer wurd nicht wieder gesehen ?
> wenn du mich meinst, sorry arbeitende bevölkerung und so
>
>
> 5 schuhnummern zu groß, mag sein mir gings nur darum ob das ding
> funktioniert und ichs wieder einlagern kann bis ichs benutzen kann oder
> ob ichs in die tonne hauen kann. Mehr wollte ich nicht machen, darauf
> hab ich aber mehrmals hingewiesen das ich nur wissen will ob das ding
> funktioniert. Nicht wie, sondern ob!
Ja das geht aber halt nicht so einfach, genau das versuche ich (und 
nicht nur ich) dir zu sagen. Es ist kein großer Unterschied zwischen 
"testen" und "benutzen". Für beides brauchst du eine komplette 
Ansteuerung. Und die ist bei dem Display nicht ohne, und da ist sowohl 
copy&paste als auch selber schreiben eine Herausforderung. Grade wenn 
man nichtmal C kann. Selber schreiben bietet sich hier sogar noch an 
weil eine Portierung oftmals stressiger ist.
Genau das willst du einfach nicht kapieren. Beratungsresistent nennt man 
das.

Aber zum Thema zurück.
Funktionierts denn jetzt?
Auch meine anderen Fragen nach dem Display hast du geflissentlich 
ignoriert. Schade, du scheinst nur Infos bekommen zu wollen, welche 
geben willst du nicht.

von Holger S. (capa)


Lesenswert?

Das Display muss ich vor langer zeit irgendwann mal bei pollin gekauft 
haben, ka wie teuer es war.

Es zeigt immo 2 Schwarze striche an mit dem alten code (den mit sbi/cbi)
hab heute noch nicht groß nachgeschaut da ich immo etwas beschäftigt 
bin.

von Claus M. (Firma: privat) (raspii)


Lesenswert?

Hallo, noch beobachtet noch jemand diesen Thread?
Ich bin auch stolzer Besitzer dieses Displays und würde auch gerne sehen 
ob ich es in Betrieb bekomme.
Ich wundere mich schon sehr über die ART und Weise der Kommunikations, 
Beleidigungen (und so empfinde ich es) helfen einem selten weiter.

Und ja, wenn man ein LCD Display verwenden möchten macht es durchaus 
Sinn, dass man erst mal eine Testroute schreibt bevor man weitere 
Denkarbeit investiert (auch meine Meinung).

Wenn jemand hier schon weiter gekommen ist bitte Bescheid sagen, ich 
möchte das Display auch am Arduino betreiben, ansonsten mach ich mich im 
Herbst/Winter mal selbst an die Arbeit.

Info's zum Display habe ich bereits hier gefunden:
Beitrag "Re: "alte" Grafikdisplays"
das sollte für den Anfang reichen.

Bin gespannt ob sich noch jemand meldet.

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.