www.mikrocontroller.net

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


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Holger Schreiber (capa)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.
while (1)
{ for ( y = 0; y < 32; y++ )
{ for ( x = 0; x < 15; x++ )
{ data = 0xF0;
BitShiftTimingZeile(data);
}
for ( x = 0; x < 15; x++ )
{ data = 0x0F;
BitShiftTimingZeile(data);
}
}
}

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".

Autor: Grml (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Holger Schreiber (capa)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Holger Schreiber (capa)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.
Warning  6  control reaches end of non-void function  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  44  1  AVRGCC2
Warning  3  implicit declaration of function 'cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  18  2  AVRGCC2
Warning  4  implicit declaration of function 'sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  18  2  AVRGCC2
Warning  5  implicit declaration of function 'sei'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  61  2  AVRGCC2
Warning  1  return type defaults to 'int'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  14  1  AVRGCC2
Warning  2  type of '__vector_11' defaults to 'int'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\AVRGCC2.c  14  1  AVRGCC2
Error  7  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  18  1  AVRGCC2
Error  9  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  19  1  AVRGCC2
Error  12  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  23  1  AVRGCC2
Error  13  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  24  1  AVRGCC2
Error  15  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  28  1  AVRGCC2
Error  17  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  29  1  AVRGCC2
Error  19  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  31  1  AVRGCC2
Error  21  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  33  1  AVRGCC2
Error  23  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  37  1  AVRGCC2
Error  25  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  39  1  AVRGCC2
Error  26  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  40  1  AVRGCC2
Error  28  undefined reference to `cbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  55  1  AVRGCC2
Error  8  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  18  1  AVRGCC2
Error  10  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  19  1  AVRGCC2
Error  11  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  20  1  AVRGCC2
Error  14  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  28  1  AVRGCC2
Error  16  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  29  1  AVRGCC2
Error  18  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  30  1  AVRGCC2
Error  20  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  32  1  AVRGCC2
Error  22  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  36  1  AVRGCC2
Error  24  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  38  1  AVRGCC2
Error  27  undefined reference to `sbi'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  54  1  AVRGCC2
Error  29  undefined reference to `sei'  C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\AVRStudio\AVRGCC2\AVRGCC2\Debug/.././AVRGCC2.c  61  1  AVRGCC2
/*
 * AVRGCC2.c
 *
 * Created: 19.02.2012 21:21:25
 *  Author: Capa
 */ 

#include <avr/io.h>
#include <stdint.h> 

char z[60];
uint16_t c;

SIGNAL(SIG_OVERFLOW0)
{
  unsigned char a,i,j;
  TCCR0=(0<<CS00);
  if(PORTC&0b00000100)cbi(PORTC,2); else sbi(PORTC,2);
  if(PORTD&0b00000100)cbi(PORTD,2); else sbi(PORTD,2);
    sbi(PORTD,1);
  for(i=0;i<16;i++)
  {
    cbi(PORTD,0);
    cbi(PORTD,5);
    a=i+16;
    for(j=0;j<60;j++)
    {
      if(z[59-j]==i) sbi(PORTD,0); else cbi(PORTD,0);
      if(z[59-j]==a) sbi(PORTD,5); else cbi(PORTD,5);
      sbi(PORTD,4);
      cbi(PORTD,4);
      sbi(PORTD,4);
      cbi(PORTD,4);
    }
    sbi(PORTD,3);
    cbi(PORTD,3);
    sbi(PORTD,3);
    cbi(PORTD,3);
    cbi(PORTD,1);
  }
  TCCR0=(1<<CS00);

}

int main(void)
{
  TCCR0=(1<<CS00);
  TIMSK=(1<<TOIE0);

  DDRD|=0b00111111;
  DDRC|=0b00000100;

  sbi(PORTD,2);
  cbi(PORTC,2);

  for (c=0;c<60;c++)
  {
    z[c]=c>>1;
  }
  sei();
}

Autor: Holger Schreiber (capa)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.
/*
 * AVRGCC2.c
 *
 * Created: 19.02.2012 21:21:25
 *  Author: Capa
 */ 

#include <avr/io.h>
#include <stdint.h> 

char z[60];
uint16_t c;

SIGNAL(SIG_OVERFLOW0)
{
  unsigned char a,i,j;
  TCCR0=(0<<CS00);
  if(PORTC&0b00000100)
    PORTC |= (0<<PC2);
  else 
    PORTC |= (1<<PC2);
    
  if(PORTD&0b00000100)
    PORTD |= (0<<PD2);
  else 
    PORTD |= (1<<PD2);
    
    PORTD |= (1<<PD1);
  for(i=0;i<16;i++)
  {
    PORTD |= (0<<PD0);
    PORTD |= (0<<PD5);
    a=i+16;
    for(j=0;j<60;j++)
    {
      if(z[59-j]==i) 
        PORTD |= (1<<PD0);
      else 
        PORTD |= (0<<PD0);
        
      if(z[59-j]==a) 
        PORTD |= (1<<PD5);
      else 
        PORTD |= (0<<PD5);
        
      PORTD |= (1<<PD4);
      PORTD |= (0<<PD4);
      PORTD |= (1<<PD4);
      PORTD |= (0<<PD4);
    }
    PORTD |= (1<<PD3);
    PORTD |= (0<<PD3);
    PORTD |= (1<<PD3);
    PORTD |= (0<<PD3);
    PORTD |= (0<<PD1);
  }
  TCCR0=(1<<CS00);

}

int main(void)
{
  TCCR0=(1<<CS00);
  TIMSK=(1<<TOIE0);

  DDRD|=0b00111111;
  DDRC|=0b00000100;

  PORTD |= (1<<PD2);
  PORTC |= (0<<PC2);

  for (c=0;c<60;c++)
  {
    z[c]=c>>1;
  }
  sei();
}

Autor: Grml (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Grml (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Grml (Gast)
Datum:

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

scheint nötig zu sein.

Autor: Holger Schreiber (capa)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Grml (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Grml (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Und da ward er auch nie mehr gesehen

Autor: Holger Schreiber (capa)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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!

Autor: Grml (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Holger Schreiber (capa)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
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.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net