www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GLCD mit T6963C an AVR merkwürdiges verhalten


Autor: MXM (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe einen 240x64 GLCD mit einem T6963C an einem mega32 zu hängen. 
Ich benutze die lib aus diesem Beitrag: 
Beitrag ""Bessere" T6963c Library" von Simon K. bzw. die 
aktuelle Version von seiner Seite.

Es funktioniert alles so weit. Grafik und Text werden richtig angezeigt. 
Wenn ich jetzt aber eine Ausgabe in der while(1) Schleife habe, wird es 
zwar angezeigt, jedoch „wandert“ die Ausgabe ganz schnell mehrere Pixel 
vor und wieder zurück. Also eine art sehr schnelles  Zittern (siehe 
Bild). Mit Grafik verhält es sich genauso.

Ich habe schon alles Mögliche ausprobiert. An den Wartezeiten liegt es 
nicht. Statusabfrage funktioniert auch. Mit einer anderen lib habe ich 
das Verhalten nicht. Jedoch arbeitet diese nicht mit Autowrite.

Hatte jemand bereits ähnliche Probleme?


Danke für Eure Hilfe,
MXM

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht stresst die permanente Ausgabe das Display intern (abgesehen 
davon dass es unsinnig ist). Probier mal folgendes:

1. Gib den Text aus und geh dann in eine leere while-Schleife
2. Gib den Text in der while-Schleife aus, aber setz ein Delay 
davor/dahinter

> An den Wartezeiten liegt es nicht. Statusabfrage funktioniert auch.
Wie geprüft?

> Jedoch arbeitet diese nicht mit Autowrite.
Hm... Autowrite inkrementiert den Adresszähler automatisch. Wenn die 
Funktion erneut aufgerufen wird, wird dann auch der Adresszähler wieder 
korrekt gesetzt?

Ralf

Autor: MXM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hilf alles nichts.

Da immer das Statusbyte ausgewertet wird, kann man davon ausgehen, dass 
das LCD für die nächste Aktion bereit ist. -> Zeiten werden eingehalten.

Auch wenn ich einen delay von 1 sek setze zittert das Bild ca. 300-500 
ms. Danach ist es für den Rest der Sekunde stabil und auch richtig. 
Danach geht alles von vorne los.

Kann jemand, der die Lib im Einsatz hat das Folgende in der while(1) 
Schleife ausprobieren:
  for(n=0;n<64;n++){
    for(i=0;i<240;i+=2){
      T6963cSetPixelXY(i, n);
    }  
  }
Es müssten senkrechte Linien zu sehen sein. Und eigentlich ohne das 
Rumgezittere.

Danke,
MXM

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Auch wenn ich einen delay von 1 sek setze zittert das Bild ca. 300-500
>ms.

Änderst du einen Portpin von einem Port wo das LCD angeschlossen ist
irgendwo in einem Interrupt?

Autor: MXM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein.. es läuft nur der Code fürs LCD.

MXM

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>nein.. es läuft nur der Code fürs LCD.

Und wie sieht der aus?

Autor: MXM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include "T6963c.h"
#include <util/delay.h>

int main()
{  
  uint8_t n, i;

  //Initialize
  //XOR mode, internal CG, Text and Graphic, Blinking Cursor
  T6963cInit(  T6963C_MODE_XOR | T6963C_CG_INTERNALROM, T6963C_TEXT_GRAPHIC);
  T6963cClear();
    
  while(1){
    for(n=0;n<64;n++){
      for(i=0;i<240;i+=2){
        T6963cSetPixelXY(i, n);
      }  
    }    
  }

  return 0;
}

und halt die lib.. mit Textausgabe verhält es sich genauso.

MXM

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und halt die lib.. mit Textausgabe verhält es sich genauso.

>Beitrag ""Bessere" T6963c Library" von Simon K. bzw. die
>aktuelle Version von seiner Seite.

Poste dein gottverschissenes ganzes Projekt.
Oder glaubst du ich such mir das alles selber zusammen?

Autor: MXM (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Projekt anbei..

MXM

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert ohne Probleme auf ATega128 und Winstar WG24064A.
Musste noch ein paar Portpins anpassen, aber geht.
Da bewegt sich gar nichts. Schöne stabile senkrechte Linien.

Autor: MXM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deinen Test..

habe es grad mit einem mega16 ausprobiert. gleiches bild.

Ich check nochmal die Leitungen. Hmm.. Könnte es auch ein LCD Bug sein?

Gruß,
MXM

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger:
Ruhig bleiben :) Ton wahren :|

@MXM & Holger:
Könntet ihr mal vergleichen, wie die Power-Versorgung eurer Displays 
aussieht?
Ansonsten fällt mir ausser Display defekt bzw. falsch initialisiert grad 
nix ein.

Ralf

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@Holger:
>Ruhig bleiben :) Ton wahren :|

Manchmal muss man halt grob werden:(

>@MXM & Holger:
>Könntet ihr mal vergleichen, wie die Power-Versorgung eurer Displays
>aussieht?

Meine ist perfekt. 7805 mit dem üblichen Geraffel drum rum.
Ich kenn mich da ganz gut aus;) Mein Display hat aber keine
Hintergrundbeleuchtung. Vieleicht zappelt sein Display ja weil
der Spannungsregler am abkochen ist oder die Kondis zu klein sind?

Autor: MXM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal danke für Eure Hilfe...

ich habe das Problem gefunden. Der "FS" Pin (Pin19) des LCD war bei mir 
am PortD.

In der ersten lib, die ich verwenden habe wurde er benutzt. in dieser 
nicht.

Anscheinent muss er auf GND liegen. "Nur am Port auf logisch 0" reicht 
nicht. komisch..

Nun läufts..

Danke nochmal...

Gruß,
Maxim

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> In der ersten lib, die ich verwenden habe wurde er benutzt. in dieser
> nicht.
> Anscheinent muss er auf GND liegen. "Nur am Port auf logisch 0" reicht
> nicht. komisch..
Passt irgendwie nicht zusammen. Auf welchen Level hat die erste den Pin 
gelegt? Auch Null? Wenn er in der ersten verwendet wurde, und in der 
zweiten nicht, und du setzt ihn ausserhalb der Lib auf Null, ist das ja 
das gleiche. Es sei denn, du hast das in der zweiten ignoriert, was 
bedeutet, dass der Pin nach einem Reset auf High liegt...

Ralf

Autor: MXM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Ralf

ich habe den Pin nicht zusätzlich auf low gelegt. Da er nicht benutzt 
wird, muss er default nach einem Reset auf low liegen.. Scope zeigte 
auch 0V.

In der ersten Lib wurde er folgend (nur in Init()) benutzt:
  if (glcd_FONT_SELECT)  // = narrow (small) font
    glcd_fs_high()    // FS HIGH
  else
    glcd_fs_low();    // FS LOW


Gruß,
MXM

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.