Forum: Mikrocontroller und Digitale Elektronik Display mit Touchscreen bei Pollin?


von Ralf (Gast)


Lesenswert?

Hi,
befindet sich auf dem Display von Pollin (Best.Nr. 120 346, 
"Grafik-Display DataVision DG-16080-11") ein Touchscreen? Auf dem Bild 
sieht man nämlich 4 Anschlüsse, die im Datenblatt jedoch nicht 
beschrieben sind.
Oder ist das ein Anschluss für eine EL-Beleuchtung?
7€ für Display+Touchscreen wäre schon schön^^

Mit freundlichen Grüßen, Ralf

von Klaus2 (Gast)


Lesenswert?

evtl isses nen serviervorschlag???

Klaus.

von ... .. (docean) Benutzerseite


Lesenswert?

Da im Datenblatt was von Backlight steht, aber bei den PINs keins 
aufgeführt wirds wohl dafür sein...

Aber was kann st du bei 7€ schon verlieren...

Weiß jmd den Controller der draufsteckt?

von Ralf (Gast)


Lesenswert?

hoffentlich nicht..in der Beschreibung ist ja auch nichts erwähnt. Naja 
falls ich demnächst mal bestelle und das Teil dann noch da ist werde ich 
wohl eins mitordern.
Ralf

von Klaus2 (Gast)


Lesenswert?

nenene, für mich sieht das extrem nach touch aus! leiterbahnführung, 
"oben drauf", ...

bin mal gespannt!

Klaus.

von Bauteiltöter (Gast)


Lesenswert?

Guckt mal hier: 
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=43741

Da hat einer das gLCD... das ist wirklich ein touch!

Bauteiltöter

von Klaus2 (Gast)


Lesenswert?

...was hab ich gewonnen??? <:)

Dann wird das wohl bald ausverkauft sein :)

Klaus.

von Benedikt K. (benedikt)


Lesenswert?

... ... wrote:
> Da im Datenblatt was von Backlight steht, aber bei den PINs keins
> aufgeführt wirds wohl dafür sein...

Das Display gabs schonmal, es hat ein grünes LED Backlight, uns 
ansonsten einen recht guten Kontrast und Blickwinkel.

> Weiß jmd den Controller der draufsteckt?

Schau mal in die Artikelbeschreibung...

Klaus2 wrote:
> ...was hab ich gewonnen??? <:)

Nix, denn der Touchscreen da drauf ist kaputt. Daher wird es als ohne 
verkauft. Die leitfähige Klebeverbindung zwischen Anschlussfolie und LCD 
ist nicht richtig, daher hat sie keine Verbindung. Wenn man Glück hat, 
erwischt man eines mit einem funktionierenden Touchpad (etwa 1 von 10).

von lboppi (Gast)


Lesenswert?

Hallo zusammen,

also ich habe mein Display gerade ausgepackt und so wie es aussieht, 
funktioniert der Touchscreen bei mir. Kenn' mich jetzt nicht wahnsinnig 
mit der Funktionalität eines Tochscrenns aus, aber wenn ich den 
Widerstand zwischen den Leitungen messe und aufs Display drücke, ändert 
sich der Widerstand je nach der gedrückten Position (auf X und Y Achse). 
Ohne Betätigung habe ich einen Widerstand nahe unendlich.

lboppi

von Benedikt K. (benedikt)


Lesenswert?

Mess mal an den Anschlüssen:
Zwischen jeweils 2 Anschlüssen müssen es etwa 300 bzw. 900 Ohm (oder 
irgendwas ganz grob in der Richtung) sein wenn nichts gedrückt ist. 
Untereinander müssen es unendlich sein, was du ja schon gemessen hast.

von John S. (linux_80)


Lesenswert?

Man kann dem Touch aber auf die Sprünge helfen (Lötkolben), hat bei 
meinen zwei LCDs auch geholfen. Ob das Grundsätzlich bei allen der Fall 
ist, kann man so nat. nicht sagen.

von Hendrik (Gast)


Lesenswert?

Von Atmel gibt es auch eine Application Note zum Thema Touchscreen. 
Vielleicht hilft sie dir beim Verständnis etwas weiter.

http://atmel.com/dyn/resources/prod_documents/doc8091.pdf


Viele Grüße, Hendrik

von lboppi (Gast)


Lesenswert?

Danke Hendrik für das Datenblatt. Weiss' jemand, ob man so ohne weiters 
ein normales Kabel an das "Flachbandkabel" löten kann ?

@Benedikt: Genau in diesem Bereich liegen meine Widerstandswerte

lboppi

von Benedikt K. (benedikt)


Lesenswert?

lboppi wrote:
> Weiss' jemand, ob man so ohne weiters
> ein normales Kabel an das "Flachbandkabel" löten kann ?

Wenn du diesen Folienstecker meinst: Ja, das geht. Habe ich auch 
gemacht.

von Michi (Gast)


Lesenswert?

@Benedikt K
> Wenn man Glück hat,
> erwischt man eines mit einem funktionierenden Touchpad (etwa 1 von 10).

Ich bin mal für eine kleine Statistik :-D

Meiner funktioniert in X und Y-Richtung ohne vorheriges Löten oä
Über Linearität kann ich nichts sagen, da ich mir nur die Widerstände 
auf dem Multimeter angesehen hab.

Nur eine kleine Sache: Für seichtes Berühren mit dem Finger ist meiner 
nicht geeignet. Entweder Fingernagel oder fest mit dem Daumen drücken. 
(Oder  Plastik-Touchscreenstift, den ich nicht besitze)

von Benedikt K. (benedikt)


Lesenswert?

Michi wrote:

> Nur eine kleine Sache: Für seichtes Berühren mit dem Finger ist meiner
> nicht geeignet. Entweder Fingernagel oder fest mit dem Daumen drücken.
> (Oder  Plastik-Touchscreenstift, den ich nicht besitze)

Ist bei mir auch so.
Von der Linearität her sind die ausgezeichnet:
Ich kann reproduzierbar +/-1 Pixel genau treffen.

von Meik D. (meik)


Lesenswert?

Das Display kam vorgestern auch zu mir. Bei meinem sind zwar beide 
Koordinaten verfügbar, jedoch sind die gegenseitig etwas vonenander 
abhängig, sprich nicht linear. Das wird wohl der Defekt daran sein. Ist 
da aus Erfahrungswerten noch irgendwas zu machen ausser mit Mathematik?

Meik

von Jan (Gast)


Lesenswert?

Könnte jemand mal ein hochauflösendes Foto machen von der kritischen 
Kontaktstelle (sofern sie denn nun doch existiert) ???

von John S. (linux_80)


Lesenswert?

Der schlechte Übergang ist einfach der Kontakt zwischen Folienleiter und 
Touchfolie.
Ich weiss nicht ob da ein Foto mehr Informationen bringt.

Das hab ich damals gemacht:
http://roboter.net-con.net/images/touch/GLCD-Touch2.jpg

von Nietzsche (Gast)


Lesenswert?

Die gibts tatsächlich immernoch... Hab gleich mal 3 mitbestellt 
(...warum nur meine Pollin Bestellungen immer gleich so teuer werden ;)

Bin schon sehr gespannt, wie das klappt... Mich wundert, dass die 
immenroch welche von den Teilen haben...

von Benedikt K. (benedikt)


Lesenswert?

Die kritischen Stellen sind die 4 braunen Rechtecke rechts wo das 
Folienkabel drangeht auf obigem Foto.
Theoretisch ist eine Reparatur des leitfähigen Klebers möglich:
Man muss die Stellen erhitzen, zusammenpressen, abkühlen lassen. Wichtig 
dabei ist, dass der Druck solange erhalten bleibt bis der Kleber wieder 
kalt ist.

von Olli (Gast)


Lesenswert?

Hallo,

hat jemadn ein Code Beispiel(AVRGCC) zum Ansteuern des GLCD? Ich finde 
nur das für die KS0108. Das hat aber zwei CS Anschlüsse.
Danke im voraus!
Gruss
Olli

von olli (Gast)


Lesenswert?

Hallo,

ich habe nun ein C- Programm für dieses Display gefunden. Funktioniert 
auch soweit. Nun habe ich eine weitere Frage. Wie kann man eine Grafik 
so konvertieren, das man nur die einzelnen Pixel koordinaten hat, um sie 
auf diesem Display darzustellen. Der Autor dieses Programms hat einen 
Pinguin
so dargestellt: 
http://www.frozeneskimo.com/samsunglcd/avr-lc7981-v1/draw_penguin.c. Wie 
könnte man eine andere Grafik darstellen?
Gruss
Olli

von spess53 (Gast)


Lesenswert?

Hi

>Der Autor dieses Programms hat einen Pinguin so dargestellt:....

Das muss jemand aus der Sado-Maso-Szene sein. Ich habe mir, allerdings 
für Assembler, ein Programm geschrieben, das Bitmaps in .db-Anweisungen 
umwandelt. Jedes Bild hat ein Label und wird in das Programm ein 
gebunden. Das Bild wird dann vom Flash einfach (Byteweise) auf das 
Display kopiert.
In C müsste man aus dem Bild ein Array machen, das zum Display kopiert 
wird.

MfG spess

von olli (Gast)


Lesenswert?

so habe ich mir das auch gedacht. Das die Pixel koordinaten im Array 
stehen, und ich sie da auslese. Nur erst mal die Koordinaten bekommen. 
Ich dachte da gibt es Hilfsprogramme? Sonst wäre es wirklich ein Fall 
für Sado Maso..

von Thorsten E. (nietzsche)


Lesenswert?

Hm, leider sehen die Dinger jetzt ein bischen anders aus... Hab meine 
grad ausgepackt... Wenn ich mit dem Multimeter messe, habe ich zwischen 
300 und 500 Ohm Widerstand zwischen je 2 Anschlüssen... Allerdings 
ändert sich daran rein garnichts, wenn ich auf dem Display rumdrücke... 
Weder mit Finger/Nagel, noch mit Touchstift...

Muss das Display mit Spannung versorgt werden, damit ich da was messen 
kann?

von Netzwanze (Gast)


Lesenswert?

Der Widerstand ändert sich zwischen den jeweils 2 Anschlüssen auch 
nicht.
Du hast aber auch zwei Kombinationen, bei denen der Widerstand unendlich 
ist. Der wird kleiner, wenn Du das Display berührst/drückst.

von Thorsten E. (nietzsche)


Lesenswert?

Olé, perfekt, dann funktionieren alle 3 Touchs.. Der Tag ist gerettet :)

Linearität muss ich noch mal genau testen :)

von Fabian S. (jacky2k)


Lesenswert?

Moin moin,
gibts inzwischen ne C Lib fürn Atmega(8)?
Meins ist heute auch gekommen, zumindest die X-Achse funktioniert wohl, 
Y habe ich noch nicht getestet.
Mich wundert es auch, dass momentan noch 785 verfügbar sind...

von Meik D. (meik)


Lesenswert?

Ich habe jetzt 2 von denen. Das Zweite kam leider mit kohlebeschichteten 
Kontakten; ist also nix mit anlöten. Vernünftig ans Laufen bringe ich 
die Touchscreens aber nicht, da die X Koordinate von der Y Koordinate 
abhängig ist und umgekehrt. Hat jemand eine Idee, wie man das am Besten 
rausrechnet?

Gruß Meik

von Fabian S. (jacky2k)


Lesenswert?

Mhh numerisch oder so ne Karte erstellen?
also 10x10 Messungen machen und dann nähern.

von Benedikt K. (benedikt)


Lesenswert?

Meik Dittmann schrieb:
> Vernünftig ans Laufen bringe ich
> die Touchscreens aber nicht, da die X Koordinate von der Y Koordinate
> abhängig ist und umgekehrt. Hat jemand eine Idee, wie man das am Besten
> rausrechnet?

Falsch angeschlossen, bzw. falsch angesteuert?
Eigentlich darf das nämlich nicht sein, außer der Widerstand der Fläche 
ist stark ungleichmäßig.

von Meik D. (meik)


Lesenswert?

Angeschlossen wie oben im Thread verlinkt. Es machen auch Beide die 
spirenzchen. Daher hatte ich den Verdacht auch schon mal in die 
Windungen bekommen. Ich werde dem noch mal nachgehen. Mit dem Controller 
ausgewertet hatte ich die Koordinaten noch nicht, nur über zwei 100 OHM 
an 5V angeschlossen und die Spannung gemessen. Bei X blieb die konstant, 
wenn ich von links unten genau diagonal nach rechts oben mit dem Finger 
drübergefahren bin.

Meik

von Christian J. (elektroniker1968)


Lesenswert?

Hier steht wie es geht:

http://www.mcselec.com/index.php?option=com_content&task=view&id=189&Itemid=57

The touchscreen that’s used here is a 4 wire resistive touchscreen. It’s 
not more then 2 big resistors, one with the connection leads to the top 
and the other with the leads to the side. By pressing on the screen your 
making contact between the top and bottom layer. To determine the 
cordinates you read first the x value and then the y value. To say it 
simple;

Touchscreen x read, Set PF0 high and PF2 low and read PF1 or PF3.
Touchscreen y read, Set PF1 high and PF3 low and read PF0 or PF2.

Die sind auch nicht abhängig voneinander, wenn man die richtig 
ansteuert. X+ an Plus, X- an Minus und über Y+ oder Y- auslesen. Die 
andere Seite umgekehrt.

von Meik D. (meik)


Lesenswert?

Habs gerade noch mal angeschlossen und die 5 V an die 500 bzw. 300 OHM 
gelegt(Pin 1+2 bzw. 3+4). Funktioniert! Das hatte ich bei der anderen 
Beschreibung nur irgendwie anders verstanden. Da waren die 5 V an Pin 
1+3 bzw. 2+4.
Jetzt läufts! Danke noch mal für den Denkanstoß.

Meik

von Meik D. (meik)


Lesenswert?

Hallo Christian.
Ich sehe, du hast den entsprechenden Textabschnitt noch einkorrigiert. 
Das meinte ich mit den Pin's. Dann ist die Reihenfolge von oben 
scheinbar PF0, PF2, PF1 und unten dann PF3

Verwirrend.

von TDN (Gast)


Lesenswert?

Hi

>Der Autor dieses Programms hat einen Pinguin so dargestellt:....

>Das muss jemand aus der Sado-Maso-Szene sein.

Sieht für mich wie ne Vektorgrafik aus - Kann je nach Grafik ziemlich 
speichersparend sein...

von Fabian S. (jacky2k)


Lesenswert?

So, ich versuche grade das Teil wenigstens mal zum leuchten zu bekommen 
und scheitere.
Kann man nicht einfach an LED+ und LED- Spannung anlegen und die 
Hintergrundbeleuchtung geht an?
Bei mir tut sich garnichts. Habe die Spannung von 0 bis 5V hochgedreht.
Habe daraufhin alles andere auch noch angeschlossen:
Vss: GND
Vdd: 5V
V0:  5V
CS:  Low
RES: Low
Rest: NC

Und natürlich die LED Pins.
Warum geht das Display nicht an? Irgendwas falsch? Muss ich erst den 
Controller initialisieren damit es muckt?

von Thomas Forster (Gast)


Lesenswert?

@Fabian,

hast du eines mit LED oder EL-Folie?

Bei der EL-Folie ist eine ca. 0,5mm dicke Folie zwischne Display und 
Platine zu sehen.

Dafür brauchst du einen Konverter. Ich habe den "EL-Inverter 08" von 
Reichelt und es leuchtet wunderbar...

von Benedikt K. (benedikt)


Lesenswert?

Fabian S. schrieb:

> Kann man nicht einfach an LED+ und LED- Spannung anlegen und die
> Hintergrundbeleuchtung geht an?

Es gibt bei Pollin verschiedene Versionen. Eine davon hat eine EL Folie.

> Warum geht das Display nicht an? Irgendwas falsch? Muss ich erst den
> Controller initialisieren damit es muckt?

Ja.

von Fabian S. (jacky2k)


Lesenswert?

Ahhh dann bin ich ja schon mal schlauer, da ist eine Folie.
Nun die Frage: Wie viel Saft braucht das Teil?
Habe hier einen 630V oder so von sonner PC Leuchtröhre, geht das damit 
oder würde ich damit was braten???
Das Prob ist, dass die beiden Pins für LED+ und LED- nur 2,54mm 
nebeneinander liegen, 600V würde da glaube ich gerne mal überspringen...
Ahh ich sehe grade unter dem Flachkabel sind noch 2 Pins die scheinbar 
direkt zu dieser Folie führen, die sind auch weiter auseinander, dann 
muss das wohl da ran?

von Thomas Forster (Gast)


Angehängte Dateien:

Lesenswert?

Falls es jemand zum Start nützt: Ich habe am Wochenende mal schnell eine 
Ansteuerung zusammengeschrieben. Das ganze ist in Assembler für einen 
Atmega8 mit internen 1MHz. Der Code ist nur schlampig runtergeschrieben, 
aber es ist ja auch nur als "Starter" gedacht...

Die Abfrage des Touch ist noch nicht drinnen, soll aber noch kommen.

Thomas

von Thomas Forster (Gast)


Lesenswert?

@Fabian

Du brauchst einen EL-Konverter! Die Schaltungen für Kathodenröhren 
funktionieren nicht!

Mein Konverter liefert 120V AC.

von Fabian S. (jacky2k)


Lesenswert?

Nur mal so als Nebenfrage: Wofür steht EL?

von Thomas Forster (Gast)


Angehängte Dateien:

Lesenswert?

So, nun zu meinem Problem:

Ich habe nur einen sehr schwachen Kontrast. Wenn ich weiter "aufdrehe", 
kommen schon die Hintergrundpixel raus.
Die ist aber nur im normalen Betrieb so. Als meine Ansteuerung mal in 
der Initialisierung hängengeblieben ist, hatte ich ein wunderbar 
schwarzes Bild.

Kennt vielleicht jemand das Problem?

Thomas

von gast (Gast)


Lesenswert?

und wenn du deinen text einmalig beschreibst ?? zb vor der main-loop ??

von Christian J. (elektroniker1968)


Lesenswert?

Ich bräuchte noch die Init Sequenz für Textmode, fall die jemand 
hat.....

Falls Du keinen EL Inverter hast: Bei ATU gibts beleuchtete Türleisten 
für Autos, da kann man den ausschlachten. Ist 12V bei mir aber egal, ich 
benutze DC/DC Wandler.

von Meik D. (meik)


Lesenswert?

Thomas Forster schrieb:
> So, nun zu meinem Problem:
>
> Ich habe nur einen sehr schwachen Kontrast. Wenn ich weiter "aufdrehe",
> kommen schon die Hintergrundpixel raus.
> Die ist aber nur im normalen Betrieb so. Als meine Ansteuerung mal in
> der Initialisierung hängengeblieben ist, hatte ich ein wunderbar
> schwarzes Bild.
>
> Kennt vielleicht jemand das Problem?
>
> Thomas

Welche Spannung hängt am Display? Es sollten recht genau 5,0 V sein, 
nicht darunter, sonst schafft der interne Spannungswandler die nötige 
Kontrastspannung nicht.

von Thomas Forster (Gast)


Lesenswert?

Spannung ist gemessen bei 5,05 V.

@gast:
Die Überschrift wird nur einmal am Ende der Reset-Routine geschrieben.
Lediglich der Zähler in der Mitte wird 1 mal pro Sekunde geschrieben.


@Christian:
Meine INIT ist für Textmode. Bascom und C gibts im Netz.


Werde mich heute abend noch mal dransetzen.

von Benedikt K. (benedikt)


Lesenswert?

Hast du vielleicht eine zu hohe Auflösung eingestellt? Also mehr Zeilen 
als das Display hat?

von Thomas Forster (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Benedikt,

ich habe jetzt die gleicehn Einstellungen wie du verwendet und jetzt 
passt der Konrast. Danke!

Anbei nochmal mein abgeänderter Code.

Gruß
Thomas

von Fabian S. (jacky2k)


Lesenswert?

OK, jetzt bin ich vollkommen verwirrt.

Christian schreibt: Ist 12V bei mir aber egal, ich benutze DC/DC 
Wandler.
Thomas schreibt: Mein Konverter liefert 120V AC.
???  AC ODER DC? Beides geht wohl nicht :D
Oder meinte Christian nur, dass er einen DC/DC Wandler von 5 auf 12V 
hat, um damit den 120V AC Inverter zu betreiben?
BTW: Wo issen der Unterschied zwischen Inverter und Konverter? Ist ein 
Inverter nicht ein Konverter?

von Christian J. (elektroniker1968)


Lesenswert?

Hallo,

das ier verstehe ich nicht:

ldi temp1, 2    ;Adresse 2: Anzahl horiz. Zeichen -1
    ldi temp2, 26
    rcall lcd_init_command

(brrr.... Assembler)

Du musst doch die Zeichenzahl so wählen, dass sie in 160 Pixel 
reinpasst. 160 / 27 ist aber ungerade. Meiner Ansicht nach geht da nur 
eine Zeichenfeldgrösse und das ist 8x8 für 20 Zeichen. Zur Auswahl 
stehen 6,7,8, je grösser umso weiter stehen die zeichen auseinander. Der 
Kontroller weiss doch sonst gar nicht wo er die Zeichen setzen soll. Die 
werden doch fortlaufen geschrieben, ist er hinten fertig gehts eine 
Zeile tiefer wieder weiter.

Läuft das denn ????

Nein, ich habe einen kleinen DC/DC Wandler, der aus 5V 5....40V machen 
kann. Der EL Inverter hat 12V Eingang und ca 120 VAC Ausgang. Auf die 
Frequenz kommt es sagte der Mod hier.

von Thomas Forster (Gast)


Angehängte Dateien:

Lesenswert?

> ldi temp1, 2    ;Adresse 2: Anzahl horiz. Zeichen -1
>    ldi temp2, 26
>    rcall lcd_init_command
> Läuft das denn ????

Es sah so wie auf meinem Foto aus: Enge Schrift und mieser Kontrast.

Inzwischen habe ich den Wert nach Benedikts Vorgaben korrigiert. Der 
neue Sourcecode ist 2 Posts darüber.
So sieht es jetzt aus.

Thomas

von Christian J. (Gast)


Lesenswert?

Hi,

habe meines erstmal an Strom und Kontrast gelegt. Ist es normal, dass da 
Streifen übers ganze Bild gehen, die auch beim reset nicht weggehen? 
Display OFF läuft jedenfalls.

Nervig ist das Pfeifen des Inverters, so ein hoher Ton.

von Fabian S. (jacky2k)


Lesenswert?

Und wer verrät mir jetzt noch die Frequenz die der Inverter haben muss? 
:D

von Christian J. (Gast)


Lesenswert?

Schlimm ist auch, dass die Streifen auf der einen Bildhälfte blauer sind 
als die auf der anderen Seite, als wäre das LCD Fluid ungleich verteilt. 
Dabei ist das doch nur ein s/w Display.

Der Hit ist diese EL Folie ja nicht...... funzel

von Christian J. (Gast)


Lesenswert?

100- 1000 Hz

von Benedikt K. (benedikt)


Lesenswert?

Christian J. schrieb:
> Schlimm ist auch, dass die Streifen auf der einen Bildhälfte blauer sind
> als die auf der anderen Seite, als wäre das LCD Fluid ungleich verteilt.
> Dabei ist das doch nur ein s/w Display.

Mach mal ein Foto. Das klingt definitiv nicht normal.

> Der Hit ist diese EL Folie ja nicht...... *funzel*

Ja, die Farben sind meist nicht gerade schön, dunkel sind die auch noch 
und die Lebensdauer ist auch nicht so ganz das optimale. Dafür sind die 
halt schön dünn.

Fabian S. schrieb:
> Und wer verrät mir jetzt noch die Frequenz die der Inverter haben muss?
> :D

Ein paar 100Hz. Die meisten EL Inverter haben 500-1000Hz. Zur Not (also 
zum Testen) gehen auch 50Hz, also z.B. ein kleiner 24V Trafo rückwärts 
an einen 12V Trafo um so 110V zu erhalten.

von Christian J. (elektroniker1968)


Angehängte Dateien:

Lesenswert?

Hi,

scheint aber normal zu sein, wenn ich mit dem Finger über die Kontakte 
gehe ändert es sich. Teilweise ganz lustig, da scrollt es von oben nach 
unten durch. Meine EL ist einfach nur hellgrau.

Reset = H
Display OFF = H

Ich hatte das Display bei Pollin ja reklamiert, weil ich dachte die EL 
sei defekt. Jetzt kriege ich kostenlos ein Neues :-)

von Meik D. (meik)


Lesenswert?

Die Streifen sind nicht normal. Das habe ich bei meinen zweiten auch. 
Zwar nicht so ausgeprägt aber immerhin. Reklamation läuft.
Mal sehn, ob ich mir aus zwei defekten 1 ganzes bauen kann. An mein 
erstes sind mir versehentlich 12V draufgerutscht.....

Meik

von Christian J. (elektroniker1968)


Lesenswert?

Hallo,

bist Du da sicher? Die Daten Pins sind bei mir noch nicht angeschlossen. 
Das Display ist leider fest eingelötet, wollte ich ungern rausreissen. 
Oder liegt es vielleicht nur an der fehlenden Initialisierung, dass das 
Müll im internen Ram steht? Das geht nämlich auch wieder weg, wenn man 
mit dem Finger über die Pins geht.

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

Es scheint mehr als 2 verschiedene Versionen davon zu geben, ich habe 
zumindest jetzt schon 3 verschiedene:
- Links: grünes LED Backlight aber zu 90% defekte Touchscreens, lange 
Stiftleisten (gabs letztes Jahr bei Pollin)
- Mitte: EL, keine Stiftleisten, Touchpad bei mir ok, Folienkabel lötbar
- Rechts: EL, kurze Stiftleisten, war schonmal eingelötet, Touchpad ok, 
aber Folienkabel graphitiert -> nicht einlötbar. Das Displays ist defekt 
(etliche Zeilen sind halb defekt).

@Meik
Hat dein defektes auch die kurze, bereits verzinnte Stiftleiste?
Falls ja dann kann man das wohl als Kriterium für ein Ausschussteil 
verwenden und sollte dieses genauer prüfen.

Unangesteuert zeigt das Display bei richtig eingestellter Spannung 
nichts an. Nur wenn man diese extrem hochdreht kommt irgendein Mist 
raus.

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

So sieht das defekte aus. Wenn man drauf drückt, gehen manche Zeilen an, 
andere aus. Also das übliche Problem mit der Kontaktierung der Leitfolie 
zwischen Platine und LCD.

von Meik D. (meik)


Lesenswert?

Benedikt K. schrieb:
> @Meik
> Hat dein defektes auch die kurze, bereits verzinnte Stiftleiste?
> Falls ja dann kann man das wohl als Kriterium für ein Ausschussteil
> verwenden und sollte dieses genauer prüfen.....

Jupp.
Ist da noch was zu machen mit Heissluft oder Lötkolben?

von Benedikt K. (benedikt)


Lesenswert?

Theoretisch ja, praktisch wirds schwierig.
Reklamieren und ein neues schicken lassen, das dürfte die einfachste 
Lösung sein.

Wenn das Display so liegt wie auf meinem Foto, dann schau mal von links 
auf die Seite. Da ist ein breites Folienkabel das sowohl auf der Platine 
als auch auf dem Display angeklebt ist.
Da kommt man nur schwer ran ohne noch mehr kaputt zu machen.

von Meik D. (meik)


Lesenswert?

Gesehen hatte ich das schon. Ich werden es einfach mal wagen und den 
Lötkolben bei moderater Temperatur drüberstreichen. Die Reklamation 
läuft ja bereits. Über das Ergebnis lasse ich mich dann hier noch mal 
aus.

von Christian J. (elektroniker1968)


Lesenswert?

Also...... jetzt stehe ich vor der Entscheidung das Ding zu verdrahten 
oder es sein zu lassen und auszubauen. Beim Draufdrücken tut sich 
nichts, verändert sich nicht. Zwei zeilen bleiben aber immer weiss.

Pollin..... ein echter Schrotthandel.

von Meik D. (meik)


Lesenswert?

Ich versuch's gleich mal mit dem Lötkolben. Gegen 20:00 Uhr weiß ich 
mehr.

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

...vorher...

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

...nachher...


Geht also. Flache Lötspitze, sauber, 180°

von Christian J. (elektroniker68)


Lesenswert?

Kannst Du mal sagen, was Du da gelötet hast? Bei mir sind auch Streifen, 
die nicht weggehen.

Habe grad nochmal mit Pollin telefoniert, die bestätigten mir, dass da 
recht viel reklamiert wurde und wollen das prüfen. Es gehe leider nicht 
10 Stück zu bestellen und dann 9 zurückzusenden :-)

Ich habe denne allerdings auch mal auf die Füsse getreten, dass die ihre 
Waren zu kontrollieren haben, es kann nicht sein, dass die aus 
Elektroschrott, der aussortiert wurde noch Geld machen.

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

Hallo Christian.
Der Folienleiter an der Seite muss erhitzt werden. Am Besten von oben 
nach unten alle erhitzen. Wenn man nämlich einmal anfängt, lösen sich 
die benachbarten, gerade noch so anhängenden Kontakte, durch die 
Wärmeausdehnung der Platine auch noch ab.

Christian J. schrieb:
> ... es kann nicht sein, dass die aus
> Elektroschrott, der aussortiert wurde noch Geld machen.

Das ist glaube ich die Geschäftsgrundlage von Pollin. Zeugs, was keiner 
haben will, für wenig Geld anbieten.

von Christian J. (elektroniker1968)


Angehängte Dateien:

Lesenswert?

Hallo,

heute kam mein Ersatzdisplay an nach der Reklamation: Ein nagelneues 
Display, Original verschweisst vom Hersteller. Allerings habe ich denen 
auch Druck gemacht, dass ich 10 bestellen werde und 9 zurücksende.

Es geht doch :-)

von Benedikt K. (benedikt)


Lesenswert?

Das ist das Display wie ich auch eins habe. Bei dem kann man wunderbar 
auf dem Folienkabel löten.

von Christian J. (elektroniker1968)


Lesenswert?

Dafür habe ich einen alten ISA Slot zerschnitten, mit einer Platine auf 
das Folienkabel geklebt und reingeklemmt klappt das wunderbar.

von Torsten K. (nobby)


Lesenswert?

Hallo,

ich glaube ist stehe beim Display etwas auf dem "Schlauch", vielleicht 
kann mir hier jemand helfen.
Ich verstehe bei dem Datenblatt nicht ganz, wo da welche Spannung ran 
soll. Was für eine Spannung kommt an Pin 2, 3 und 17.
Wo stelle ich den Kontrast ein ?

Gibt es hier auch einen C-Code für die Ansteuerung für das Display ?

Danke
Torsten

von Hannes Lux (Gast)


Lesenswert?

Nungut, da sich kein Profi meldet werde ich mal mein unverifiziertes 
Halbwissen verkünden: ;-)

> Was für eine Spannung kommt an Pin 2, 3 und 17.

Pin 2 müsste Vcc (+5V) sein
Pin 3 sollte Kontrastspannung (-) sein

Pin 17 ist laut Datenblatt "Negative Voltage Output(-10V)", ist also der 
Ausgang des internen Spannungswandlers zum Erzeugen der 
Kontrastspannung.

> Wo stelle ich den Kontrast ein ?

Mit einem Poti zwischen Pin 17 und GND, Schleifer an Pin 3.

> Gibt es hier auch einen C-Code für die Ansteuerung für das Display ?

Hier habe ich was gefunden:
http://www.frozeneskimo.com/samsunglcd/avr-lc7981-v1/
Ich habe es allerdings nicht getestet, ich habe auch gar keinen 
C-Compiler installiert. Ich erhoffe mir damit nur Tipps für eigene 
ASM-Routinen, hatte aber bisher noch keine Zeit dazu.

...

von Torsten K. (nobby)


Lesenswert?

Oh weia, ja, besten Dank.

Das hat ganz schön gekracht, als mir eben das Brett vom Kopf abgefallen 
ist :-)

Output = Ausgang, sicher, deswegen habe ich auf einem Bild auch ein 
Kabel von Pin 17 zu Pin 3 gesehen....

In einen Roboterforum gibts auch nen Bild, wo dann die Koordinaten im 
Display stehen, wenn ein Touch kam, aber den Code habe ich nicht 
gesehen.

Vielleicht macht es Sinn, mal aktiv in der Richtung zu werden, inkl. 
Anschlußplan für Display und Touch. Ich werde mal die nächsten Tage was 
versuchen.
Denn auch der Anschluß vom Touchpad ist mir nicht klar. Da werden immer 
alle 4 Anschlüsse an den Prz. gelegt, sollte es nicht reichen, wenn nur 
2 angeschlossen werden ? Die anderen 2 dann an Masse und der PullUp vom 
Eingang am Proz. aktiv.

Gruß
Torsten

von Hannes Lux (Gast)


Lesenswert?

> Denn auch der Anschluß vom Touchpad ist mir nicht klar. Da werden immer
> alle 4 Anschlüsse an den Prz. gelegt, sollte es nicht reichen, wenn nur
> 2 angeschlossen werden ? Die anderen 2 dann an Masse und der PullUp vom
> Eingang am Proz. aktiv.

Hier wieder nur unverifiziertes Halbwissen:
Ich denke, es wird nix mit nur 2 Anschlüssen...
Der Touchscreen enthält ja (stark vereinfacht) zwei Potis, deren 
Schleifer beim Tatschen zusammengeschaltet werden, aber nicht 
herausgeführt sind.

Um nun die Waagerechte zu messen, wird die Waagerechte an Spannung und 
GND gelegt, die Senkrechte potentialfrei gemacht und per ADC gemessen.

Um die Senkrechte zu messen, wird die Senkrechte an Spannung und GND 
gelegt, die Waagerechte von Spannung und GND getrennt und per ADC 
gemessen.

Um zwischen Unbetätigt und Betätigung am Rand unterscheiden zu können, 
muss jedem Zweig noch ein Widerstand in Reihe geschaltet werden, damit 
der "Rand" eben nicht am Widerstandsende liegt. Der interne PullUp kann 
für definierten Wert beim Nichtbetätigen sorgen.

Die einfachste Lösung dürfte also sein, für jede Achse einen ADC-Pin und 
einen Normalpin zu verwenden. Der ADC-Pin wird dann zwischen ADC-In mit 
PullUp und Output mit H-Pegel umgeschaltet, der Normalport zwischen 
Input ohne PullUp (also hochohmig) und Output mit L-Pegel.

Aber wie gesagt, alles hypothetisch, ich habe mit dem Ding noch nichts 
gemacht (außer Widerstandswert des Touchscreens ausgemessen).

...

von J. K. (rooot)


Lesenswert?

bezüglich Touch kann ich folgendes AppNote empfehlen:
http://www.atmel.com/dyn/resources/prod_documents/doc8091.pdf

im Roboternetz haben sie auch zu dem Thema einiges
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=43741&postdays=0&postorder=asc&start=0

wenn du den ganzen Thread anschaust findest du auch Schaltplan+Code

mfg
J.K.

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

Für alle die das LCD mal schnell testen wollen (inkl Touchpad), hier ein 
kleines Testprogramm für einen mega8. Fusebits auf 8MHz internen Takt 
einstellen, sonst wird alles etwas langsam.

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

Die Anschlussbelegung dazu. Die ganzen Cs an Spannung, ARef, 
Resetbeschaltung usw. habe ich jetzt im Schaltplan weggelassen.
Mit dem Taster wird das Bild gelöscht.

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

Und wenn dann alles läuft, dann kann man auf dem Display etwas malen...

von Torsten K. (nobby)


Lesenswert?

Klasse, mein Display funktioniert, mit Touch !!

Ist übrigens das Mittlere aus Benedikts Bild. War in schwarzer Tüte 
verpackt und am 20pol unverlötet. Am Touch-Stecker waren leichte Spuren 
zu sehen, vielleicht vom Test ? Ich habe da jetzt eine 
Pfostenstiftleiste drangelötet.

Gruß

von J. K. (rooot)


Lesenswert?

@Benedikt K.

könntest du keinen Code posten? Ich hab auch das Display, und es 
funktionert nicht. Ich bin mir nicht sicher ob das Ding kaputt ist, oder 
beim code was nicht passt.

Genau in der mitte des lcd verläuft ein schwarzer dünner streifen, sonst 
tut sich nichts.

Das hex-file kann ich nicht werwenden, da ich einen Mega16 habe, und 
einen anderen Port verwende.

MfG
J.K.

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

Na gut. Er ist aber nicht wirklich kommentiert und ich behaupte nicht 
dass er fehlerfrei ist.
Mit dem angezeigten Testbild sollte man gut erkennen können, ob das 
Display ok ist.

von J. K. (rooot)


Lesenswert?

So, hab jezt nichts geändert, aber plötzlich wirg gar nichts mehr 
angezeigt.

Ich hätte da noch ne Frage bezüglich

Pin 15 Chip Enable Active "L"
Pin 16 Reset Active "L"

Das bedeutet das beide Activ los sind?!
demnach müstte pin 15 "LOW
und pin 16 "HIGH" im Betrieb sein oder?

hab ich das Richtig verstanden?
Laut datenblatt sollten beide den Level "L" haben, was für mich aber 
wenig Sinn ergibt.

Datenblatt:
http://www.pollin.de/shop/downloads_suchergebnis.php?fp=OA==&pg=NQ==&a=MzU2OTc4OTk=

Edit:
Danke, für den Code, war grad beim tippen, als du ihn gepostet hast.

MFG
J.K.

von Benedikt K. (benedikt)


Lesenswert?

J. K. schrieb:

> Das bedeutet das beide Activ los sind?!
> demnach müstte pin 15 "LOW
> und pin 16 "HIGH" im Betrieb sein oder?

Ja.
Das Datenblatt gibt an, welche Pegel die entsprechende Funktion 
auslösen.

von J. K. (rooot)


Lesenswert?

bezüglich dem code:

was für einen compiler verwendest du?

was ist das für eine portpins.h datei?

EDIT: portbits.h mein ich

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

Ich verwende WinAVR, die portbits.h liegt bei mir im WinAVR Verzeichnis, 
daher vergesse ich die immer hinzuzufügen.

Damit kann man Pins direkt ansprechen wie z.B. PORTD_2=1;
Das ist besonders interessant wenn man Pins über defines festlegt.

von J. K. (rooot)


Lesenswert?

Cool, das Display funktioniert!

Danke für die Hilfe!

MFG
J.K.

von Hannes Lux (Gast)


Angehängte Dateien:

Lesenswert?

@Benedikt:
Danke für das Testprogramm. Ich habe nun auch ein funktionierendes LCD, 
aber auch 4, bei denen Zeilen fehlen. 8-(

Ich bewundere die Präzision der Auswertung des Touchscreens. Inzwischen 
habe ich einen besseren Stift gefunden und die Schutzfolie vom Display 
entfernt, da zeichnet es sich gleich viel besser.

...

von Nietzsche_g (Gast)


Lesenswert?

Hm, irgendwie stehe ich heftig auf dem Schlauch mit diesem 
Touchscreen... Da sind 4 Anschlüsse... Welcher ist denn nun x+, x-, y+, 
y-?? Ich bekomm das nicht hin.....

von Benedikt K. (benedikt)


Lesenswert?

Wenn du das Display von vorne betrachtest, so dass die Stiftleiste 
unten, der Touchpadanschluss also rechts ist, dann sind die beiden X 
Anschlüsse unten (also näher an der Stiftleiste) und die beiden Y oben.

von Hannes Lux (Gast)


Lesenswert?

> Welcher ist denn nun x+, x-, y+, y-??

Das sieht man doch an den Leiterzügen der Touchfolie (oben, unten, 
rechts, links).

...

von Nietzsche_g (Gast)


Lesenswert?

Bist du sicher? Also irgendwie ist das total merkwürdig... Bei eineigen 
Anschlussbwlegungen kommt "Calibration Failed", und wenn ich mal ne 
Belegung finde, die klappt, malt er ganz komisch... also momentan z.B. 
malt er von links nach rechts, wenn ich von oben nach unten fahr...

von Benedikt K. (benedikt)


Lesenswert?

ADC0-3 haben die gleiche Reihenfolge wie die Pins am Display, oben am 
Display, also entgegengesetzt der Stiftleiste angefangen.

von Hannes Lux (Gast)


Angehängte Dateien:

Lesenswert?

Vielleicht hilft das Bild meiner Testplatine bei der Orientierung.

...

von Thorsten E. (nietzsche)


Lesenswert?

Okay, ich habs hinbekommen...

Ich hatte auch eines der Displays mit bereits eingelötetet 
Pfostenleiste... Auch bei meinem gingen einige Zeilen nicht... Nach 
einer kleinen Starthilfe mit dem Lötkolben funktioniert es nun... Ich 
habe 3 Stück gekauft, und alle 3 mussten bearbeitet werden...

Wie auch immer, letztendlich funktionieren sie, und für knappe 7 
Schlappen pro Stück durchaus eine gute Investition...

von Allu (Gast)


Angehängte Dateien:

Lesenswert?

Nach einer etwas abenteuerlichen Reparatur funktioniert mein Touch jetzt 
auch!

Das Ohmmeter zeigte an dem Original-Folienkabel in beiden Richtungen 
(Pins 1 und 3 , 2 und 4) etwas an, ließ sich aber nicht mit dem 
Testprogramm kalibrieren. Mit der "Lötkolbenmethode" habe ich dann dem 
Folienkabel den Rest gegeben. Darum der Versuch mit lackisoliertem 
Kupferdraht.

Danke an Benedikt für die Testprogramme.

von Allu (Gast)


Angehängte Dateien:

Lesenswert?

Kupferdrähte  --  Touch-Folie

von Paul B. (paul_baumann)


Lesenswert?

Mein Konterfei hätte ich an Deiner Stelle aber nicht auf dem Display
anzeigen lassen. Es könnte Dich jemand erkennen, dann nutzt auch ein
Nickname nichts mehr. ;-))

MfG Paul

von Allu (Gast)


Lesenswert?

Hallo Paul,
es gibt sicher Ähnlichkeiten, vor allem so um die Bauchgegend, bin ich 
aber dann doch nicht. Das ist mein UFO-Männchen, das habe ich mal vor 
Jahrzehnten erfunden -- ich glaube so um die Osterzeit.
Viele Grüße
Alex

von A. N. (netbandit)


Lesenswert?

Nein, das ist doch ein Bug! Das erkannt man an den Fühlern ;)

Ja eine wirklich abenteuerliche Verkabelung, aber am Ende ist es 
wichtig, dass es Funktioniert.

von E.f. K. (sead23)


Angehängte Dateien:

Lesenswert?

@Bendedikt:
Vielen Dank auch.
Ich hab meins gestern zum laufen bekommen.
Habs zuerst von der STK versucht, das ging dann nicht, aber dann halt 
extern.
Wie ist das eigentlich, RXD ist ja jetzt besetzt, kann ich das irgendwie 
ändern, oder ist das wichtig. Ich würd da gern Daten anzeigen lassen, 
die über die Schnittstelle kommen und dann bräucht ich wohl auch nen 
Quarz, oder?

Im übrigen geht das mit den Kohleanschlüssen ziemlich gut mit so einem 
Platinenstecker, und einem stück Platine als Unterlage. Hat auch bei mir 
zufällig das gleiche Rastermaß. Glaub das war mal von nem alten Floppy 
oder so.

Gruß, E

von Benedikt K. (benedikt)


Lesenswert?

E.f. K. schrieb:
> Wie ist das eigentlich, RXD ist ja jetzt besetzt, kann ich das irgendwie
> ändern, oder ist das wichtig. Ich würd da gern Daten anzeigen lassen,
> die über die Schnittstelle kommen und dann bräucht ich wohl auch nen
> Quarz, oder?

Ja, das ist dumm beim mega8: Sowohl der 8bit Port PortD als auch der 
8bit Port PortB werden für den UART benötigt.
Allerdings ist der mega8 eindeutig der am weitest verbreite Controller, 
den jeder hat, daher verwende ich den gerne für solch eine Testsoftware.
Egal, Back to topic:
Weiter oben gibts die Zip mit dem Sourcecode, da musst du die Ausgabe 
auf den 8bit Port anpassen indem du z.B. bit 0 und 1 auf einen anderen 
Port verschiebst.

von Mkay (Gast)


Lesenswert?

Hallo,

ich habe mir auch zwei der Displays zugelegt und Benedikts Code 
verwendet, um etwas auf dem Display darzustellen. Ich habe allerdings 
ein Problem, was ich trotz längerer Suche via Google und Lesen von 
Tutorials nicht lösen konnte. Wahrscheinlich total simple.

Ich will mit Benedikts lcd_writestringP() Funktion einfach nur einen 
String ausgeben, der nicht bei Compilezeitpunkt feststeht, sondern den 
ich nachher mit snprintf bzw. sprintf selber zusammenbaue.

Normalerweise ist das recht einfach zu lösen, aber leider weiß ich 
nicht, wie ich das handhaben muss, wenn man mit pgmspace.h arbeitet.

char buffer[20];
snprintf(buffer, sizeof(buffer), "%d %d", x, y);
lcd_gotoxy(20,35);
lcd_writestringP(buffer);

zeigt mir garnichts an. Auch sämtliche Variationen, die ich so im 
Internet finden konnte, haben mich nicht weitergebracht. Genauso wenig 
das GCC Tutorial hier. Wäre klasse, wenn mir da jemand einen Tipp geben 
könnte, denn so langsam nervt es doch gewaltig, an so einem Miniproblem 
festzustellen. Danke :\

von Dirk B. (garag)


Lesenswert?

Hallo MKay,

die Funktion lcd_writestringP() liest den String aus dem Flash. Was du 
brauchst ist eine neue Funktion, welche die einzelnen Zeichen aus dem 
RAM mittels lcd_writechar() ausgibt. Könnte ungefähr so aus sehen:
1
void lcd_writestring(const char *string)
2
{
3
  char c;
4
  for(;;)
5
  {
6
    c = *string++;
7
    if (!c)
8
      break;
9
    lcd_writechar(c);
10
  }
11
}

Gruß
Garag

von Mkay (Gast)


Lesenswert?

Ahhhh, dann habe ich die Funktionsweise etwas missverstanden. Ok, dann 
macht das alles auch wieder mehr Sinn. Dankeschön :)

von Stefan (Gast)


Lesenswert?

Hallo,
ich wollte mir das Display bei Pollin bestellen.
Allerdings habe ich keine Wechselspannung. Deshalb wollte ich fragen, ob 
man das Display auch ohne EL(das ist doch die Hintergrundbeleuchtung, 
oder?) betreiben kann?

von Benedikt K. (benedikt)


Lesenswert?

Stefan schrieb:
> Allerdings habe ich keine Wechselspannung. Deshalb wollte ich fragen, ob
> man das Display auch ohne EL(das ist doch die Hintergrundbeleuchtung,
> oder?) betreiben kann?

Ja und ja.

von cyno (Gast)


Lesenswert?

Hiho,

ich habe mir auch das hier diskutierte Display zugelegt und habe 
mittlerweile auch eine funktionierende Software mit Touch-Funktion, 
basierend auf der Software aus dem folgenden Beitrag im 
Roboter.net-Forum, zusammengestrickt.
http://www.roboternetz.de/phpBB2/viewtopic.php?p=442705#442705

Nun musste ich allerdings feststellen, dass die Positionserfassung des 
Touchpanels furchtbar unpräzise ist (in der Mitte des Displays ist es 
einigermassen genau - je näher man allerdings dem Rand kommt, desto 
schlechter wirds). Da hier im Thread mehrmals von einer hohen Präzision 
bei dem Display die Rede war(z.B. hier: 
Beitrag "Re: Display mit Touchscreen bei Pollin?"), vermute ich das 
die Software noch eine Art Kalibirierungsalgorithmus o.ä. benötigt. Kann 
mir hier jemand weiterhelfen?
Arbeitet der hier gepostete Code eventl. mit so etwas in der Art?

Vielen Dank schonmal für jegliche Auskunft.

Gruß,
cyno

von Benedikt K. (benedikt)


Lesenswert?

cyno schrieb:
> Da hier im Thread mehrmals von einer hohen Präzision
> bei dem Display die Rede war(z.B. hier:
> Beitrag "Re: Display mit Touchscreen bei Pollin?"), vermute ich das
> die Software noch eine Art Kalibirierungsalgorithmus o.ä. benötigt.

Ja.

> Arbeitet der hier gepostete Code eventl. mit so etwas in der Art?

Ja.
Es ist eine einfache 2 Punkte Messung + Geradengleichung, also Steigung 
+ Offset ausrechen:
Du misst einen bekannten Punkt in 2 gegenüberliegenden Ecken.
Der eine Wert ist der Offset. Somit liegt der Nullpunkt fest. Der andere 
Wert skaliert nun die Werte auf die gewünschten Maximalwerte. Fertig.

von cyno (Gast)


Lesenswert?

Ah, ok. Danke für diese Anleitung. Ich hatte gerade eine ähnliche Idee 
mit drei Punkten - das wäre aber wohl komplizierter geworden. :)

von MichiB (Gast)


Lesenswert?

Hallo zusammen,

habe das Display erfolgreich mit meiner eigenen Software in Betrieb 
genommen (LCD und Touch funktionieren).

Jetzt zu meiner eigentlichen Frage:
-  Ist es normal, dass man bei nicht berührten Display Koordianten
   von ca. 1/3 Xmax und 1/3 Ymax erhält?
-  Wenn ja, wie habt ihr dies per Software unterdrückt?

Danke!

von Benedikt K. (benedikt)


Lesenswert?

MichiB schrieb:

> Jetzt zu meiner eigentlichen Frage:
> -  Ist es normal, dass man bei nicht berührten Display Koordianten
>    von ca. 1/3 Xmax und 1/3 Ymax erhält?

Ja. Jeder Wert zwischen 0 und max wäre ok, denn die Eingänge sind ganz 
einfach offen und deren Wert somit zufällig.

> -  Wenn ja, wie habt ihr dies per Software unterdrückt?

Messen ob zwischen beiden einen Verbindung besteht, also eine Folie an 
GND legen, die andere über Pullup an einen Pin. Ist der Pin Low, wird 
gedrückt, ist er high, dann nicht.

von MichiB (Gast)


Lesenswert?

@Benedikt K.

Geniale Idee, danke!

von juppi (Gast)


Lesenswert?

Hallo

Wird die Negative Spannung an Pin 17 (-10V)
erst nach der Initialisierung des Displays erzeugt?

Kann man ohne Init an Pin3 (Kontrast) eine Negative U bis 10V
zu Testzwecke anlegen um ein Pixelgewirr anzuzeigen?
Grober Funktionstest.

Wenn ich die Init über den Paraport des PCs mache,geht das oder
gibt es Timing Probleme?

Es geht eigentlich nur um einen schnellen FunktionsTest!

Gruß und Danke

von Sascha W. (sascha-w)


Lesenswert?

Hallo

> Wird die Negative Spannung an Pin 17 (-10V)
> erst nach der Initialisierung des Displays erzeugt?
die liegt immer an

> Kann man ohne Init an Pin3 (Kontrast) eine Negative U bis 10V
> zu Testzwecke anlegen
wenn du wills - aber nur wenn das Diplay auch sonst mit Strom versorgt 
wird

> um ein Pixelgewirr anzuzeigen?
> Grober Funktionstest.
wirst wohl nix sehen, da es ein Bit im ModeControl-Reg gibt mit dem man 
das Display an/ausschalten kann

> Wenn ich die Init über den Paraport des PCs mache,geht das oder
> gibt es Timing Probleme?
kann ich nix zu sagen

Sascha

von juppi (Gast)


Lesenswert?

Hallo
Neg.U an Pin 17 nur -2,4 V.
Das Display wird dunkel.
Leider geht bei einem (von3) die Neg.U nicht.

Jetzt muß ich aus den Postings erst mal die Init Routine rausfummeln.
Ist ja leider AVR und C, beides mache ich nicht(noch nicht )

...oder hat einer eine Tab.
Datenbyte   Steuersignale
Datenbyte   Steuersignale
Datenbyte   Steuersignale
Datenbyte   Steuersignale
.....-----....------

Gruß und Danke

von guest (Gast)


Lesenswert?

durch diesen thread habe ich mir anfang der woche auch eines der pollin 
displays bestellt. leider verweigert es seinen dienst.

ich habe es nun mit benedikts testprogramm versucht und mit den hier 
verlinkten libs aus dem roboternetz.

es funktioniert weder das eine, noch das andere. egal was ich mache, das 
display zeigt wenn überhaupt nur ein paar vereinzelte streifen an immer 
neuen stellen.

in benedikts code habe ich lediglich die ports angepasst da das ganze 
bei mir auf einem mega32 laufen soll. die verkabelung habe ich nun schon 
x-mal durchgepiepst. sie ist in jedemfall so, wie ich es im programm 
definiert habe. ausserdem habe ich die F_CPU auf 16mhz angepasst. das 
programm sollte doch eigentlich trotzdem laufen und wenigstens des 
Testtext ausgeben? Die touchfolie habe ich schon garnicht angeschloßen 
da sie für mich uninteressant ist.

ich habe das, auf den fotos hier im thread, ganz rechte display 
geschickt bekommen. das mit der bereits verlöteten stiftleiste + graphit 
folienleiter. muss ich davon ausgehen das es defekt ist? bekomme ich 
dann nach der reklamation wieder das selbe ramsch display oder kann ich 
hoffen das es vielleicht sogar das auf den fotos linke display wird was 
wohl meistens seinen diest tut? oder kann noch ein anderer fehler schuld 
an meinem problem sein?

von Werner B. (werner-b)


Angehängte Dateien:

Lesenswert?

1. Wenn ich von Problemen mit ATmega32 höre denke ich als erstes immer 
an "Port C und JTAG Fuse".
Ist das Disaplay am Port C ? - Ist dann JTAG deaktiviert?

2. Aus eigener (peinlicher) Erfahrung: Prüfe noch einmal genau deine 
Verdrahtung (Ohmmeter und PINxy == LCDFunktion).

3. Ich hätte noch einen (stark) modifizierten Roboternetz Code der hier 
auf einem ATmega32 läuft. Teste doch erst mal den.

Viel Erfolg
Werner

von Markus R. (maggus)


Lesenswert?

Ich habe auch das ganz rechte Display geliefert bekommen und meins 
funktionierte von Anfang an einwandfrei (sowohl das Display selbst als 
auch der Touchscreen). Falls einzelne Zeilen bei der Anzeige fehlen, 
kannst du versuchen den Folienleiter auf der linken Seite des Displays 
mit dem Lötkolben (225°C und saubere, flache Lötspitze) "aufzubügeln" 
(leichter Druck, gleichmäßiges bügeln aller Leiter). Ist die Temperatur 
zu hoch, schmilzt der Folienleiter. So habe ich vor einiger Zeit ein 
solches Display geschrottet, an der "Leiche" ;) konnte ich dann die 
richtige Temperatur ausprobieren.

Zuerst solltes du natürlich die Ratschläge von Werner probieren, wenn 
das mit dem Bügeln auch nichts hilft würde ich es zurückschicken, 
anscheinend bekommt man dann ja ein original Verschweißtes.

von Hannes Lux (Gast)


Lesenswert?

> wenn
> das mit dem Bügeln auch nichts hilft würde ich es zurückschicken,

Naja, nach dem Herumbasteln würde ich es nicht mehr zurückschicken. Das 
könnte nach hinten losgehen, falls man die Spuren sieht.

Ich habe vor einigen Monaten 4 (von 5) LCDs wegen ausgefallener Zeilen 
reklamiert, die wurden mir problemlos umgetauscht. Die Ersatz-LCDs waren 
dann fehlerfrei, hatten allerdings kleine Kratzer auf dem Touchscreen 
(vermutlich beim Transport oder Lagern als Schüttgut behandelt...). Die 
Touchscreens funktionieren aber mit Benedikts Testprogramm korrekt.

...

von Leo C. (rapid)


Lesenswert?

Ich habe auch 2 von den rechten im Bild bekommen. Eines hatte Aussetzer, 
die sich änderten, je nachdem wo ich auf das Glas gedrückt hatte.
Wenn man auf die kurzen Kanten schaut, sieht man, das die Leitgummis, 
die das Glas mit der Platine verbinden sollen, zur Hälfte auf der 
EL-Folie stehen. Da wunderts mich, daß überhaupt etwas funktioniert.

Ich habe den Blechrahmen durch Unterlegen unter die untere mittlere 
Lasche etwas fester angezogen. Läuft jetzt einwandfrei.

Danke an das Forum hier. Besonderen Dank an Benedikt für sein 
Testprogramm.

Leo

von Markus R. (maggus)


Lesenswert?

Hannes Lux schrieb:
> Naja, nach dem Herumbasteln würde ich es nicht mehr zurückschicken. Das
> könnte nach hinten losgehen, falls man die Spuren sieht.

Natürlich sollte man es nicht zurückschicken, wenn man den Folienleiter 
total verkokelt hat. Nach dem Bügeln mit normalem Druck konnte ich aber 
opitsch keinen Unterschied zu vorher feststellen.

von Wolfgang-G (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe die Anzeige sowohl im Grafik- als auch im Textmodus zum Laufen 
gebracht.
2 Fragen:
1)
@Benedikt
In LC7981_simple.zip/L7881.c gibt es ein Unterprogramm
void lcd_writechar(unsigned char b)

welches wahrscheinlich der Darstellung von Textzeichen dient, die in der 
Datei „6x8_horizontal_MSB_1.h“ stehen.
Was passiert in der Zeile c=pgm_read_byte(&...
insbesondere was bedeutet  pgm_read_byte ?


2)
Der Touchscreen scheint funktionstüchtig zu sein.
Hat jemand ein Programmschnipsel zur Erfassung der Widerstandswerte und 
der allgemeinen Auswertung eines  Touchscreen bzw. einen Hinweis, wo man 
dazu etwas nachlesen kann?

MfG

von guest (Gast)


Lesenswert?

@werner

Also die JTAG Fuses kenne ich und die sind ausgeschaltet. Das ist nicht 
der Fehler. Ich werde bei Gelegenheit nochmal deinen Code probieren. Ich 
denke aber ich werde das Display trotzdem tauschen lassen. Denn bei voll 
aufgedrehtem Kontrast fehlen einzelne Zeilen im ansonsten dunklen 
Kasten.

von gs (Gast)


Lesenswert?

Hallo,
durch meinen Urlaub bin ich erst jetzt dazu gekommen mein Display an den 
Atmega8 mittels dem Testprogramm von Benedikt anzuschließen. Leider 
bleibt das Programm aber bei der Kalibrierung hängen! Ich messe aber 
zwischen x+ und x- sowie zwischen y+ und y- 340 bzw. 420 Ohm. Daher 
sollte das TouchPad doch eigentlich klappen.
Kann mir einer einen Tipp geben wie ich weiter prüfen kann?

von Benedikt K. (benedikt)


Lesenswert?

Wolfgang-G schrieb:
> welches wahrscheinlich der Darstellung von Textzeichen dient, die in der
> Datei „6x8_horizontal_MSB_1.h“ stehen.

Genau.

> Was passiert in der Zeile c=pgm_read_byte(&...
> insbesondere was bedeutet  pgm_read_byte ?

Damit wird ein Byte aus dem Flash gelesen.

> Hat jemand ein Programmschnipsel zur Erfassung der Widerstandswerte und
> der allgemeinen Auswertung eines  Touchscreen bzw. einen Hinweis, wo man
> dazu etwas nachlesen kann?

Hier und in den folgenden Posts steht eigentlich alles notwendige drin:
Beitrag "Re: Display mit Touchscreen bei Pollin?"

gs schrieb:
> Leider
> bleibt das Programm aber bei der Kalibrierung hängen! Ich messe aber
> zwischen x+ und x- sowie zwischen y+ und y- 340 bzw. 420 Ohm. Daher
> sollte das TouchPad doch eigentlich klappen.

Bleibt das Programm hängen, oder kommt "Calibration failed!"?
Wenn es hängen bleibt, dann erkennt es den Druck auf das Pad nicht, was 
darauf hindeutet, dass das Touchpad nicht richtig angeschlossen ist.
Ansonsten ist das Touchpad sehr nichtlinear, was auf ein 
Kontaktierungsproblem hindeutet.

von guest (Gast)


Angehängte Dateien:

Lesenswert?

nochmal @werner
habe mal ein foto gemacht. bisher kam mit deinem programm noch am 
meisten aufs display ;) allerdings nichts gescheites. verkabelt ist das 
display genau wie in deinem programm vorgegeben. habe also nichts 
geändert. kann man anhand des bilds sagen obs defekt ist oder obs an der 
software liegt?

von Benedikt K. (benedikt)


Lesenswert?

guest schrieb:
> kann man anhand des bilds sagen obs defekt ist oder obs an der
> software liegt?

Da es immerhin was anzeigt, liegt es an der Software oder an der 
Verdrahtung.
Die leeren Zeilen in der unteren Hälfte können defekte Zeilen sein, 
genau kann man das aber erst sagen wenn die Software richtig 
funktioniert und was sinnvolles anzeigt.

von Wolfgang-G (Gast)


Lesenswert?

Benedikt K. schrieb:
>Damit wird ein Byte aus dem Flash gelesen.
Mit Flash kann ich im Moment nichts anfangen.
Ist das etwas AVR-spezifisches?  Ich verwende als µC den MSP430
MfG

von Hannes Lux (Gast)


Lesenswert?

> Mit Flash kann ich im Moment nichts anfangen.

Das ist der (nichtflüchtige) Programmspeicher, also das ROM, das sich 
mit moderner Flash-Technologie löschen und neuprogrammieren lässt.

...

von Sigint 112 (sigint)


Lesenswert?

Hallo zusammen,
  ich hab mir jetzt auch bei Pollin ein paar Touchscreens gekauft und 
bin begeistert, wie viel Leistung die zu diesem geringen Preis bieten. 
Da gibts ja keinen Grund mehr Textdisplays zu kaufen. Anbei noch ein 
kleines Video von meinen Experimenten:

http://www.youtube.com/watch?v=sNsAVHd187I

Ich möchte mich bei allen für die vielen, hilfreichen Tipps bedanken. 
Anscheinend kann man mit einem Lötkolben und etwas Geduld fast jeden 
Defekt am Display beheben :-)

Gruß,
  SIGINT

von Michael U. (amiga)


Lesenswert?

Hallo,

Sigint 112 (sigint); gibt es dazu Sourcen zum Reinschauen und Benutzen?
Ich habe mir zum Rumspielen gerade den SI4735 Radiochip geleistet und 
will das mit dem Pollin-Display kombinieren.

Da hätte ich schon einen Teil des Programms... ;-)

Der SI4735 mach ja auch noch einiges an Beschäftigung. :-)

Gruß aus Berlin
Michael

von Sigint 112 (sigint)


Angehängte Dateien:

Lesenswert?

@Michael:
  Ja, hier sind die Sourcen. Hab mir ein paar Sachen aus anderen 
Projekten ausgeliehen (Font, Bresenham Line Algo,Defines) aber der Rest 
ist von mir.
Ist aber noch verbesserungswürdig und alles andere als fehlerfrei. Man 
kann Gimp einsetzen um XBM-Bilder für das Display zu erstellen. Die 
lassen sich sehr einfach darstellen.

Gruß,
  SIGINT

von Michael (Gast)


Lesenswert?

Hallo,

nachdem ich den Thread schon eine Weile beobachtet habe, habe ich mir 
vor kurzem auch solch ein Display bestellt.
Dank des Quellcodes von Benedikt K. und der Bügeltechnik habe ich es 
auch schnell zum Laufen bekommen.

Nun ist es allerdings so, dass der Bildaufbau nur sehr langsam von 
statten geht. Ich kann problemlos zuschauen, wie sich ein Button (Text 
mit Rahmen drum) aufbaut.
Liegt das am Display, oder ist der Controller am langsamen Aufbau 
schuld?

Ich verwende ein ATmega168 mit 8 MHz internem Takt und deaktivierter 
CKDIV8 fuse.

von Benedikt K. (benedikt)


Lesenswert?

Eigentlich sollte sich das ganze ziemlich flott gehen, den Aufbau von 
Text sollte man eigentlich garnicht sehen, so schnell sollte es gehen.

von Michael (Gast)


Lesenswert?

alles klar, dann muss sich bei mir wohl ein Fehler eingeschlichen haben. 
Beim schreiben von Text sieht es so aus, als ob jemand relativ flott 
Tippt.

Danke für die Antwort

von MichiB (Gast)


Lesenswert?

Hallo,

hat vielleicht jemand ein Datenblatt mit den korrekten Abmaßen zur Hand?

Danke!

von gadgaet (Gast)


Lesenswert?

Heute sind meine 2 Displays gekommen. Scheinen welche von Variante Nr. 3 
zu sein.Die Touchscreens funktionieren bei mir einwandfrei.
Ein Display funktioniert einwandfrei, beim anderen fehlen Zeilen. Welche 
Methode wäre die beste, das Teil zum Funktionieren zu bringen? Mit dem 
Bügeleisen oder Lötkolben oder was anderes? Ich habe leider keinen 
Lötkolben mit Temperatureinstellung...
Zur Geschwindigkeit: Mir kommt das ganze ziemlich langsam vor. Man kann 
noch deutlich erkennen, wie sich Text aufbaut, ist das normal? Ist das 
erste mal, dass ich mit einem ATMega8 arbeite, d.h. auch die erste 
Aufgabe für diesen. Wo finde ich in PonyProg die CKDiv8-Fuse beim 
ATMega8? Hab sie nirgendwo entdecken können.

Vielen Dank, vor allem an Benedikt!

grüssse
g.

von R. M. (rmax)


Lesenswert?

gadgaet schrieb:
> Heute sind meine 2 Displays gekommen.

Heh - ich habe heute auch eines bekommen, aber noch nicht ausprobiert.

> Die Touchscreens funktionieren bei mir einwandfrei.

Bei meinen ist auf der Anschlußseite ein bißchen vom Glas abgesplittert, 
sieht aber nicht so aus, als ob das die Funktion beeinträchtigen würde.

> Welche Methode wäre die beste, das Teil zum Funktionieren zu bringen?
> Mit dem Bügeleisen oder Lötkolben oder was anderes?
> Ich habe leider keinen Lötkolben mit Temperatureinstellung...

Falls es bei mir nötig sein sollte, werde ich mit dem Lötkolben (nicht 
regelbar) nachlöten, aber ein Stück Teflon-Backfolie oder 
Glasfasergeflecht (wie man es zum Kunststoffschweißen hat) dazwischen 
legen, damit die Hitze besser verteilt wird und im Zweifelsfall zuerst 
die Folie verbrennt und ich noch rechtzeitig wegziehen kann.

> Wo finde ich in PonyProg die CKDiv8-Fuse beim ATMega8?

Das kann ich Dir zwar nicht sagen, aber alternativ kannst Du den 
Prescaler per Software umschalten, dann mußt Du Dich um die Fuse nicht 
mehr kümmern:
1
void main(void)
2
{
3
    CLKPR = 1 << CLKPCE;
4
    CLKPR = 0;
5
...
6
}

von gadgaet (Gast)


Lesenswert?

Habe noch nie was von Teflon-Backfolie gehört...
Meinst du, normales Backpapier geht auch?

von R. M. (rmax)


Lesenswert?

gadgaet schrieb:
> Habe noch nie was von Teflon-Backfolie gehört...

Google mal nach "Dauerbackfolie".

Allerding habe ich gerade bei Wikipedia gelesen, daß man Teflon auf 
keinen Fall über 400°C erhitzen darf, weil sonst extrem giftiges Flour 
frei wird.

> Meinst du, normales Backpapier geht auch?

Das dürfte zu dünn sein und die Temperatur der Lötspitze nicht 
aushalten, aber probieren kannst Du es (evtl. mit mehreren Schichten), 
besser als direkt mit einer zu heißen Lötspitze ist es vielleicht 
allemal.

von Sigint 112 (sigint)


Lesenswert?

Also, zum Thema Geschwindigkeit: Die Datenübertragung geht bei mir sehr 
schnell. Ich kann kaum erkennen, wie sich das Bild aufbaut und sogar 
Animationen laufen relativ flüssig. (nur Linien, per PixelSet) Das 
größere Problem ist, daß die LCD-Matrix mit dem Anzeigen nicht hinterher 
kommt. Die Linien sind sehr hell. Damit könnte man theoretisch 
Graustufen darstellen... die Qualität dürfte aber bescheiden sein.

Zum Thema "fehlende Zeilen": Ich bin einfach mit meinem Lötkolben bei 
ca. 150C quer über die Folienleiter gefahren und konnte damit das 
Display reparieren. Man muss ein wenig Glück haben, da sich hierbei 
andere Verbindungen lösen können. Mechanisch dürfte die Verbindung aber 
nichtmehr so stabil sein wie im Originalzustand.

Gruß,
  SIGINT

von Diensthabender Troll (Gast)


Lesenswert?

> Ein Display funktioniert einwandfrei, beim anderen fehlen Zeilen. Welche
> Methode wäre die beste, das Teil zum Funktionieren zu bringen?

Foto machen, Mail an Pollin mit Foto im Anhang, fragen was zu tun ist.

> Wo finde ich in PonyProg die CKDiv8-Fuse beim
> ATMega8? Hab sie nirgendwo entdecken können.

Hat der Mega8 nicht. Der Takt wird mittels der CKSEL-Fuses umgeschaltet, 
weitere Infos im Datenblatt Kapitel Clock-Sources.


> aber alternativ kannst Du den
> Prescaler per Software umschalten, dann mußt Du Dich um die Fuse nicht
> mehr kümmern:

> void main(void)
> {
>     CLKPR = 1 << CLKPCE;
>     CLKPR = 0;
> ...
> }

Nööö, geht beim Mega8 nicht. Siehe Datenblatt Kapitel Clock-Sources.
Mega8 != Mega48/88/168.

von Wolfgang-G (Gast)


Lesenswert?

@Sigint 112
Ich möchte Dein Programm, welches Du für einen AVR entwickelt hast, für 
einen MSP430 nachempfinden.
Vielleicht könntest Du Deine Vorgehensweise  in einer Deiner Dateien als 
Kommentar erläutern.
Wenn ich es richtig verstanden habe, dann misst man zunächst 
Spannungswerte in x bzw. y-Richtung und errechnet damit die Stelle, wo 
der Schirm berührt wird.
Was mir noch völlig unklar ist, wie man feststellt, ob und wann auf eine 
Stelle des Schirmes gedrückt wird. Wahrscheinlich ist es die Funktion 
int touched(void). Was läuft hier ab?
Dank im Voraus.

MfG

von Diensthabender Troll (Gast)


Lesenswert?

> Was mir noch völlig unklar ist, wie man feststellt, ob und wann auf eine
> Stelle des Schirmes gedrückt wird

Beitrag "Re: Display mit Touchscreen bei Pollin?"

von Sigint 112 (sigint)


Angehängte Dateien:

Lesenswert?

@Wolfgang:
  Ich hab das Programm eigentlich nur zum testen geschrieben, deshalb 
ist nichts Kommentiert. Zudem hab ich noch nicht viel Erfahrung mit C 
und Mikrocontrollern... daher ist der Code eigentlich Mist. Bin halt 
noch am lernen. Anbei die Kommentare.

Gruß,
  SIGINT

von Michael (Gast)


Lesenswert?

>Zur Geschwindigkeit: Mir kommt das ganze ziemlich langsam vor. Man kann
>noch deutlich erkennen, wie sich Text aufbaut, ist das normal?

Interne Takt auf 8 MHz einstellen (Standard ist 1 MHz) dann müssts 
besser gehen

von gadgaet (Gast)


Lesenswert?

Gut, habe die CKSEL-Fuses wie im Datenblatt beschrieben auf 0100 gesetzt 
(waren auf 0011, also 4MHz) und seitdem wird der Controller von Ponyprog 
nicht mehr erkannt und auf dem Display sind nur noch von unten nach oben 
wandernde, seltsam pixelige Streifen zu sehen.

von R. M. (rmax)


Lesenswert?

Diensthabender Troll schrieb:
> Nööö, geht beim Mega8 nicht. Siehe Datenblatt Kapitel Clock-Sources.
> Mega8 != Mega48/88/168.

Ah - Danke für die Richtigstellung. Ich dachte, das sei ein Feature der 
ganzen AVR-Familie, weil alle Modelle es hatten, mit denen ich mich 
bisher befaßt habe, selbst die Tinys.

von Diensthabender Troll (Gast)


Lesenswert?

> Ah - Danke für die Richtigstellung.

nichts zu danken.

> Ich dachte, das sei ein Feature der
> ganzen AVR-Familie,

nein, das haben nur einige der neuesten familienmitglieder.

> weil alle Modelle es hatten, mit denen ich mich
> bisher befaßt habe, selbst die Tinys.

das waren dann vermutlich nicht allzuviele.... <:-)
denke bei internem takt != 1Mhz auch mal ueber calibration des 
oszillators nach, siehe auch avr-appnote 053.

-----

> Gut, habe die CKSEL-Fuses wie im Datenblatt beschrieben auf 0100 gesetzt
> (waren auf 0011, also 4MHz) und seitdem wird der Controller von Ponyprog
> nicht mehr erkannt

falls du  einen billig-programmer am com-port des pcs benutzt. dann 
solltest du mal den transistor fuer die reset-steuerung checken, hier 
ist ein exemplar mit recht hoher stromverstaerkung erforderlich.

von Wolfgang-G (Gast)


Angehängte Dateien:

Lesenswert?

@SIGINT
vielen Dank für Deine Mühe
Deine Programmierkünste kann ich nicht beurteilen, da ich davon zu wenig 
verstehe.
Mein offenes Problem habe ich im Anhang dargestellt.
MfG

von Diensthabender Troll (Gast)


Lesenswert?

> was ist falsch? wie mass man anschließen, damit der eine Pin den
> anderen bei Berührung auf L zieht?

das wird nur gehen, wenn alle 4 enden des touchscreens an portpins 
liegen. du hast 2 enden fest an plus gelegt, somit lannst du dem Pin des 
einen nicht vom anderen auf masse ziehen.
1
Aktion:              links          rechts      oben       unten
2
Test auf Touch       hochohmig      IN mit PU   L-Pegel    hochohmig  
3
X-Wert messen        L-Pegel        H-Pegel     hochohmig  ADC-IN
4
Y-Wert messen        hochohmig      ADC-IN      L-Pegel    H-Pegel

also erstmal die obere konstellation und zyklisch den digitalen eingang 
mit eingeschaltetem internem pullup-widerstand abfragen. da die 
touchscreen-widerstaende gegenueber dem pullup sehr niederohmig sind, 
wird der pegel bei beruehrung l.

erst danach nacheinander die beiden widerstaende (spannungsteiler) 
ausmessen, wobei immer einer an spannung gelegt wird und am anderen der 
adc die spannung misst. der 4. anschluss muss dazu hochohmig sein.

von Wolfgang-G (Gast)


Lesenswert?

Danke, jetzt habe ich es verstanden.
Evtl. muss  ich noch strombegrenzende Widerstände dazwischenschalten, 
damit der MSP430- Ausgang nicht überlastet wird.
Mit Deinem Ratschlag vom 11.08.2009 22:49 konnte ich nichts anfangen.

MfG

von Diensthabender Troll (Gast)


Lesenswert?

> Danke, jetzt habe ich es verstanden.

prima

> Evtl. muss  ich noch strombegrenzende Widerstände dazwischenschalten,
> damit der MSP430- Ausgang nicht überlastet wird.

hmmm, um die 11mA bei 3,3V ist etwas viel fuer den MSP430? nunja, die 
avrs haben da etwas mehr spielraum, die packen das auch bei 5V ohne 
probleme.
das vorschalten von widerständen verkleinert dann aber den nutzbaren 
bereich des adcs.


> Mit Deinem Ratschlag vom 11.08.2009 22:49 konnte ich nichts anfangen.

naja, das war der link auf benedikts beitrag vom 03.07.2009 18:25, in 
dem die loesung zu finden war. es ist eben nicht alles trollig, was ein 
troll so schreibt.... <;-)

von Sven B. (svenba)


Lesenswert?

Hi Leute.
Habe vor 4 Monaten mit Assembler auf ATMega angefangen.
Nach LEDs, Tastern und 7-Segment "Aktionen" hab ich mir dann auch zwei 
von diesen GLCDs von Pollin geholt. Natürlich fehlten bei beiden auch 
Pixel-Reihen, hab ich aber mit Heissluft hin gekriegt.

Hab mich auf Assembler fest gelegt und mit den Routinen weiter oben 
(sry, weiss jetzt nich von wem) soweit alles hingekriegt, dass ich über 
ein Poti an ADC0 vom ATMega32 die veränderte Spannung als y-Ablenkung 
sehe. Mein Ziel ist ein Oszilloskop im Selbstbau.

Jetzt meine Frage:
Ich lese die ADC Werte ein und gebe immer einzelne Bytes auf 
entsprechender Höhe (x mal 20 Byte runter) aus. Jetzt möchte ich aber 
einzelne Pixel als einzelne Spannungswerte auf Höhe ausgeben, wie krieg 
ich das hin. Ich sehe, dass die meisten hier mit C arbeiten, aber 
vielleicht gibts hier ja nen ASM Menschen, der mir weiter helfen kann..

Auf jeden fall Danke für die Hilfe an alle hier im Thread, hab hier viel 
hilfreiches gefunden...

Sven

von gadgaet (Gast)


Lesenswert?

Ja, ich verwende einen "Billig-Programmer" über COM_Port. Der Programmer 
hat bisher immer funktioniert,warum sollte er es jetzt nicht mehr tun?

von gadgaet (Gast)


Lesenswert?

Der Programmer ist übrigens ein exakter Nachbau des Programmers auf dem 
Pollin-Evalboard 2.01.

von MichiB (Gast)


Lesenswert?

Hi,

hat jemand eine Zeichnung mit Abmaßen des Displays?

von Sven B. (svenba)


Lesenswert?

Pdf mit mech. Abmessungen:

http://www.aeontekasia.com/pdf/DG-16080.pdf

Hat jemand ne Antwort auf meine Frage oder weiss, wo ich die Antwort für 
ASM nachlesen/bekommen kann??

von Sascha W. (sascha-w)


Lesenswert?

@Sven

kann denn deine ASM-Routine schon einzelne Pixel setzen oder noch nicht?
Für ein 128x64 hab ich ASM-Routinen, da aber die Bytes dort um 90Grad 
gedreht sind passt das nicht so ohne weiteres.

Sascha

von Sven B. (svenba)


Lesenswert?

Könnte evtl schon helfen...

Hab ja bis jetzt immer 8bit ( 0xFF), also einen Strich auf 
entsprechender Höhe, aber sobald ich einzelne Bits setze und beim 
nächsten ADC Durchgang mit LSR das nächste Bit setzen will, bis alle 
8bits nacheinander geschrieben wurden, sieht man garnichts mehr oder 
irgendwelchen Müll...

Hier mal das CodeFragment, welches noch nich richtig läuft, obwohl 
AVR_Studio nicht meckert;
1
; Zeichen ausgeben
2
  rcall display_weiss
3
  ldi disdata1, 0x0C
4
  ldi disdata2, temp6     ; temp6 = am Anfang 0b10000000
5
  cp temp1, adlow
6
  breq gleich        ; gleiche messwerte??
7
  
8
         mov temp1, adlow        ;temp1 für Y-Auslenkung
9
  rcall Y_Auslenkung        ;Temp1 mal runter
10
  rcall Sende_Daten
11
  rcall y_zurueck        ;temp1 mal zurück
12
13
  lsr temp6               ; nächstes Bit setzen (zB 0b01000000)
14
weiter:  
15
  dec bitschieber         ; Bitschieber = am Anfang 8(acht Mal LSR)
16
  brne adc_main           ; ADC_Main = adc Messung
17
      
18
         ldi disdata2, 0b10000000
19
  rcall Cursor_einen_weiter
20
  mov disdata2, adlow
21
  rcall Sende_Daten
22
  dec temp5
23
  brne adc_main       ;temp5 = 20 (Display = 20 Byte)
24
  rcall Display_weiss
25
         rcall auf_mitte
26
  rcall strich
27
  rcall DV_resetCursor
28
  ldi  temp5, 20       ; 20 werte hintereinander
29
  rjmp adc_main
30
      
31
gleich:  
32
  add disdata2, temp6
33
  mov temp1, adlow
34
  rcall Y_auslenkung
35
  rcall sende_Daten
36
  rcall y_zurueck2
37
  lsr temp6
38
  rjmp weiter
Fällt jemandem ein Fehler auf/bzw. hat jemand ne Anmerkung??

von FlipFlop (Gast)


Lesenswert?

Hallo,
danke Benedikt K. für dieses tolle Projekt! Ich habe mir jetzt auch 2 
Displays angeschafft, leider kann ich auf den Folienleitern nicht löten, 
die schmilzen einfach weg. Hat jemand eine Idee wie das Touchpad 
trotzdem nutzen kann.

von Hannes Lux (Gast)


Lesenswert?

> Hat jemand eine Idee wie das Touchpad trotzdem nutzen kann.

Falls Du die Kontaktierung des Touchscreens meinst, dann schau Dir mal 
den Anhang dieses Beitrags an (unteres Bild links):

Beitrag "Re: Display mit Touchscreen bei Pollin?"

Ich hatte 4 (von 5) defekte LCDs bekommen (Zeilenausfall), sie wurden 
mir ohne Probleme gegen funktionsfähige umgetauscht. Ich hatte 
allerdings nicht erst versucht, daran herum zu löten.

...

von Hannes Lux (Gast)


Lesenswert?

> (unteres Bild links)

Quatsch, oberes Bild natürlich...

Sorry...

...

von gadgaet (Gast)


Lesenswert?

Ich habe eine Buchse für einen solchen Folienstecker per Heißluft von 
einer Schrottplatine entfernt. Sie war zwar etwas deformiert, aber noch 
benutzbar. Obwohl sei ein (völlig) anderes Rastermaß als der Stecker des 
Touchpad-Anschlusses hatte, hat es bei mir super geklappt.

grüssse
g.

von J. K. (rooot)


Lesenswert?

Mich würde interesieren, mit welcher Abtastfrequenz ihr den Touchscrenn 
betreibt ?!

Wenn ich über 100 Hz komme, habe ich auf dem Messleitungen einen Pegel 
von ca. 2-5 V.  Ich kann mir aber nicht vorstellen wo das herkommt. Bei 
100Hz sind kapazitive bzw. induktive Kopplung wohl zu vernachlässigen. 
Ich wüsste auch nicht, wo ich eine so große parasitäre Kapazität hätte, 
die diesen Effekt verursacht.

Um die gerade gemessene Leitung im "nicht-gedrückten" Zustand auf einem 
bestimmten Potenzial zu haben, verwende ich 1 MOhm Widerstände gegen 
Masse. Ich hab auch schon mal versucht einen kleineren (10k) paralell zu 
schalten, hat aber nichts geholfen.

von Benedikt K. (benedikt)


Lesenswert?

Bei mir läuft der Touchscreen mit etwa 1kHz.

Wenn die Leitung offen ist, dann reichen 100Hz durchaus aus, um diese 
auf mit der angesteuerten Leitung mitzuziehen. Immerhin sind das rund 
1nF zwischen den beiden Elektroden.

Wie steuerst du den Touchscreen an und wie erkennst du ob gedrückt 
wurde?

von Sven B. (svenba)


Lesenswert?

Hi!
Hab wohl im falschen Beitrag geschrieben...
Trotzdem hier ein Update; ignoriert den Code da oben von mir, habe das 
Problem weitgehend gelöst...

von J. K. (rooot)


Lesenswert?

ich steuere den Touchscreen mittels AVR - Pins (Mega16) direkt an. Da 
schalte ich auch auf Ausgang/hochohmig um.

Erkenn ob gedrückt ist, tu ich, wenn der Pegel auf den Messleitungen 
"LOW" ist (wegen den Pull-Downs)

Leitungen ist ja nicht offen, liegen mit 1MOhm gegen Masse - 1 - für X 
und einmal für Y Richtung.

Wenn ich drücke, stimmt das Ergebnis aber (auf +- 1 Pixel)

von Benedikt K. (benedikt)


Lesenswert?

Wie lange wartest du zwischen dem hochohmig Schalten und dem Einlesen 
des Zustands?
Bei einer Zeitkonstante von 1nF*1MOhm = 1ms solltest du schon ein paar 
ms warten bis sich der Kondensator ausreichend geladen hat, ehe du den 
Zustand misst.
Mit dem Pullup des AVRs mit typisch 70k sollte das deutlich schneller 
gehen.

von J. K. (rooot)


Lesenswert?

Ja stimmt :-\

das gleiche dachte ich mir auch und machte den 10k Pulldown - Versuch 
(siehe oben)
Habe jetzt rausgefunden, das die verwendete Messstrippe kaputt war 
(wirklich ärgerlich)
Hab den Versuch jetzt noch mal gemacht - das führte zum erwarteten 
Ergebnis.

Danke für die Hilfe
J.K.

von Allu (Gast)


Lesenswert?

Meinen Touch lasse ich 30 mal pro Sekunde per Interupt abfragen. Ergeben 
2 aufeinanderfolgende Abfragen die gleichen X-Y-Werte (nur die oberen 8 
ADC-bit werden verwendet - mehr ist für meine geplante Anwendung nicht 
notwendig) werden diese für gültig erklärt. Zwischen den Abfragen werden 
alle Touchleitungen auf +5V gelegt, um daraus erkennen zu können, ob 
eine Berührung vorliegt.

Das Display habe ich in 8 Zeilen zu 23 Zeichen aufgeteilt. Aus den 
X-Y-Werten wird die Position des "angetuochten" Zeichens errechnet. 
"Unter den Displayzeichen" liegt eine Tabelle mit Rückgabewerten 
(Zahlen, Buchstaben oder Tasten).

Das (noch unfertige) Programm ist ein Assembler-Bascom-Gemisch mit dem 
leicht modifizierten Zeichengenerator von Benedikt.

von Allu (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

wer die Schaltung von Benedikt mit dem Mega 8 verwendet und mal seinen 
Touch testen möchte, kann das angehängte Progamm mal versuchen.

Nach dem Einschalten wird zur Kalibrierung ein Kreuz angezeigt, das in 
der zu berühren ist. Danach folgen die 3 weiteren Ecken. Erfolgt eine 
Fehlermeldung, ist der Touch sehr abweichend von meinen Exemplaren, es 
werden dann Defaultwerte geladen und nach 5 Sekunden geht's weiter. Eine 
erfolgreiche Kalibrierung wird im EEProm abgelegt.

Funktionstasten:

Touchwerte anzeigen = Im unteren Bereich werden die Randabstände und 
Umrechnungswerte angezeigt. Im oberen Bereich der Berührungspunkt 
gerastert auf 8x23 und der gemessene 8-Bit-Feinwert.

Kalibrierung = spricht für sich

Texteingabe = hier wird der Code angezeigt, der "unter" jedem 8x23 
Rasterfeld liegt.

Menue = wieder zurück zur Auswahl

Viel Spass und Grüße
Allu

von Sascha W. (sascha-w)


Lesenswert?

@Allu,

super Testtool!

Sascha

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

Ich habe mich dem Display mal von der PIC-Seite her genähert. 
Funktioniert auch. Meine Frau hats dann gleich mal getestet.(siehe Bild) 
Controller ist ein 16F767. Die Kinder wollten dann noch eine 
Radiergummifunktion eingebaut haben. Also ist auch diese drin. Bis jetzt 
aber nur durch Umschalten eines Eingangs. Wenn Zeit ist, mache ich da 
mal eine "Werkzeugleiste" am rechten Rand für. Verschiedene 
Strichstärken wurden auch schon angefragt. Die Files lade ich im laufe 
des Abends noch hoch.

Gruß Meik

von gadgaet (Gast)


Lesenswert?

Hübscher Zeichensatz!

von Meik D. (meik)


Lesenswert?

Welchen meinst du? Den mit den Herzchen?

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

So, hier nun das Proggie. Ist noch beta. Beim Andrücken des Touchscreens 
verzieht der Strich etwas. Wird aber noch korrigiert. Weiss nur noch 
nicht wann. Die Pinbelegung ergibt sich aus dem Quellentest.

Gruß Meik

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

So, so sieht die neue Version aus. Auf der rechten Seite sind 
Soft-Tasten zum Auswählen der Strichstärke, zum Radieren und zum Löschen 
des gesammten Bildes. Die Tasten werden übrigens nicht betätigt, wenn 
man mal über den Rand malt.

Meik

von Alex G. (alex94) Benutzerseite


Lesenswert?

Hallo,
ich hab mir auch so ein Display gekauft und habe Benedikts "maler" 
testcode draufgeladen. ok ich kann jetzt text anzeigen. Kann es sein das 
man bei benedikts initalisierung den punkt sehr genau treffen muss? Also 
so ein touchscreenstift verwenden muss? Oder ist mein touchpanel kaputt?


mfg alex

von Benedikt K. (benedikt)


Lesenswert?

Ich verwende einen weitaus engeren Toleranzbereich bei mir, allerdings 
auch mit einem solchen Stift. Mit dem Finger kann es durchaus schwer 
sein, den Punkt zu treffen.

von Alex G. (alex94) Benutzerseite


Lesenswert?

Vielen Dank,
ich werde mir dann mal so ein Stift suchen.
Muss noch irgendwo einer sein ;)

von Sebastian R. (sebr)


Lesenswert?

Mal zur Info: habe ich den letzten Wochen zweimal bei Pollin die 
Displays bestellt. Alle wurden in schwarzer, verschlossener, Tüte 
geliefert. Und ALLE funktioneren fehlerfrei, Display sowie Touchscreen! 
Offensichtlich hat Pollin die Wareneingangskontrolle verbessert ;)

von R. M. (rmax)


Lesenswert?

Welches der drei Modelle hast Du bekommen?
Beitrag "Re: Display mit Touchscreen bei Pollin?"

von Allu (Gast)


Lesenswert?

Scheinbar macht es die Verpackung.
Alle meine schwarz verpackten Displays waren in Ordnung. Die 4 
nachbestellten kamen in hellrosa Noppentüten an - 2 waren in Ordnung und 
2 waren defekt.
Bei Pollin angerufen und sofort problemlos 2 Ersatzdisplays zugesandt 
bekommen. Der Ersatz war wieder hellrosa verpackt und leider auch 
defekt.

von Benedikt K. (benedikt)


Lesenswert?

Ja, schwarz scheinen die original verpackten zu sein, also die komplett 
ohne Stiftleisten, das mittlere auf dem Foto.

von Sebastian R. (sebr)


Lesenswert?

Reinhard Max schrieb:
> Welches der drei Modelle hast Du bekommen?
> Beitrag "Re: Display mit Touchscreen bei Pollin?"

Das mittlere. Folienstecker lötbar, ohne Stiftleiste, EL 
Hintergrungbeleuchtung und Display sowie Touchscreen funktionierten 
fehlerfrei.

Ja, scheinbar liegts an der Verpackung: die schwarzen original 
verpackten machen keine Probleme.

von Mr. Touch (Gast)


Lesenswert?

Hi,
es ist vllt. jetzt eine dumme frage aber kann mir einer bitte die genaue
Pin belegung des Touch-panels sagen? Also ich meine an dem flachen 
folienkabel was herausgeführt wird?

Danke

von Hannes L. (hannes)


Lesenswert?

Verfolge doch mal die sichtbaren Leiterzüge auf der Touch-Folie, es ist 
sehr gut zu sehen, welcher Pin nach oben, unten, links und rechts geht.

...

von Micha J. (michady)


Lesenswert?

Hallo Leute,
mal eine frage zum Anschluss des Display, ich habe es so angeschlossen 
wie im Bild von Benedikt K.und habe nun das Bascom File 
LC7981-GRAFIKMODUS von mike drauf gespielt, aber dort passiert leider 
nichts.
Ich kenne mich nur im reinen Bascom aus aber in der .bas Touch.rar von 
mike steige ich nicht durch.
Ist dort C mit eingebunden oder warum sehe ich dort keine Deklinationen 
für den Chip, ob es nun mega8 oder ein mega16 ist.

Danach habe ich das TOUCH_TEST_1.HEX von mike drauf gespielt, auf ein 
mega 8, mit die selben Anschlüsse wie in der Zeichnung und es geht :)
Maik könnte ich mal dafür noch Bitte die .bas bekommen ? vielleicht 
blicke ich dann mehr durch, oder kann mir jemand auf die Sprünge helfen 
:< damit ich estwas verstehe.

Gruß Micha

von Meik D. (meik)


Lesenswert?

Hallo Micha.
Das wird nix mit dem Code auf dem Mega8. Der ist für einen 
PIC-Mikrocontroller. Das aktuelle File habe ich noch nicht geuppt. Wenn 
Interesse besteht, lade ich das aber gerne hoch, sammt Anschlußbelegung 
im Target-Format. Müßte ich dann halt noch zeichnen.

Gruß Meik

von Micha J. (michady)


Lesenswert?

Hallo mike,
Danke erstmal für deine schnelle Antwort.
Natürlich habe ich Interesse daran, wie aber schon erwähnt die 
TOUCH_TEST von dir funktioniert auf den mega8, kann die Ecken 
kalibrieren und das Menü aufrufen.

--PIC-Mikrocontroller-- ach so deswegen die unbekannten Definitionen ;) 
aber das ist dann nur bei der LC7981-GRAFIKMODUS so ,oder .

Gruß Micha

von Meik D. (meik)


Lesenswert?

Hallo Micha.
Die TOUCH_TEST Ist nicht von mir. Die ist von Allu.
Ich werde im Laufe des Wochenendes die aktuelle Version von mir für den 
PIC inkl. einem Anschlussplan im Target Format mal hochladen. Die bas 
Datei ist übrigens nicht für Bascom sondern für den PicBasic 
Proton-Compiler von Crownhill. Falls jemand einen anderen PIC verwenden 
möchte (alle >= 28PINs dürften gehen) kann ich das fertige HEX-File auch 
gerne anpassen.

von Carsten S. (dg3ycs)


Lesenswert?

Meik Dittmann schrieb:
> Falls jemand einen anderen PIC verwenden
> möchte (alle >= 28PINs dürften gehen) kann ich das fertige HEX-File auch
> gerne anpassen.

Hallo Meik,

Wenn du das für den Pic 16F871 anpassen könntest wäre das Prima.
Habe mit Basic das letzte mal ca. 1992 gearbeitet als ich von C64 & 
Schneider CPC464 auf PC gewechselt bin... Mit Basic für µC noch niemals. 
Da sich seit dem mein Lebensalter mehr als verdoppelt hat sitzt da nicht 
mehr so viel...

Dann brauche ich mich da nicht reinarbeiten bzw. selber schnell eine C 
bzw. ASM Testroutine auflegen. Auch das erstellen einer AVR Testplatine 
kann ich mir dann sparen. Brauche halt nur etwas um die von mir 
beschafften Displays durchzutesten. Richtig loslegen mit eigener 
Anwendung kann ich leider erst in der zweiten Novemberhälfte...
(Werde in einigen Tagen umziehen - Arbeitsraum ist schon teilweise 
verpackt)

Gruß
Carsten

von Allu (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Micha,

anbei das Bascom-Assembler-Programm zu Touch_Test_1.

Der Touch wird per Interrupt 30 mal pro Sekunde abgefragt, das dauert 
jeweils ca. 0,5 msec. Das Display wird auch mit Assemblerroutinen 
bedient.

Die Funktionen lassen sich aber alle vom Basicprg. aus mit Gosub 
benutzen.

Gruß Allu

von Micha J. (michady)


Angehängte Dateien:

Lesenswert?

Hi Mike,
danke für deine Hilfe, aber mit dem PicBasic
Proton-Compiler werde ich wohl nichts anfangen können und daher gern bei 
Bascom bleiben.
Hallo Allu, das ist ja doch helsch kompliziert aufgebaut im Programm, 
vor allem das asm ;).
Ich komme immer nur auf das eine Feld wie im Bild zu sehen, ich kann an 
drücken was ich will, lande immer dort.
Im Programm sehe ich aber das es noch andere Ebenen geben muss, ich 
vermute mal das die Anschlüsse von den X Y Achsen nicht korrekt sind, 
zwar habe ich die vier schon hin und her gesteckt und sollten laut deer 
ausgaben über das Display auch stimmen, aber hm.
Wie sind die richtigen anschluss der XY Achsen definiert am LCD, im 
Datenblatt ist davon nichts zu sehen.

Gruß Micha

von Allu (Gast)


Lesenswert?

Hallo Micha,

zum Displayanschluss - das Display liegt mit der Anzeigeseite vor Dir, 
das Folienkabel ist rechts, die Anschlüsse zum Mega 8 von oben nach 
unten:

----  oben = Pin 23
----       = Pin 24
----       = Pin 25
---- unten = Pin 26

Ich hoffe, ich habe mich nicht vertan.

Ja, es gibt mehrere Ebenen: Touchwerte anzeigen, Kalibrieren und 
Texteingabe. Die Menüepunkte, die sich "antouchen" lassen, sind gross 
geschrieben. Ist aber kein muss, da kann man reinschreiben was man 
möchte. Der Rückgabewert liegt "unter" dem Zeichen.

So wie die Werte in Deinem Bild aussehen, wird nach der Kalibrierung 
wahrscheinlich für 5 Sekunden "Fehler" angezeigt, weil die Messwerte zu 
weit vom erwarteten Wert weg lagen.
Ansonsten wird für links oben Chr=0, Wert=48 und Raster Y=0 und X=0 
angezeigt, weil sich an der Stelle eine "antouchbare" 0 befindet.

Rechts unten in der Ecke ist ein G und dazu gehört Chr=G, Wert=71 und 
Raster Y=7 und X=22

Gruß  Allu

von Sebastian R. (sebr)


Lesenswert?

Hat denn schon jemand das Display in nem fertigen Projekt verwendet? 
Würde mich interessieren.

von Micha J. (michady)


Lesenswert?

Hallo Allu,
ja ich habe schon durch meeres abstechen mit den Stift auf dem Display 
gemerkt das man doch in den einzelnen ebenen kommt, aber die Variante 
wie du oben angibst ist leider an mein LCd nicht richtig.
Ich kann aber umstecken was ich will, entweder sind die Menüs rechts 
oder links im LCD ,wen ich alles überprüfe, oder es geht garnichts.hm. 
:|

Aber mal was anderes, was braucht man nur im Programm wen man das 
Display ohne den Touch betreiben will, es ist ja eine nette Größe und 
daher flexibel für einige Anwendungen, wo auch wie ich gelesen habe, 
nicht jedes geht was von Pollin kommt.
Ich frage deswegen, weil ich mich bisher auch mit den GLCDs nicht 
beschäftigt habe, Neuland ;)

Gruß Micha

von Hannes L. (hannes)


Lesenswert?

> wo auch wie ich gelesen habe,
> nicht jedes geht was von Pollin kommt.

Was spricht eigentlich dageen, ein neu geliefertes LCD erstmal mittels 
Benedikts Testprogramm (im Mega8) zu testen? Da sieht man,

- ob alle Pixel funktionieren
- ob der Touchscreen ordentlich kontaktiert ist
- ob der Touchscreen verzerrungsfrei arbeitet
- welche Präzision mit dem Touchscreen erreichbar ist (zum Vergleich
  mit dem Ergebnis eigener Routinen)
- ob man das LCD reklamieren muss, oder ob das eigene Programm
  fehlerhaft (oder suboptimal) ist

Das Testprogramm als Hex-Datei findet man hier:
Beitrag "Re: Display mit Touchscreen bei Pollin?"
Die Anschlussbelegung findet man hier:
Beitrag "Re: Display mit Touchscreen bei Pollin?"

...

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

So, hier die aktuelle Version. Plus und Minus dürften klar sein, ebenso 
die Beschaltung von Vee. CS kommt auf Masse, Dis Off auf +5V. Der Rest 
ist im Bild zu erkennen. Der Aktivierungspunkt der Softkeys ist der 
Loslasspunkt, daher ist es nicht tragisch, wenn man rechts mal übermalt. 
1-2 kleinere Bugs sind aber noch drin. Werden aber noch bereinigt. Ist 
ein super Kinderspielzeug übrigens.
@ Carsten
Ich hatte, bevor ich mit dem PicBasic angefangen hatte, meine letzten 
Erfahrungen mit Basic ebenfalls in der 90ern. Damals noch mit dem C16 
und im zarten Alter von 11-13...Hui ist das lange her. Aber der 
Wiedereinstieg mit PicBasic war erstaunlich leicht, da sehr viele 
Befehle gleich sind. Und der Rest ist recht einfach zu interpretieren.
Die Version für den 871 mache ich wahrscheinlich heute auch noch fertig.

Meik

von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

So, hier die Version für den 871. Es steht wegen dem zu geringen 
Speicherplatz allerdings kein Zeichensatz zur Verfügung!
Die Belegung der Ports ändert sich aufgrund zu weniger 
Einstellmöglichkeiten im ADCON Register wie folgt:
A5 -> C6
A2 -> C4
A6 -> C7
A3 -> C5
Die zwei Brücken von A2 & A6 ebenfalls entsprechend auf C4 & C7 legen. 
Das ganze ist im Übrigen ungetestet.
Meik

von Sven B. (svenba)


Lesenswert?

Hi!
Nachdem ich die Reparatur des Displays und eine funktionierende 
Ansteuerung mit ASM hinter mich gebracht habe, will ich jetzt die 
Touchfunktion ausprobieren.
Allerdings will ich bei Assembler bleiben. Hat hier jemand mal ne 
Routine zur Touchauswertung in Assembler gesehen/geschrieben??
Oder:
Habe ich das richtig verstanden, dass ich alle 4 pins an die adc-ports 
anklemme und dann im Wechsel erst die Y-Leitungen auf Ausgang(mit 
Pull-Up) und Ausgang(ohne) schalte,die X-Leitungen mit den ADCs lese und 
danach das ganze umdrehe?
ATMega32 / 64

von Allu (Gast)


Lesenswert?

Hallo Sven,

schau mal in Touch_Test_1.bas nach. Da steht zwar .bas dran, 
Touchabfrage und Displayansteuerung sind aber in Assembler gebastelt.

Gruß Allu

von Allu (Gast)


Lesenswert?

Hallo Micha,

wenn Du nur Texte auf dem Display darstellen willst, keine 
selbstgestrickten Zeichen und keinen Touch brauchst, geht es auch 
einfacher. Leider habe ich da kein Beispiel.

Schau mal ins Datenblatt vom Contoller, der läßt sich auch im Textmodus 
mit internem Charaktergenerator betreiben. Da fällt einiger Aufwand weg 
und das Programm wird vermutlich auch in Basic schnell genug ablaufen.

Gruß  Allu

von Micha J. (michady)


Lesenswert?

Hi Allu,
#mit internem Charaktergenerator betreiben#
du erzählst mir Sachen, :) schade das du kein Beispiel hast.

gruß Micha

von Roland P. (pram)


Angehängte Dateien:

Lesenswert?

Hier ein Vorschlag von mir zur Touch-Auswertung mittels AVR.
(Hab die Datei aus einem Projekt von mir, muss deshalb ggf noch den 
eigenen Bedürfnissen angepasst werden)

Gruß
Roland

von Sven B. (svenba)


Lesenswert?

@allu:
Besten Dank, werd mich da mal durchforsten. Sieht gut aus.

Gibt es die Buchsen für die Flachleitung zum Touch irgendwo passend zu 
kaufen?

von Allu (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Micha,

anbei eine Version mit nur Text, ohne Touch.

Die Spalten gehen von 0 bis 22, die Zeilen zum Text schreiben 
sinnvollerweise von 0 bis 72. Um das Assemblergeraffel brauchst Du Dich 
nicht zu kümmern, geht alles mit Gosub vom Basic aus zu bedienen.
Im Beispielprog. wird auf der letzten Seite der vorhandene Zeichensatz 
angezeigt, einfach ein paar Sekunden abwarten. Ich hoffe, Du kannst was 
davon verwenden.

Gruß  Allu

von Micha J. (michady)


Lesenswert?

Hallo Allu,
das ist ja super, danke dafür.
Noch eine frage wie kann man es am besten herausfinden wo man direkt in 
den Zeilen und spalten ist, gibt es eine Vorlage dafür oder muss man 
sich das ausprobieren.

Gruß Micha

von Micha J. (michady)


Lesenswert?

Micha Dy schrieb:
> Hallo Allu,
> das ist ja super, danke dafür.
> Noch eine frage wie kann man es am besten herausfinden wo man direkt in
> den Zeilen und spalten ist, gibt es eine Vorlage dafür oder muss man
> sich das ausprobieren.
>
> Gruß Micha

ach noch etwas, soweit geht ja alles mit ein mega16 aber die Touch 
Eingänge werden dort nicht angenommen.
Habe diese auf die ADC Eingänge zu den Porta am 16er umgestellt, sollte 
doch so gehen oder ? oder habe ich noch etwas vergessen um zu stellen.

Gruß Micha



##Daten_bus_out Alias Portb
##Daten_bus_in Alias Pinb
##Daten_ddr Alias Ddrb
##Auf_input_stellen Alias &H00
##Auf_output_stellen Alias &HFF
##Bussy Alias 7


##Touch_control Alias Porta
##Touch_ddr Alias Ddrc

von allu (Gast)


Lesenswert?

Hallo Micha,

die oberste Zeile ist 0 die unterste ist 79.  Um ein Zeichen zu 
schreiben, muss mindestens 8 Zeilen Platz sein. Spalte 0 ist links, 22 
rechts. Oder was meinst Du ?

Wieso Touch-Eingänge ? Da sollte nix mehr vom Touch drin sein.

Gruß  Allu

von Micha J. (michady)


Lesenswert?

Hi allu,
ja stimmt schon für das was du mir als letztes geschickt hattest.
aber ich wollte auch die andere probieren die damit gehen soll, auf den 
mega16, aber habe es gefunden, nur was übersehen..

OK, dan werde ich mich mal probieren mit der Zeilen Schieberei.

Gruß Micha

von Hardy (Gast)


Lesenswert?

Hallo zusammen!

Wie kann ich aus dem LCD Controller LC7981 die aktuelle Cursorposition 
auslesen? (Cursor address counter)


Besten Dank im vorraus...

von Chris (Gast)


Lesenswert?

Gar nicht

von Sven B. (svenba)


Lesenswert?

Hi Leute!
Habe anscheinend den passenden Stecker für den Folienanschluss gefunden;

Hersteller: MOLEX
Herst.- Nr.: 22-02-3043

(Lieferant: Mouser-Nr.: 538-22-02-3043)

Beschr.: SMT-Steckverbinder u. FFC/FPC 4P FFC ST ASSY
          ( Pitch 2,54 mm mit 4 Pins)

Leider hab ich diesen Stecker nur bei Mouser und anderen 
"Grosslieferanten" gefunden, wo man pauschal 20€ Versand zahlt, es sei 
denn, man kommt über 75€ Bestellwert.

Hat einer von euch ne andere Bezugsquelle??

MfG S.B.

von Jan H. (cyno)


Lesenswert?

Hi Sven,

Sven B. schrieb:
> Leider hab ich diesen Stecker nur bei Mouser und anderen
> "Grosslieferanten" gefunden, wo man pauschal 20€ Versand zahlt, es sei
> denn, man kommt über 75€ Bestellwert.

Der Vorschlag ist zwar noch nicht gekommen, aber sollte da eine 
Sammelbestellung entstehen, wäre ich mit min. 10 Stk. dabei.

Gruß,
Jan

von Sven b. (Gast)


Lesenswert?

Ok, auch ne idee!wenn sich noch min. zwei andere finden,
würd ich ne sammelbest. absetzen! Werd mal ein bißchen
auf feedback hier warten...

von Matthias R. (mons)


Lesenswert?

Habt ihr schon was für die C-Control Pro?
(Programmtext)

von Thorsten E. (nietzsche)


Lesenswert?

Also ich würde auch 5 von den Steckern nehmen...

Habe gerade mal spaßeshalber bei Farnell geschaut... 
Mindestbestellmenge: 1,2k :D

von Frank R. (frankies)


Lesenswert?

Hallo

das Display läuft soweit. Touch geht auch. Ich hatte das Glück zwei 
originalverpackte Display zu bekommen.

Nur leider finde ich die EL-Folie als Backlight ... bescheiden. Zu 
dunkel, zu grün und zirpende Geräusche macht das Teil auch noch. Gibts 
eine Möglichkeit das Display auf ein LED Backligh umzubauen? Hat das 
schon mal jemand gemacht?

Danke und viel Grüße,

Frank

von Sebastian R. (sebr)


Lesenswert?

Welchen Inverter verwendest du denn?
Mit dem "EL-Inverter 08" von Reichelt habe ich keine Probleme. Keine 
Geräusche und Kontrast auch OK

von Frank R. (frankies)


Lesenswert?

Hallo Sebastian

Ein NoName aus meiner Grabbelkiste. Könnte der die Ursache der Geräusche 
und auch des schlechten Kontrastes sein? Ich meine die Geräusche kommen 
von der EL-Folie.

Werden bei Dir auch die schwarzen Pixel grün sobald die Folie 
eingeschalten ist oder liegt das auch an meinem "komischen" Konverter?

Gruß,

Frank

von Sven B. (svenba)


Lesenswert?

Frank R. schrieb:

> dunkel, zu grün und zirpende Geräusche macht das Teil auch noch

Ich benutze auch den 08 Inverter,das Gezirpe wird aber leiser, wenn ich 
das Display anschliesse...
Scheint bei den Teilen ohne und mit wenig Last wohl üblich zu sein...

Wäre auch an einem Umbau interessiert, hab aber irgendwo einen 
Schaltplan gesehen, um mit NE55x einen Inverter selbst zu bauen, evtl 
bringt der ja mehr ohne Gezirpe...

P.S.: Hab jetzt ne Sample Anfrage per Email zu den Steckern direkt bei 
Molex (de) gemacht, mal schauen, was ein bißchen Gejammere bringt ;-)

von Sebastian R. (sebr)


Lesenswert?

Frank R. schrieb:
> Hallo Sebastian
>
> Werden bei Dir auch die schwarzen Pixel grün sobald die Folie
> eingeschalten ist oder liegt das auch an meinem "komischen" Konverter?
>
> Gruß,
>
> Frank

Ja. Also ich bin zufireden mit dem Display :)

von J. K. (rooot)


Lesenswert?

bezüglich Stecker:
Ich hab mir jetzt selbst einen solchen gebaut.
Dazu hab ich einfach die Federn aus einem IC-Sockel gezogen, und sie 
nebeneinander gelötet (in meinem Fall auf eine Pinleiste). Der Abstand 
zwischen den Federn ist dann der gleiche wie im Sockel, nur halt ohne 
Plastik.

ruhiges Händchen und Pinzette obligat ;-).

MfG
j:k

von Thorsten E. (nietzsche)


Lesenswert?

Könnte ich ein Bild sehen?

von Juppi J. (juppii)


Lesenswert?


von Hannes L. (hannes)


Lesenswert?

Juppi J. schrieb:
> Beitrag "Re: Display mit Touchscreen bei Pollin?"

Das sind allerdings Federn aus einem alten ISA-Slot. Geht gut und kostet 
nix. Wem das zu lavede ist, der kann ja noch seitliche Führungen für den 
Folienleiter ankleben oder anlöten. ;-)

...

von J. K. (rooot)


Angehängte Dateien:

Lesenswert?

Hier zwei Bilder von meiner Konstruktion.

Hoffe man kann genug erkennen.

von Timmo H. (masterfx)


Lesenswert?

So hab mir jetzt auch mal so eins bestellt für meine Wetterstation die 
ich bauen möchte. Bin ja mal gespannt. Selbst wenn das Touch nicht geht 
kann man für den Preis nichts falsch machen...

von Hannes L. (hannes)


Lesenswert?

> Selbst wenn das Touch nicht geht...

Der Touch ging bei meinen Exemplaren immer. Probleme gab es mit 
schlechter Kontaktierung des Displays (fehlende Pixelzeilen). Die 
fehlerhaften Displays wurden mir aber problemlos umgetauscht. Aber 
selbst bei Benutzung als reines (ressourcenschonendes) Text-LCD (10 
Zeilen je 20, 22 oder 26 Zeichen) ist der Preis ok.

...

von NrDesign (Gast)


Lesenswert?

Hallo!

Ich habe mir vor ein paar Tagen auch ein Touch-Display besorgt; heute 
ist es angekommen. Ich habe alles nach den Anleitungen hier aufgebaut, 
es funktioniert tadellos :)
Entweder hatte ich nur Glück oder Pollin lernt.

Danke an alle, die dieses Projekt möglich machen!

Gruß,
NrDesign

von J. K. (rooot)


Lesenswert?

>Wäre auch an einem Umbau interessiert, hab aber irgendwo einen
>Schaltplan gesehen, um mit NE55x einen Inverter selbst zu bauen, evtl
>bringt der ja mehr ohne Gezirpe...

ich hätte dazu noch ein paar Erfahrungserte, denn bei mir läuft so was 
ähnliches seit 2 Wochen.

Zuerst baute ich mit einem Timer555 einfach einen Multivibrator mit 500 
Hz takfrequenz auf. Dieses Signal verstärkte ich noch mit einem 
einfachen Wald und Wiesen Transistor (BC547) und schickte es in einen 
Netztrafo (24V-230V).

Das "Problem" an der Schaltung ist evt. , dass kein Sinus erzeugt wird, 
sondern ein Rechteck (bin mir aber nicht sicher, wie das nach dem Trafo 
ausschaut).

In der Praxis läuft das ganze problemlos. Die Schaltung erzeugt 80V, was 
auch leicht für die blaue Hintergrundbeleuchtung reicht.
Summen ist keines zu vernehmen. Ob das so ist, ist aber sicher vom 
verwendeten Trafo abhängig.

Inzwischen hab ich vom NE555 abgesehen, und erzeuge das Signal über 
µC-Pin und Timer im PWM Mode, der Rest ist aber der selbe.

MfG
j:k

von Sven B. (svenba)


Lesenswert?

Hab ich das richtig verstanden? Steuerst du die Beleuchtung und/oder 
Kontrast über PWM?? Das ist genau das, was ich bald vorhabe...
Hättest evtl mal nen Schaltplan??

von J. K. (rooot)


Lesenswert?

Ja, ich steuere die Beleuchtung über PWM. Kontrast stelle ich über ein 
normales Poti ein. Diese ist ein bisschen aufwendiger per PWM zu regeln 
da ja auch negative Spannungen eingestellt werden müssen.

Bezüglich Schaltplan:
*µC-Pin - 1k Vorwiderstand - Basis BC547
*Emitter auf Masse
*Collector auf Trafoanschluss
*den anderen Trafoanschluss auf +Ub

Softwaremäßig hab ich noch sicher gestellt, das der Transitor sperrt, 
wenn Beleuchtung ausgeschaltet ist, denn Gleichspannung über 
Transformator kommt einen Kurzschluss schon sehr nahe ;-).

Mehr is da nicht dabei, einfach "Transistor als Schalter".

MfG
j:k

von J. K. (rooot)


Lesenswert?

Nachtrag:
wer mittels Timer das Signal erzeugen will:
http://www.elektronik-kompendium.de/sites/slt/0310131.htm

von Thomas H. (microtom)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich bin seit neuem ebenfalls im Besitz eines Pollin 16080 Touch 
Displays.

Als Schaltung habe ich die Schaltung aus dem Forum hier (siehe Anhang) 
für den ATMEGA32 gewählt.

Da ich AVR Anfänger bin würde ich gerne mit Bascom arbeiten. Leider 
fehlt mir noch das nötige Wissen zur Portanpassung und für den ersten 
Schritt. Gibt es ein kleines Beispiel, welches mit BASCOM und dem 
beigefügten Schaltplan läuft?

Eine Frage noch zum Schaltplan: Ist der Quarz denn überhaupt nötig? Kann 
ich nicht mit dem internen Takt arbeiten?

Ich würde mich über ein paar Tipps und Kniffe freuen!
Über ein Beispiel, das die Ports angepasst hat und auf dem MEga32 läuft 
wäre ich superhappy ;-)

Gruß
Thomas

von Sven B. (svenba)


Lesenswert?

Bascom: Nicht meine Welt.

Bezüglich Quarz:
Gewöhn dich besser gleich daran, Einen zu nutzen, da du früher oder 
später sowieso auf Einen zurück greifen wirst, weil dir der interne Takt 
zu ungenau und/oder zu langsam wird!!

von Thomas H. (microtom)


Angehängte Dateien:

Lesenswert?

Wird gemacht, danke für den Hinweis.

Würde aktuell meine Schaltung aber auch ohne den Quarz laufen (da Sie 
gerade so schön aufgebaut ist und der Quarz auch keinen Wert angegeben 
hatte im Schaltplan)? - Denke eher nicht aber wer weiß :)

Hat jemand noch ein paar Codeschnipsel bezüglich Bascom und der 
genannten Schaltung?

Wenn Nein, würde mir schon helfen, wenn ich genau wüsste, wie ich meine 
Ports auf die Schaltung korrekt anpasse in folgendem Code (bzw. dem im 
Anhang).
1
$regfile = "m32def.DAT"
2
$crystal = 8000000
3
$baud = 19200
4
$hwstack = 64
5
$swstack = 256
6
$framesize = 84
7
8
9
'PortPins zum Display 16080 festlegen und initialisieren
10
11
12
Daten_bus_out Alias Portd
13
Daten_bus_in Alias Pind
14
Daten_ddr Alias Ddrb
15
Auf_input_stellen Alias &H00
16
Auf_output_stellen Alias &HFF
17
Bussy Alias 7
18
19
20
Touch_control Alias Porta
21
Touch_ddr Alias Ddrc

Danke
Gruß und schönes Wochenende
Thomas

von Thomas H. (microtom)


Lesenswert?

So müssten die ja passen, aber es tut sich leider nicht.

Control_bus Alias Portc
Rs Alias 5
Rw Alias 4
E Alias 3
Cs Alias 1
R Alias 0
Pullups_ein Alias &HFF

von allu (Gast)


Lesenswert?

Hallo Thomas

auf den ersten Blick fehlt noch die Anpassung der beiden 
Datenrichtungsregister an deine Schaltung.

Gruß   allu

von allu (Gast)


Lesenswert?

Für das Display habe ich aus Verarbeitungszeitgründen Assemblerroutinen 
programmiert, deshalb zusätzlich die Datenrichtungsregister im 
Bascom-Teil.

von Thomas H. (microtom)


Lesenswert?

Musst entschuldigen, falls ich ein wenig zu "anfängerrisch" frage, aber 
sind das nicht die zwei Beiden hier:
1
Daten_bus_out Alias Portd
2
Daten_bus_in Alias Pind

und das eben auch auf PORTD?

Wäre es Dir möglich, mir den Code ein wenig genauer zu kommentieren? 
Wäre prima, das würde bestimmt meinem Verständniss auf die Sprünge 
helfen ;-)

- Wie passe ich die Datenrichtungsregister an?
- Ist der Quarz nun zwingend? Wenn ja dann 16MHz?
- Welche Werte für die Kondensatoren?

Wenn ich das Display mal zum laufen gebracht habe mach ich 'nen 
Luftsprung und teile die Erfahrungen auch gerne einem 
"Zukünftigen"-Neuling mit.

Gruß
Thomas

von allu (Gast)


Lesenswert?

Ist nicht anfängerisch, bin selbst noch am üben. Probier mal:

Für Port D:
Daten_bus_out Alias Portd
Daten_bus_in Alias Pind
Daten_ddr Alias Ddrb <--- Ddrd einstetzen, weil Port d und nicht Port b


und für Port A:
Touch_control Alias Porta
Touch_ddr Alias Ddrc <---  Ddra

von Thomas H. (microtom)


Lesenswert?

Hab ich inzwischen gemacht
1
Daten_bus_out Alias Portd
2
Daten_bus_in Alias Pind
3
Daten_ddr Alias Ddrd
4
Auf_input_stellen Alias &H00
5
Auf_output_stellen Alias &HFF
6
Bussy Alias 7
7
8
9
10
Touch_control Alias Porta
11
Touch_ddr Alias Ddra

Leider kein Erfolg. Was ist mit dem Quarz und den Kondis? Hast Du mir da 
noch eine Inforamtion?

[Aktuell hab ich 2mm Streifen auf dem Display bei mittlerem 
Kontrast...?! Aber keine Funktion. Gibts eine Möglichkeit herauszufinden 
ob das Display 'theoretisch' noch funktioniert oder ob ich es irgendwie 
abgeschossen hab? Mir fällt da gerade nichts sein.]

@Allu, wie hast Du Dein Display mit dem Atmega32 zusammengeklebt? SChon 
mit dem gleichen Schaltplan, oder? Hast Du eine Schaltung mit passendem, 
funktionierendem Code?

Gruß
Thomas

von Hannes L. (hannes)


Lesenswert?

Wollt Ihr für Eure Bascom-Anfängerfragen nicht einen eigenen Thread 
aufmachen??

...

von allu (Gast)


Lesenswert?

Bleib erstmal bei 8 Mhz, dafür sind die Zeiten der Displayansteuerung 
ausgelegt. Langsamer gehts immer, schneller muß man probieren. Demnächst 
möchte ich auch einen Mega32 mit 16 Mhz verwenden und dabei die 
Ansteuerzeiten anpassen.

Ein Quarz ist für die Displayansteuerung nicht notwendig, aber sehr 
empfehlenswert, Stichwort: serielle Schnittstelle.

Bei 8 Mhz-Quarzen verwende ich 27pf.

von Thomas H. (microtom)


Lesenswert?

Damit es die AVR-Studio'ler nicht stört:

Fortsetzung für Pollindisplay mit ATEMGA32 und BASCOM hier:

Beitrag "Pollin 16080 Touch mit ATMEGA32 und BASCOM"

Danke!

von allu (Gast)


Lesenswert?

Hut ab Hannes Lux, du hast sofort mit sicherem Blick gleich erkannt das 
Assemblerprogrammierung gleich Bascom-Anfängerfragen sind.

Gruß  allu

von Sven B. (svenba)


Lesenswert?

allu schrieb:
> Hut ab Hannes Lux, du hast sofort mit sicherem Blick gleich erkannt das
> Assemblerprogrammierung gleich Bascom-Anfängerfragen sind.
>
> Gruß  allu


...hmmm... weil man sich für Bascom garnicht erst mit dem Wissen um die 
Anfänge und Funktionen des uC befasst
sondern sich gleich auf die bascom-befehle verlässt, die vorher jemand 
Anderes fertig von assembler-codezeilen auf einen bascom-befehl 
übersetzt hat? :-p

von Thomas H. (microtom)


Lesenswert?

Bitte, das muss doch nicht sein. Jedem das Seine.
Ich bin der Meinung man(n) muss das Rad nicht jedes mal neu erfinden, 
dennoch sollte man die Grundlagen kennen. Keinen Streit desshalb ;-)

Persönich, kenne ich das Prinzip - hab aber einfach mehr Erfahrung in C# 
Programmierung und das Aufgrund von früheren Basic Erfahrungen.

Das wiederrum erinnert an BASCOM -> desshalb die Entscheidung (vorerst 
mal).

Assembler - klar, das ist die Hardsoftwaregrundlage.

Aber es geht mir z.B. jetzt um eine ordentliche Funktion und nicht 
allein um das 'Wie' und 'Warum'. Das kommt später, sobald eine 
Grundfunktion gewährleistet ist und ich mich mit Details beschäftigen 
kann.

Aktuell ist mir nichteinmal bekannt ob meine Hradware OK ist. (Der µC 
ist OK, aber z.B. das Display,die Verdrahtung (wobei Sie das sein 
sollte), oder eben halt auch der Code))

Gruß und guten Abend!
Thomas

von Hannes L. (hannes)


Lesenswert?

allu schrieb:
> Hut ab Hannes Lux, du hast sofort mit sicherem Blick gleich erkannt das
> Assemblerprogrammierung gleich Bascom-Anfängerfragen sind.
>
> Gruß  allu

Naja, ein paar in Bascom eingebundene ASM-Befehle würde ich nicht gleich 
als "Assemblerprogrammierung" bezeichnen. Wenn es schon ASM sein soll, 
dann braucht es kein Bascom, dann ist Bascom eher hinderlich als 
nützlich.

Aber darum (Bascom-Bashing) ging es mir gar nicht. Mir ging es eher 
darum, diesen Thread für wirkliche Infos zu dem genannten LCD 
freizuhalten und nicht mit Smalltalk und einem Anfänger-Grundkurs in 
irgendeiner Programmiersprache zuzumüllen. Deshalb empfahl ich, für den 
Anfänger-Grundkurs einen neuen Thread aufzumachen.

Nungut, mir soll's egal sein, macht was Ihr wollt, aber macht was... ;-)

...

von Sven B. (svenba)


Lesenswert?

Sorry, hab mich hinreissen lassen.. Aktion und Reaktion...
Kommt nicht wieder vor..

Zurück zum Thema;


Im Unterschied zu deinem Schaltplan hab ich einen 20k Poti zwischen Pin 
2 (+5V) und 17 (VEE) gehängt, der mit dem Schleifer an Pin 3(V0) 
hängt.So stehts auch im Datasheet des 16080.

(Mir ist aufgefallen, dass ein kleinerer Wert als 20k einen schlechteren 
Kontrast gibt.)
Danach hab ich erstmal im Hauptprogramm alle Subprogramme ausser 
Initialisierung auskommentiert, um zu sehen, ob der Reset wenigstens 
läuft.
Danach hab ich nur Highs auf dem Display ausgegeben, dann Lows, dann 
Hex55 (Strichel) usw... Immer mal wieder am Kontrast drehen, sonst 
entgeht einem schnell was!!

ich hoffe, das hilft dir...

von Thomas H. (microtom)


Lesenswert?

Danke, ich werde mal ein paar Tests auf diese Weise durchführen.

~Thomas

von Philipp D. (arcon)


Angehängte Dateien:

Lesenswert?

Hallo Leute!
Ich lese nun seit ein paar Wochen mit bei diesem Thread und habe mir 
jetzt auch zwei Pollin quasi Touch screens und zwei Atmega 16 geholt.

Softwaretechnisch sollte alles klappen, jedoch Hardwaretechnisch bin ich 
mir unsicher welche Bauteile ich noch brauche.

Der Schaltplan von Benedikt K. welchen ich auch angehängt habe ist mein 
Anhaltspunkt, jedoch mit dem beschriebenen Text:
> Die Anschlussbelegung dazu. Die ganzen Cs an Spannung, ARef,
> Resetbeschaltung usw. habe ich jetzt im Schaltplan weggelassen.
> Mit dem Taster wird das Bild gelöscht.
habe ich leider so meine Probleme!

Nun zu meinem Fragen/Behauptungen:
> CS heißt wohl Chip Select; Wo sind diese CS Pins?
> Aref habe ich gefunden, dies gehört auf VCC?!
> Resetbeschaltung ist glauch ich 0.3V auf Reset?
> Brauche ich einen Quarz / wieviel MHz?
> Wird der Touchscreen auch am Atmega angeschlossen?
> Mit der Gefahr, dass Ihr das schon zu oft gehört habt ^^, kann ich evt. einen 
kompletten Schatlplan oder eine Komplettierung bekommen ( wäre echt meine Rettung 
)?

Ich brauche das ganze für eine Maturaarbeit in Projektmanagement. Wir 
bauen eine Haustechniksteuerung für Medienräume auf unserer HTL (TGM 
Wien). Ich werde mikrokontroller.net auf jeden Fall in der Klasse 
weiterempfehlen, weil Ihr (und Pollin ^^) seit die Größten!

Antworten können auch direkt an mich gesendet werden: t.toifl (at) 
codes4web at (->wegen robots)

von Sven B. (svenba)


Lesenswert?

Hi!
Mit "den Cs"(C´s) meinte Benedikt die Kondensatoren, die zur 
Glättung/Stabilisierung/Entprellung usw an den jeweiligen Pins benötigt 
werden!
"CS" steht sonst für Chip-Select, da hast du recht!

Am einfachsten guckst du dir in den Tutorials hier ( 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment )die 
Grundbeschaltung (wegen der C´s) der ATMega an, da steht alles benötigte 
drin und das ändert sich meistens nicht von Chip zu Chip.

Zur Beschaltung des GLCD/Touch brauchst du nur so ca.10-15 Posts nach 
oben scrollen, da hat Thomas H. das letzte Mal einen Plan angehängt...
Ja, die Touch Leitungen kommen direkt an den uC, müssen jedoch an den 
ADC-Pins (Port C) hängen, weil du ja die jeweilige Spannung draufgeben 
und dann auswerten musst.Auf dem von dir angehängten Plan sind die 
Touch-Leitungen mit x+- und y+- bezeichnet!

Man kann ohne Quarz, also mit internem Takt arbeiten, das ist dann 
allerdings nicht gaaanz so genau und wenn du eh Bauteile bestellen 
willst, würde ich gleich noch den Quarz und die zwei C´s dazu 
bestellen....
Steht auch im Tut.

In welcher Sprache willst du denn Programieren?

Viel Spass!!

von Timmo H. (masterfx)


Angehängte Dateien:

Lesenswert?

Mein ist da und lief dank Benedikts Quellcode auf anhieb

von Philipp D. (arcon)


Lesenswert?

Sven B. schrieb:

> In welcher Sprache willst du denn Programmieren?

Java ^^
Nein C ist für uns am einfachsten, da wir darin schon Erfahrung haben!

Ich werde nun mal deinen Rat befolgen, mir einen Quarz und die Elkos 
kaufen und dann mit den Tests starten.

Also dann ...

von Timmo H. (masterfx)


Lesenswert?

Hat jemand einen Tipp für einen günstigen Inverter für die Beleuchtung? 
Möglichst kein und günstig. EDIT: Ahh EL-Inverter 08 von Reichelt.

Oder gibts eine Möglichkeit die EL-Folie mit einigermaßen homogenen 
Ausleuchtung auf LED oder so umzubauen?

von Sigint 112 (sigint)


Lesenswert?

Philipp Dju schrieb:
> Sven B. schrieb:
>
>> In welcher Sprache willst du denn Programmieren?
>
> Java ^^

Warum nicht Java!?? :-)

http://www.harbaum.org/till/nanovm/index.shtml

Gruß,
  SIGINT

von Philipp D. (arcon)


Lesenswert?

> Warum nicht Java!?? :-)
>
> http://www.harbaum.org/till/nanovm/index.shtml
>
> Gruß,
>   SIGINT

Super !!!
Gleich ausprobieren!

lg

von Sebastian S. (bachelor)


Lesenswert?

Hi Leute,

kann mir einer sagen ob es normal ist das der EL-Inverter 08 von 
Reichelt richtig laut und eklig pfeift?

Gruß Sebastian

von igel (Gast)


Lesenswert?

Meiner pfeift kaum hörbar. Bei Nebengeräuschen (Radio, PC,etc.) fällt 
das nicht mehr auf.

von Sebastian R. (sebr)


Lesenswert?

Bei mir ist der EL08 unhörbar

von Sebastian S. (bachelor)


Lesenswert?

Danke!

Dann werd ich mal bei Reichelt nachfragen!

Gruß Sebastian

von Tobias T. (Firma: codes4web) (roverfreak)


Angehängte Dateien:

Lesenswert?

Fakten
-----------------------------------------
> Habe die Schaltungvon Benedikt nachgebaut
> Verwende den AVR Bootloader FastBoot von Peter Dannegger
> Softwareupload funktioniert
> auf PIN 11 (laut Plan unbelegt) kommt (am Pollin AVR FUNK) ein Blinksignal an!?
> Bei angeschlossener Stromversorgung an der Schaltung hat das Display folgende
>    Zustände: (Zufällig!) Manchmal: Siehe Bild, Manchmal: Weißer 7mm dicker,
>    horizontaler Balken, welcher von oben nach unten fährt! Manchmal: nichts!
> 8Mhz Quarz
> Atmega8

Fragen
-----------------------------------------
> Wenn ich die Schaltung nachbaue funktioniert gar nichts!
>    Wenn ich aber XTAL1 abstecke, kommt wieder das Blinksignal an!?
> Das Display zeigt keine Regung!
> Was sollte am Display erscheinen!

Ich hoffe ich habe alle Informationen angegeben und Ihr könnt mir 
helfen!

Lg
Tobias

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Habe den Fehler für das Bild gefunden: LCD enable nicht gesetzt.

Trotzdem habe ich eindeutig ein Quarz Problem!
Bitte sagt mir wie und ob ich XTAL wirklich an das LCD anlegen 
darf/muss.

Ach ja und was ist am Touch x und y?

Lg
Tobias

von Thomas H. (microtom)


Lesenswert?

Hi,

Folienleiter rechts von Display, dann:

Y_minus
Y_plus
X_plus
X_minus

Gruß
Thomas

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Danke, sonst eine Idee warum mein DIsplay nichts anzeigt?

von Thomas H. (microtom)


Lesenswert?

Wie hast Du denn XTAL an das LCD angelegt? Eventuell verstehe ich Dich 
gerade falsch, aber der Quarz muss an die XTALs vom ATMEGA.

Hast Du einen Schaltplan, wie Du das Display an Deinen Atemga 
angekoppelt hast?

Gruß
Thomas

von Tobias T. (Firma: codes4web) (roverfreak)


Angehängte Dateien:

Lesenswert?

Das ist der Plan den ich hier aus dem Forum habe.
Ich habe jetzt mal den Quarz abgehängt und XTAL1/2 als I/O Port genommen 
(wie es laut Plan angegeben ist). Weiter habe ich die interne Freq. auf 
8mhz gestellt.

Ich habe den Atmega laut AVR Tutorial angeschlossen (exkl. Quarz).
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment

Ich habe das Display nach Plan (mit Kontrolle der Displaybeschreibung) 
angeschlossen.

Als Software nehme ich "TOUCH_TEST_1.HEX" von ALLU:
Beitrag "Re: Display mit Touchscreen bei Pollin?"

Also was kann der Fehler sein?

Meine Vermutungen:
> Kontrastfehler
> Software nicht mit Plan passend.
> Ich habe ein Kabel falsch angeschlossen ( x Mal kontrolliert =( )

Lg
Tobias

von Thomas H. (microtom)


Lesenswert?

Hi,

denke auch dass das HEX File nicht zum Plan passt. Mit was programmierst 
Du? BASCOM? Da könnte ich Dir eher behilflich sein (mir selbst wurde von 
Allu geholfen)

Gruß
Thomas

von Timmo H. (masterfx)


Lesenswert?

Hast du den Poti für den Kontrast dran?
Ich hatte das anfangs auch, da war der ISP aber schuld, da der 
Controller nach dem Programmieren im Reset gehalten hat.

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Hmm, ich kenne Bascom nicht..
Ich lade mir mal bascom herunter (die demo) ;)
(4k reicht allemal oder?)

Hast du eine .bas Datei für meinen Plan (zum Testen)?

Lg
Tobias

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Timmo H. schrieb:
> Hast du den Poti für den Kontrast dran?
> Ich hatte das anfangs auch, da war der ISP aber schuld, da der
> Controller nach dem Programmieren im Reset gehalten hat.

Ich habe einen Poti dran - 100k
Der At8 startet auch ständig neu (glaube ich), da, als ich eine Testsw 
aus dem AVR Tut genommen habe (led1 und 2 wechseln per tastendruck) das 
prog auch ständig neu startet.

Lg
Tobias

von Sven B. (svenba)


Lesenswert?

Nochmal zum Stecker....
Wer suchet, der findet!

Was haltet ihr von diesem Stecker?

http://www.reichelt.de/?ACTION=3;ARTICLE=86701;PROVID=2402

Laut Beschreibung im Reichelt Katalog 4 Pin mit 1mm Pitch...

Viel Spass noch!!

von Alex D. (allu)


Lesenswert?

Hallo Tobias,

doch, "TOUCH_TEST_1.HEX" läuft auf der Mega8-Schaltung von Benedikt. 
Allerdings wird als erstes oben links nur ein dünnes Kalibrier-Kreuzchen 
angezeigt. Es gibt noch eine Version ohne Touch: "Nur_Text_2.hex" 
(deutlich weiter oben zu finden).
Die Demoversion von Bascom reicht leider nicht aus.

Gruß
Allu

von Sascha W. (sascha-w)


Lesenswert?

Sven B. schrieb:
> Nochmal zum Stecker....
> Wer suchet, der findet!
>
> Was haltet ihr von diesem Stecker?
>
> http://www.reichelt.de/?ACTION=3;ARTICLE=86701;PROVID=2402
>
> Laut Beschreibung im Reichelt Katalog 4 Pin mit 1mm Pitch...
>
der Folienleiter des 16080 hat 2.54mm Raster - nicht 1mm !!

Sascha

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Alex D. schrieb:
> Hallo Tobias,
>
> doch, "TOUCH_TEST_1.HEX" läuft auf der Mega8-Schaltung von Benedikt.
> Allerdings wird als erstes oben links nur ein dünnes Kalibrier-Kreuzchen
> angezeigt. Es gibt noch eine Version ohne Touch: "Nur_Text_2.hex"
> (deutlich weiter oben zu finden).
> Die Demoversion von Bascom reicht leider nicht aus.
>
> Gruß
> Allu

Bei mir wird aber garnichts angezeigt =(
Kann das ein Kontrastfehler sein?

Ich probiers nochmal ... (mit Lupe ^^)

Danke & Lg
Tobias

von Alex D. (allu)


Lesenswert?

Am Displayanschluß Pin 3 liegen bei meinem Versuchsaufbau -4,8 Volt an = 
maximaler Kontrast = der Ausgangsspannung von Pin 17.

Wird nur etwa -3,xx  Volt angezeigt, sollte die gesamte Pixelfläche 
sichtbar dunkel werden, dann klappt aber was mit der Ansteuerung nicht. 
Vorschlag: Prozessor aus der Fassung nehmen und die Verdrahtung nochmal 
durchklingeln.
Gruß  allu

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Alex D. schrieb:
> Am Displayanschluß Pin 3 liegen bei meinem Versuchsaufbau -4,8 Volt an =
> maximaler Kontrast = der Ausgangsspannung von Pin 17.
>
> Wird nur etwa -3,xx  Volt angezeigt, sollte die gesamte Pixelfläche
> sichtbar dunkel werden, dann klappt aber was mit der Ansteuerung nicht.
> Vorschlag: Prozessor aus der Fassung nehmen und die Verdrahtung nochmal
> durchklingeln.
> Gruß  allu

ca. -4,8V (4,9) liegen an (je nach Eingangsspannung)
Hab jetzt 17 mit 3 verbunden!

Jedoch habe ich auf Pin 11 ein LED gelegt und das Blinkt im 
Sekundentakt!?
1) Pin 11 ist eigentlich nicht belegt!
2) Egal auf welchen Pin ich das LED stecke es geht an  aus  an ... 
????

Lg
Tobias

von Hannes L. (hannes)


Lesenswert?

> Hab jetzt 17 mit 3 verbunden!

Was soll das??

17 ist der Ausgang der Ladungspumpe, da gehört das Poti dran, dessen 
Schleifer nach 3 geht.

...

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Hannes Lux schrieb:
>> Hab jetzt 17 mit 3 verbunden!
>
> Was soll das??
>
> 17 ist der Ausgang der Ladungspumpe, da gehört das Poti dran, dessen
> Schleifer nach 3 geht.
>
> ...

Dann ist das Display grau (schwarz)..
Kein Bild =(

Nichts und wie gesagt, ich glaube, dass der AVR ständig neu startet ..

von allu (Gast)


Lesenswert?

Versuchsweise den Programmieradapter abziehen. 10 kOhm von Reset nach 
+5V gelegt? Welche Pins meinst Du, vom Prozessor oder Display?

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

allu schrieb:
> Versuchsweise den Programmieradapter abziehen.
Ich habe keinen PRAdapter im Einsatz (siehe Foto einige Posts vorher)

> 10 kOhm von Reset nach +5V gelegt?
Ja und einen Kond. nach GND

Welche Pins meinst Du, vom Prozessor oder Display?
AVR Pin 11 nach GND und das LED leuchtet (obwohl im Plan nicht 
vorgesehen)
Und es blinkt im Sekundentakt ^^ (ca)
Auch wenn ich andere SW auf den Atmega lade startet diese ständig neu...
Ich habe den Bootloader "FastBoot" von Peter Dannegger im Einsatz ..
Kann das der Fehler sein?

Verstehen Sie das?

Lg
Tobias

von allu (Gast)


Lesenswert?

Watchdog : Vielleicht WDTON-Fuse gesetzt ?

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Zeigt keine Relevanz !?
Habs ein und ausgeschaltet - 0 Effekt ..
Kann das Display kaputt sein?

Gibts einen Weg zu Überprüfen ob das Display in Ordnung ist?
Das Touch funktioniert glaube ich (hab mal das Messgerät angelegt)

Hintergrundbeleuchtung geht auch (mit Inverter)

Kann der Booloader der Fehler sein?

Lg
Tobias

von Thomas H. (microtom)


Lesenswert?

Bei mir hat es zuerst auch nicht funktioniert und ich hatte die gleichen 
Ergebnisse (wie ich das interpretiere) wie Du.

Ein zweites (neues) Display hat funktioniert.

Dennoch empfehle ich noch einmal die komplette Verdrahtung und die 
Zuordnung der einzelnen Ports passend zum Quellcode zu vergleichen. Am 
besten nicht einfach das Hex-File aufspielen sondern wirklich den Source 
verwenden und die Ports vergleichen. In den Datenleitungen werden wohl 
die wenigsten Fehler passieren, bei den Steuerleitungen ist das schon 
eher der Fall.

Weiterhin wichtig (Tipp von Allu):
Keine zu langen Leitungslänge zum Display. Bei Flachbandleitungen 
aufpassen, zum testen am besten Display direkt verbinden.

Tipp: Binde eine LED mit in das Programm ein und schau mal ob Dein 
Programm überhaupt 'noch funktioniert' mit z.B. einem blinken der LED.

Gruß
Thomas

von Hannes L. (hannes)


Lesenswert?

Schuss ins Blaue:

Abblock-Kondensatoren am AVR und LCD vergessen...

...

von Thomas H. (microtom)


Lesenswert?

Noch ein Schuss ins Blaue....

JTAG-FUSE deaktiviert?

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Hannes Lux schrieb:
> Schuss ins Blaue:
>
> Abblock-Kondensatoren am AVR und LCD vergessen...
>
> ...

Thomas H. schrieb
> Noch ein Schuss ins Blaue....
>
> JTAG-FUSE deaktiviert?

Geht das in meine Richtung ?

Lg
Tobias

von Hannes L. (hannes)


Lesenswert?

> Geht das in meine Richtung ?

Ja, zumindest mein "Schuss".

Es hat sich schon oft gezeigt, dass Fehler gesucht wurden, die es gar 
nicht gab. Dafür hatte der "Anfänger" Selbstverständlichkeiten 
vergessen, über die man nicht mehr spricht, weil sie halt so 
selbstverständlich sind, dass sie oft nichtmal auf Schaltplänen zu 
finden sind (besonders in Lehrbüchern).

Dazu gehört unter Anderem auch ein Abblock-Kondensator an jedem 
Stromversorgungspin eines jeden Digital-ICs gegen seinen Massepin. 
Außerdem gehört noch ein Glättungskondensator an AREF, doch der ist hier 
nebensächlich, der verursacht keinen Reset.

Die Abblock-Kondensatoren gehören so dicht wie möglich an die 
Versorgungspins des ICs und nicht, wie bei Anfängern oft zu sehen ist, 
irgendwohin in eine Ecke der Schaltung. Geeignet sind 
Keramik-Vielschicht-Kondensatoren von etwa 100 nF. Ich bevorzuge dafür 
seit einiger Zeit SMD-Chipkondensatoren 100 nF in Baugröße 0805, die 
sind billig und gut, und lassen sich gut an die Pins moderner AVRs 
anlöten.

Auch am Steckverbinder zum LCD platziere ich 2 dieser 
Stützkondensatoren, einen zwischen Versorgung und Masse, den anderen 
zwischen Kontrast und Masse. Ich habe das mal in irgendeinem 
LCD-Datenblatt gesehen und mache das inzwischen bei allen LCD-Typen.

...

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Ok, also Kondis habe ich
------------------------------------
*) 47nF zwischen GND & Pin1 (Reset)
*) 100nF zwischen 7&8 (VCC und GND)
*) 100 nF zwischen 20 & 22 (AVCC & GND)
*) 100 nF zwischen 21 & 22 (AREF & GND)

& einen 100K zwischen 1 & GND (Reset)

Lg
Tobias

von Thomas H. (microtom)


Lesenswert?

Falls Du den PortD verwendet hast (zur Ansteuerung des Displays) muss 
die JTAG-Fuse deaktiviert werden, sonst geht nichts. Hast Du mal 
geschaut ob diese deaktiviert ist?

Gruß
Thomas

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Thomas H. schrieb:
> Falls Du den PortD verwendet hast (zur Ansteuerung des Displays) muss
> die JTAG-Fuse deaktiviert werden, sonst geht nichts. Hast Du mal
> geschaut ob diese deaktiviert ist?
>
> Gruß
> Thomas

Low Fuse (0xC1)
11000001

High Fuse (0x99)
10011001

Lockbits (0x3F)
11111111

Ich kann keine Einstellung bezüglich JTAG - Fuse finden (myAVR Workpad).
So viel ich weiß hat der Atmega8 kein JTag!

Lg
Tobias

von Hannes L. (hannes)


Lesenswert?

Den Kondensator am Reset benutze ich nicht mehr, seitdem die AVRs BOD 
haben. 100k als Reset-PullUp sind zu hoch, ich weiß nicht, wo Du diese 
Dimensionierung her hast, ich hätte damit Angst vor ungewolltem Reset. 
Als Reset-PullUp verwende ich 3k9, bei DW-fähigen AVRs 10k.

...

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Hannes Lux schrieb:
> Den Kondensator am Reset benutze ich nicht mehr, seitdem die AVRs BOD
> haben. 100k als Reset-PullUp sind zu hoch, ich weiß nicht, wo Du diese
> Dimensionierung her hast, ich hätte damit Angst vor ungewolltem Reset.
> Als Reset-PullUp verwende ich 3k9, bei DW-fähigen AVRs 10k.
>
> ...

Oh, ja sind auch 10k! habe mich mit der 0 vertippt!
ist der AT8 DW-fähig?
Er restartet wirklich ständig!

Lg
Tobias

Edit:
Ich habe gerade nachgesehen und festgestellt, ich habe folgenden R: 
braun schwarz rot gold
Das sind nur 1k glaube ich! Da hat der Con*** Mitarbeiter wohl Mist 
gebaut...
Sind 3k wichtig?

Lg

von Hannes L. (hannes)


Lesenswert?

Ich kenne keinen AT8. Falls Du den ATMega8 meinst, nein, der ist nicht 
DW-fähig, siehe Datenblatt, der pinkompatible ATMega48/88 dagegen schon. 
Außerdem kannst Du mit Deiner Sisy-Hardware DW sowiso nicht nutzen.

Der ATMega8 hat auch kein JTAG, weshalb Du die Einwände betreffs JTAG 
getrost ignorieren kannst.

In Deinem Beitrag sehe ich:

> High Fuse (0x99)
> 10011001

Das heißt, Du hast den Watchdog per Hardware aktiviert (WDTON-Fuse 
aktiv, also Bit 6 auf 0). Nungut, wenn der Köter scharf ist, dann musst 
Du ihn auch (per Programm) regelmäßig (also in der Mainloop) streicheln 
bzw. füttern, damit er ruhig bleibt und keinen Reset auslöst. Der 
ASM-Befehl dafür ist "WDR".

...

von Hannes L. (hannes)


Lesenswert?

Der Reset-PullUp ist ein Kompromiss zwischen Störschutz (möglichst 
niederohmig) und Programmierbarkeit (möglichst wenig Last, also 
hochohmig).

Mich stört allerdings, dass wir diesen Spezial-LCD-Thread mit diesem 
Anfängerwissen zumüllen, das hat hier nun wirklich nichts zu suchen. Ich 
bitte die Moderatoren, hier mal alles das zu löschen, was nicht direkt 
mit dem Pollin-LCD zu tun hat.

...

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Hannes Lux schrieb:
> Mich stört allerdings, dass wir diesen Spezial-LCD-Thread mit diesem
> Anfängerwissen zumüllen, das hat hier nun wirklich nichts zu suchen.

Sry, aber jeder fängt mit "Anfängerwissen an!"..

Ich benötige dieses Display für unsere Matura-Arbeit (Abitur) und da ist 
mir das schon einigermaßen wichtig!

Ich werde die gewonnenen Informationen anwenden und gebe bescheid!

Lg
Tobias

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Leute ich muss euch DANKEN!
ES FUNKTIONIERT!

Für kommende Personen, welche die selben Probleme wie ich haben,
hier mein Fehler:

Wie schon lange bekannt:
  Hannes Lux schrieb:
> Die Abblock-Kondensatoren gehören so dicht wie möglich an die
> Versorgungspins des ICs und nicht, wie bei Anfängern oft zu sehen ist,
> irgendwohin in eine Ecke der Schaltung. Geeignet sind
> Keramik-Vielschicht-Kondensatoren von etwa 100 nF. Ich bevorzuge dafür
> seit einiger Zeit SMD-Chipkondensatoren 100 nF in Baugröße 0805, die
> sind billig und gut, und lassen sich gut an die Pins moderner AVRs
> anlöten.

Ich habe zwar den Kondensator direkt neben den IC gepinnt, jedoch
habe ich die Beinchen nicht abgeschnitten. Abschneiden -> Bild!

Vielen Dank an die Comunity!

Lg
Tobias

von M. S. (bugles)


Lesenswert?

Hallo,

habe mir das Display auch besorgt. Leider wiess ich nicht wie ich das 
ding ioitialisieren soll. Im Datenblatt steht nix und hier im Forum geht 
zwar ein code rum aber ich möchte nicht abschreiben.

Kann mir  jemmand verraten wo ihr die initialiserungsroutinen herhabt.

von Benedikt K. (benedikt)


Lesenswert?

Aus dem Datenblatt des LC7981.

von M. S. (bugles)


Lesenswert?

hmpf danke ..

von Tobias T. (Firma: codes4web) (roverfreak)


Angehängte Dateien:

Lesenswert?

Habe das Ganze jetzt auf eine Platine gelötet .. nichts!
Ich weiß nicht mehr was ich machen soll!

1. Display ist bereits Schrott!

Ich kann nicht mehr!
100 Std und nur ein kurzer Erfolg!
Ich ahne, dass mein Abitur wohl noch ein Jahr warten muss =( 
verzweifel

Ich habe alles so verlötet wie ich es auch gesteckt hatte.
Es hatte gesteckt kurz funktioniert (am nächsten Tag in der früh nicht 
mehr)

Habt Ihr noch einen KONSTRUKTIVEN Tip?
                    °°°°°°°°°°°°°°°°°°°°°°°°°°°

Habe alle Kondensatoren richtig gesetzt, einen Pullup Wiederstand, 100K 
Kontrast Poti, EL Inverter, aber KEIN BILD.

Kann es sein, dass das Display dem Atmega den Saft klaut?
Wenn ich nämlich LEDS anhänge an die I/O Pins, blinkt es ab und zu, 
hänge ich das Display an ... AUS !?

Habt Ihr zu dem simplen Schaltplan noch irgend etwas additional gemacht?

Lg
Tobias Toifl

von Sven B. (svenba)


Lesenswert?

Hi Tobias!

Lass dich nicht entmutigen!
Egal, wie gut man lötet, es kann immer mal vorkommen, dass irgendein Pin 
beim anlöten nicht weit genug durchgesteckt war und nur ab und zu 
kontakt kriegt...
Da bleibt einem nur, Stück für Stück alle Verbindungen von Pin zu Pin 
durch zu messen und/oder alle Lötaugen nochmal heiss zu machen und ein 
fitzel Lötzinn drauf setzen.
Hast du ne Led zur Anzeige der Spannungsversorgung? Leuchtet die immer? 
Ist der uC / das Display tief genug gesteckt?

Habe bei nem anderen Display diese Woche auch drei Tage mit 
Umprogrammieren verschenkt, weil die Steckverbinder nur dann Kontakt mit 
den Displaybeinchen hatten, wenn ich zum Messen drauf gedrückt hab...

Ruhig bleiben und sukzessiv vorgehen!!

von M. S. (bugles)


Lesenswert?

Display läuft. Jetzt will ich das Touch angehen.

Verstehe ich die Funktion richtig. Ich gebe eine Spannung auf X+ oder X- 
und Messe die Spannung an Y+ oder Y-.

Das ganze dann nochmal anders rum.

von M. S. (bugles)


Lesenswert?

Hm hat wer von euchen einen blinkendne Cursor im Bild ? soweit läuft 
alles nur ich bekomme den Cursor nicht hin.

von M. S. (bugles)


Lesenswert?

Habs hinbekommen Cp=Vp gesetzt , cp soll wohl nicht kleiner sein sonst 
wird der cursor nicht angezeigt

von Wolfgang-G (Gast)


Lesenswert?

@Tobias
ich hatte mal folgenden Fehler:
durch häufiges Löten war an einem Lötauge die zum Lötauge führende 
Leiterbahn kaum sichtbar gerissen
nur so als Hinweis
MfG

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Wolfgang-G schrieb:
> @Tobias
> ich hatte mal folgenden Fehler:
> durch häufiges Löten war an einem Lötauge die zum Lötauge führende
> Leiterbahn kaum sichtbar gerissen
> nur so als Hinweis
> MfG

Danke für den Tip!
Ich werde mal Lötzinn nachziehen!

Lg
Tobias

von M. S. (bugles)


Lesenswert?

Ich will mein Touch nicht Kalibrieren, es kommt mir alles etwas lang 
vor.

Wie realisiert ihr die Umrechnung der gemessenen Spanung an einem Pin 
auf einen X oder Y wert?

z.B 1 V gemssen bei 5 V die Anliegen

Y=1V*(80/5)= Zeile 16 ? ????

von Benedikt K. (benedikt)


Lesenswert?

Y=(ADC_Wert-Offset_Y)*Verstärkung_Y

Offset_Y und Verstärkung_Y sind die 2 Faktoren die die automatische 
Kalibrierung errechnet.
Offset_Y ist die minimale Spannung in der einen Ecke, Verstärkung wird 
über die andere Ecke bestimmt: 
Verstärkung_Y=gewünschter_max_Wert/(max_ADC_Wert-Offset_Y)

von Micha J. (michady)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
noch mal was anderes zum Display, hat es schon jemand geschafft die 
hintergrundbeleuchtung zu aktivieren die mit 100V zu betreiben ist ?
Habe da mal ein
Plan irgend wo gefunden, aber es scheint nicht wirklich zu funktionieren 
kommen maximal 23V raus, hat jemand eine Schaltung wie ich aus 5V, 100V 
machen kann ?

Gruß Micha

von Sascha W. (sascha-w)


Lesenswert?

zu Testzwecken mit einem Funktiongenerator und nachgeschaltetem Trafo, 
als Dauerlösung ist aber ein fertiger EL-Inverter sicher die bessere 
Lösung.

was hast du da für einen Trafo, wie hoch ist die Frequenz? Ab ca. 60V 
sieht man was leuchten.

Sascha

von Micha J. (michady)


Lesenswert?

da müsste ich morgen erst mal messen wie hoch die Frequenz war, und was 
ich für ein Trafo verwendet habe.
woher bekomme ich so fertige EL-Inverter ?
sind diese günstig ? dann würde sich das hier erübrigt haben mit den 
selberbau.

MFG

von Micha J. (michady)


Lesenswert?

ach, schon gefunden, kann man kaufen.
alles klar, danke.

mfg

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Micha Dy schrieb:
> Hallo Leute,
> noch mal was anderes zum Display, hat es schon jemand geschafft die
> hintergrundbeleuchtung zu aktivieren die mit 100V zu betreiben ist ?
> Habe da mal ein
> Plan irgend wo gefunden, aber es scheint nicht wirklich zu funktionieren
> kommen maximal 23V raus, hat jemand eine Schaltung wie ich aus 5V, 100V
> machen kann ?
>
> Gruß Micha

Ich habe einen 5V / 100V El inverter vom Conr** um ca 6€ ... 
funktioniert!

Andere Frage, was haben die Pins 3-18 für Werte ( Volt ) ?
Mein Display zeigt nichts an (hat es aber schon mal auf einer 
Testplatine).

Sind folgende Werte normal bzw. in Ordnung: (?)
( Die Folgende Tabelle entspricht der Pinbelegung des DG-16080 )

OHNE Display ( dh. direkt vom Atmega8 )
**********************************************

x  (Gnd - x)    (Vcc - x)
-----------------------------
2:   5,00V       5,00V          Power Supply For Logic Circuit
3:   4,94V       0,00V          Power Supply For LCD
4:   4,99V       0,00V          H->Instruction L->Data
5:   4,99V       0,00V          H: Data Read, L: Data Write
6:   2,14V       2,85V          Enable (H/L)
##### DATA ###################
7:   4,97V       0,00V          Data Bus Line
8:   4,97V       0,00V          Data Bus Line
9:   0,00V       0,00V          Data Bus Line
10:  4,97V       0,00V          Data Bus Line
11:  0,00V       0,00V          Data Bus Line
12:  0,00V       0,14V          Data Bus Line
13:  0,00V       0,14V          Data Bus Line
14:  4,97V       0,00V          Data Bus Line
##############################
15:  0,00V       4,99V          Chip Enable Active "L"
16:  4,99V       0,00V          Reset Active "L"
17:  4,99V       0,00V          Negative Voltage Output (-10V)
18:  0,00V       0,00V          Display Off (H)



MIT Display ( dh. direkt vom Display )
**********************************************

x  (Gnd - x)    (Vcc - x)
-----------------------------
2:   4,89V       5,00V          Power Supply For Logic Circuit
3:   -0,6V       4,24V          Power Supply For LCD
4:   0,00V       4,87V          H->Instruction L->Data
5:   0,00V       4,87V          H: Data Read, L: Data Write
6:   0,00V       4,80V          Enable (H/L)
##### DATA ###################
7:   0,03V       4,61V          Data Bus Line
8:   0,04V       4,57V          Data Bus Line
9:   0,04V       4,55V          Data Bus Line
10:  0,03V       4,55V          Data Bus Line
11:  0,03V       4,55V          Data Bus Line
12:  0,03V       4,55V          Data Bus Line
13:  0,03V       4,55V          Data Bus Line
14:  0,03V       4,60V          Data Bus Line
##############################
15:  0,01V       4,80V          Chip Enable Active "L"
16:  3,65V       1,20V          Reset Active "L"
17:  -0,8V       5,73V          Negative Voltage Output (-10V)
18:  4,85V       0,00V          Display Off (H)


(Agenda: Gnd - x | x=2 .... GND zu Pin 2 liefert ... V )
Besonders komisch kommt mir der "Enable" und der "Negative Voltage 
Output" vor.

Lg
Tobias

von Tobias T. (Firma: codes4web) (roverfreak)


Angehängte Dateien:

Lesenswert?

1
Edit: Das Problem habe ich lokalisiert: Pin 3 war mit 10K gegen Vcc geschaltet.

Jedoch zeigt das Display jetzt nur Kastln! ?? (siehe Bild) oder zeigt 
einen Balken der von oben nach unten fährt...

Lg
Tobias

von Micha J. (michady)


Lesenswert?

Hi Tobias,
das Problem mit den unterschiedlichen Fehlden hatte ich auch am Anfang 
schon ein mal, aber ich hatte zwei GLCDs zum testen, entweder es war das 
wo zwei  anschlüsse vertauscht waren, oder das was defekt war :|, kann 
ich leider nicht mehr genau sagen.

Gruß Micha

von John S. (linux_80)


Lesenswert?

Wenn dieser Balken durchläuft, dann ist der Kontroller am LCD noch nicht 
initialisiert, also nur an die Stromversorgung angeschlossen.

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Tiny 80 schrieb:
> Wenn dieser Balken durchläuft, dann ist der Kontroller am LCD noch nicht
> initialisiert, also nur an die Stromversorgung angeschlossen.

Das wars !!!! Enable oder CS hatte keinen Kontakt ... ES geht!! DANKE 
LEUTE!!!!
Meiner Matura steht nichts im Wege!

Lg
Tobias

von Thomas F. (igel)


Lesenswert?

Bisher habe ich bei der LCD-Initialisierung immer die Reset-Leitung für 
255 Takte auf Low gelegt, um die Reset-Prozedur wie im Datenblatt 
beschrieben auch einzuhalten.

Da ich Datenleitungen und am Atmega Portpins sparen will, möchte ich die 
Reset-Leitung jetzt direkt an +5V hängen. Ich habe das jetzt eine Weile 
ausprobiert und das Display startet auch ohne die Reset-Prozedur 
problemlos.
Spannungsversorgung erfolgt derzeit über den USB-prog, soll aber später 
über ein eigenes 230V-Netzteil erfogen.


Wie sind eure Erfahrungen? Meint ihr ich kann die Reset-Prozedur sparen 
und die Reset-Leitung an die Versorgungsspannung hängen?


Gruß
Thomas

von John S. (linux_80)


Lesenswert?

@Thomas
Wenn das LCD mal aus dem Takt läuft, muss dann die ganze Schaltung 
Stromlos gemacht werden damit es wieder läuft.
Evtl. auch mit an den Reset-Schalter vom µC hängen (ausprobieren wegen 
ISP), dann muss die Stromversorgung nicht komplett dekativiert werden.

von Thomas F. (igel)


Lesenswert?

Ok, Reset-Pin des uC ist sinnvoller als +5V.

Wenn das Display im laufenden Betrieb abschmiert, müsste ja dann im 
Programm eine neue Display-Initialisierung vorgesehen werden.

Macht man das so? Etwa bei Schaltungen im Dauerbetrieb das Display alle 
paar Stunden neu intialisieren?

Thomas

von Tobias T. (Firma: codes4web) (roverfreak)


Angehängte Dateien:

Lesenswert?

Hey Leute ich habe ein kleines Problem!

Wenn ich einen Pixel setze, dann setzt das Display (beim Setzen eines 
zweiten Pixel) 8px neben das erste auch wieder einen Pixel. Das liefert 
mir einen unangenehmen "Schatten ^^" ...

Ich verwende LCD7981_Simple von Benedikt K., trotzdem anbei das 
vermutlich verantwortliche C-File!

Danke
Lg
Tobias

von Tobias T. (Firma: codes4web) (roverfreak)


Lesenswert?

Habe es hinbekommen !!!
1
void lcd_setpixel(unsigned char x, unsigned char y)
2
{
3
  if ((x>=160)||(y>=80))
4
    return;
5
  lcd_setadress(x/8,y);
6
  lcd_writecom(0x0F);
7
  lcd_writedat(x&7);
8
9
  lcd_writecom(0x0F); //<== Mit dieser Zeile funktioniert es!
10
}

Lg
Tobias

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Kann man eigentlich den Touchscreen auch ohne Display nutzen?
Also ohne das Display mit Strom zu versorgen?
mit freundlichen Grüßen,
Valentin

von R. M. (rmax)


Lesenswert?

Ja, das Touchscreen ist ja komplett passiv.

von K. J. (Gast)


Lesenswert?

Hm ich versuche grade für PIC-ASM ne lib für textmode zu schreiben aber 
irgendwie verstehen ich das noch nicht so ganz.

Die init scheint zu gehen jedenfalls wird wilder Zeichensalat angezeigt.

Nur halt das setzen von Zeichen nicht.

Bin davon ausgegangen das man dazu folgendes sendet:

Command Cursor Low: 0x0A
Daten:      ADRL
Command Cursor High:0x0B
Daten:      ADRH
Daten:      zu schreibendes zeichen

oder hab ich da nen Denkfehler ?

von John S. (linux_80)


Lesenswert?

Hi,

die Display-Daten selber müssen danach ins Register 0x0c
so wie bei den Adressdaten auch.

von K. J. (Gast)


Lesenswert?

Danke das hat geklapt !!!

Nur scheint es im arsch zu sein genau in der Mitte hab ich nen 2px 
breiten streifen nur das merkwürdige ist das da nicht was fehlt sondern 
der text um die 2px verschoben ist.

von Micha J. (michady)


Lesenswert?

Hallo Leute,
ich habe die Bascom Version von Allu drauf, die Tuch function fusioniert 
in den sinne schon, aber ich kann die Eingänge zur Folie stecken wie ich 
will, wen ich dem Menü bin past keine stelle zum Tuch mit dem Menü 
überein, er reagiert immer irgendwo mitten drin.

Bei der kalibrierung zeigt er Kx und Ky 0 Fehler an, was mache ich 
verkehrt oder liegt das am Programm ?

frohes Fest noch alle.

Gruß Micha

von Meik D. (meik)


Lesenswert?

K. J. schrieb:
> ......Nur scheint es im arsch zu sein genau in der Mitte hab ich nen 2px
> breiten streifen nur das merkwürdige ist das da nicht was fehlt sondern
> der text um die 2px verschoben ist.

Dann passt die Angabe von Zeichen pro Zeile nicht zur Zeichenbreite. 
Kontrollier das noch mal.

Meik

von Alex D. (allu)


Lesenswert?

Hallo Micha,

zum Touchanschluss - das Display liegt mit der Anzeigeseite vor Dir, die 
Displayanschlusspins sind unten, das Folienkabel ist rechts.
Die Belegung des Folienkabels zum ATMega 8 von oben nach unten:

Y-  oben = Pin 23
Y+       = Pin 24
X+       = Pin 25
X- unten = Pin 26

Wenn die Kalibrierwerte zu weit weg liegen, werden Defaultwerte geladen.
Mit diesen funktionieren meine Displays(Touchs) auch ohne Kalibrierung. 
Das Touchprogramm erzeugt 184 (23*8) kleine Tasten, deshalb kann man 
auch ohne Kalibrierung den Touch bedienen. Die Grenzen der Tasten 
stimmen dann halt nicht so genau mit den dargestellten Zeichen überein.

Das von Dir beschriebene Problem hatte ich auch mal. Bei mir hatte ein 
Kontakt an meiner selbstgebastelten Foliensteckverbindung keine 
Verbindung.
Übrigens gehe ich erstmal vorsichtig mit einem Radiergummi über den 
Folienstecker, um die Kontakte zu reinigen.

Mein Vorschlag: 1.) Sicherstellen, dass der Touch wie oben beschrieben 
angeschlossen ist. 2.) Zieh den Mega8 und messe mit einem Ohmmeter die 
Verbindungen zum Touch. Ohmmeter mit dem einen Anschluss an den 
Mega8-Pin(23bis26) und mit dem anderen an die Kontaktfläche auf(!) dem 
Folienleiter(!). So lässt sich feststellen, ob der Folienleiter wirklich 
eine Verbindung hat.

Wenn das alles in Ordnung ist und es immer noch nicht funktioniert, 
vermute ich das dein Touch defekt ist.

Viele Grüße und allen ein frohes Weihnachtsfest
Allu

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

@meik

Danke hat geklappt hab mich wohl verzählt gehabt.

Im Anhang ist die Ansteuerung ist recht simpel gehalten läuft aber sehr 
gut inkl. Test Programm und Projektfiles für PIKLAB sollte aber auch mit 
mpasm funktionieren

von Micha J. (michady)


Lesenswert?

Hallo Allu,
so habe nun noch einmal alles durchgemessen, es geht durch bis hin zum 
Display 100 Ohm, auch der volle durchgang ist OK.

Habe ja noch ein Display zu liegen gehabt und schnell mal um gelötet, 
aber es ist das gleiche Problem, das kann doch nicht sein oder ? Nach 
deiner Stckvariante vom Tuch, komme ich nur in Tuch Werte anzeigen rein 
und zum Menü wieder raus was anderes funktioniert überhaupt nicht.

Vorher mit dem anderen Display hatte ich es so das es Spiegelverkehrt 
90° nach rechts verdreht war, bin aber in alle Menüs rein und wieder 
raus gekommen.
Hm, verstehe ich nicht.

Gruß micha

von Alex D. (allu)


Lesenswert?

Hallo Micha,

wieso 100 Ohm?

Das Programm läuft auf der Schaltung von Benedikt und ist dafür 
ausgelegt, dass der Touch ohne Widerstände am Mega8 angeschlossen wird. 
Widerstände könnten das Problem eventuell verursachen.

Zum Vergleich im Menue Touchtest ergibt bei meinem Touch:
Ecke links oben: im Raster Y=0, X=0, Fein Y=44, X=44
Ecke rechts oben: im Raster Y=7, X=22, Fein Y=214, X=230

Gruß  allu

von allu (Gast)


Lesenswert?

Sorry, natürlich: Ecke rechts unten ....

von Micha J. (michady)


Lesenswert?

Hallo Allu,
habe die widerstände entfernt, es geht nun, schön :)

Weiß auch nicht irgendwie muss ich das übersehen haben das da keine dran 
müssen.

Danke noch mal.

Gruß micha

von Micha J. (michady)


Lesenswert?

Hallo Allu,
kannst du mir noch etwas weiter helfen mit der Programmierung ?
ich komme nicht wirklich so mit den Gosub routinen zu recht.
Habe da mir ein kleines Test Button eingerichtet so wie ich gedacht habe 
scheint es aber nicht zu wollen er geht nicht in die unterroutine rein, 
mit solchen gosub Anweisungen habe ich noch nicht gearbeitet, was mache 
ich da verkehrt.
So sieht die kleine Test Variante aus dem Code aus.


Es Solte über TEST ablaufen.

Gruß micha

######################################
_kalibrieren Alias 1 + 48 + 128
_texteingabe Alias 2 + 48 + 128
_delete Alias 3 + 48 + 128
_touch_werte_anzeigen Alias 4 + 48 + 128
_menue Alias 5 + 48 + 128
_test Alias 6 + 48 + 128
_zeichensatz_anzeigen Alias 7 + 48 + 128

Gosub Auswahl

Do

If Touch_meldet = Ja Then
   Touch_meldet = Erledigt

   Select Case F_taste
      Case _kalibrieren : Gosub Touch_kalibrieren
      Case _texteingabe : Gosub Zeicheneingabe
      Case _touch_werte_anzeigen : Gosub Touch_werte_anzeigen
      Case _test : Gosub Test
      Case _zeichensatz_anzeigen : Gosub Zeichensatz_anzeigen
   End Select

End If
Loop

####### weiter im Menü ############

Locate_zeile = 51
Locate_spalte = 0
'Muster = "01234567890123456789012"
Lcd_string = "  test"
Lcd_form_6 = "  (6)"
Gosub Lcd_write_string

########### und zum sprung ###########

Test:

Locate_zeile = 41
Locate_spalte = 0
Lcd_string = "  TEST  "
Lcd_form_6 = "(  5   )"
Gosub Lcd_write_string

Return

von Hannes L. (hannes)


Lesenswert?

> ich komme nicht wirklich so mit den Gosub routinen zu recht.

Warum Gosub? Bascom kann (wie auch QBASIC und Visual-BASIC) echte SUBs 
und Funktionen verwalten. Deklariere einfach ordentliche SUBs und rufe 
sie mit ihrem Namen auf. Gosub war vorgestern.

...

von Alex D. (allu)


Lesenswert?

Hallo Micha,

schau mal unter:   Beitrag "Re: Pollin 16080 Touch mit ATMEGA32 und BASCOM"
Dort findest Du meine Antwort zu Deiner Frage.

Gruß  Allu

von ASM-Freak (Gast)


Lesenswert?

>Gosub war vorgestern

wie kommst du darauf ?
Irq-Routinen werden mit Gosub aufgerufen und in Assembler werden
Unterroutinen mit rjmp (Gosub / Return) aufgerufen.
SUBs machen nur Sinn, wenn Parameter übergeben werden sollen.
Ausserdem verbrauchen sie mehr Resourcen.

von Hannes L. (hannes)


Lesenswert?

ASM-Freak schrieb:
>>Gosub war vorgestern
>
> wie kommst du darauf ?

Weil aktuelle BASIC-Dialekte das Deklarieren von Funktionen und SUBs 
ermöglichen, die es gestatten, das Programm besser (übersichtlicher) zu 
strukturieren.

> Irq-Routinen werden mit Gosub aufgerufen

Na ich gehe davon aus, dass in Hochsprachen Interrupt-Service-Routinen 
auf MC-Ebene aufgerufen werden, dazu wird wohl kein 
Hochsprachenkonstrukt wie die BASIC-Anweisung "gosub" benutzt.

> und in Assembler werden
> Unterroutinen mit rjmp (Gosub / Return) aufgerufen.

Falsch, rjmp verwaltet keine Rücksprungadresse, da müsste man schon 
rcall/call nehmen. Und nicht alles, was sich die Rücksprungadresse auf 
den Stack legt, ist automatisch die BASIC-Anweisung "gosub". Im Übrigen 
glaube ich nicht, dass Du mich über AVR-Assembler belehren musst.

> SUBs machen nur Sinn, wenn Parameter übergeben werden sollen.

Wieder falsch, bei Parameterübergabe und Rückgabe nimmt man eine 
Funktion.

> Ausserdem verbrauchen sie mehr Resourcen.

Das ist jawohl überhaupt kein Argument. Wenn es um die Ressourcen geht, 
dann programmiert man in Assembler. Wenn aber schon eine Hochsprache 
benutzt wird, dann kann man sich auch Mühe geben, den Quelltext halbwegs 
vernünftig zu strukturieren. ASM-Tipps sind hier ja wohl nicht gefragt, 
sonst würde man das nicht in Bascom programmieren.

Und nein, ich bin kein Bascom-Freak, ich schreibe fast alle meiner 
AVR-Programme in Assembler (und natürlich mit Interrupts). Allerdings 
habe ich mich auch mit Bascom beschäftigt, weil ich ein paar angefangene 
Bascom-Programme eines Freundes abgeändert, verbessert bzw. 
fertiggestellt habe oder ihm zumindest andere (effizientere) 
Problemlösungen gezeigt habe. BASIC an sich benutze ich seit über 20 
Jahren, für AVRs halte ich es (Bascom) allerdings für nicht oder nur 
bedingt brauchbar.

Achja, suche Dir einen anderen Nick, "ASM-Freak" passt wohl (noch) nicht 
so recht.

...

von Micha J. (michady)


Lesenswert?

Hallo Leute,
bitte kein Stress wegen Gosub rutinen, ich hatte mich wohl etwas 
verkehrt niedergeschrieben, ich komme schon mit den Gosub rotinen bisher 
zurecht, aber hier beim Touch kann ich die Verknüpfungen nicht richtig 
nachvollziehen das ist mein Problem, deswegen habe ich noch mal ein 
kleines Stuck von meinen hinzugefügten Code rein gestellt.

Also jeder macht es etwas anders in der Programmierung und daher kommt 
man nicht immer gleich dahinter, egal.

Danke für den Link Allu werde ihn mal durchschauen.

Gruß Micha

von Sebastian R. (sebr)


Lesenswert?

Hat schon jemand ne Eagle Lib für das Display erstellt?

von Mga (Gast)


Lesenswert?

Hallo,
ich habe gerade versucht das oben genannte Display mit einem Atmega8 mit 
Assembler anzusprechen. So nun habe ich gedacht die Intialisierung würde 
funktionieren, jedoch sind mir nun zweifel gekommen da ich nichts auf 
dem display darstellen kann. Nun müsste ich wissen wie ich festellen 
kann das die Intialisierung richtig abgelaufen ist.

Also ich habe das Display im Grafikmodus intialisiert wie kann ich 
festellen ob dies erfolgreich war, derzeit habe ich einfach ein 
schwaches Bild bei diesem viele Pixel an sind.

von Sascha W. (sascha-w)


Angehängte Dateien:

Lesenswert?

ja so sieht das aus wenn der Speicher noch nicht gelöscht wurde.

Ich hab mal paar Routinen angehangen zum Init, CLS und Pixel 
setzen/löschen

Sascha

von Frank (Gast)


Lesenswert?

Hallo,
habe mir auch so ein Touchdisplay zugelegt und mit der Software von 
Benedikt ( danke dafür echt klasse Sache ) zum laufen gebracht.

Jetzt möchte ich gerne Buttons auf dem Touchdisplay anzeigen und dann 
damit ein Menü erstellen mit dem ich einfach Ausgänge anwählen und somit 
schalten kann.

Hat dafür jemand den kompletten code in c mit Ansteuerung vom Touch? 
Also zu den Hexfiles, die hier im Forum vorgestellt wurden die 
dazugehörigen programteile mein ich jetzt.

Schon mal Danke im Vorraus und echt super Forum hier. Werde mir auch 
sofort einen Account erstellen ;-)

von cn (Gast)


Lesenswert?

Frank, warte einfach mal ab, es wird schon noch einiges kommen, bzw. 
solltest du alles, was du suchst auch schon sonstwo finden, und musst es 
nur auf dein Projekt anpassen. Aber erwarte nicht, dass jemand für dich 
fertige Sachen progt :)

Mal ne andere Frage: Bin seit 2 Stunden am tüfteln und komm nicht voran. 
Ich wollts mal nach Datenblatt machen und nach dem Schreiben das 
Busy-Flag abfragen. Aber wie ich mich auch drehe und wende, es will 
nicht. Hat das schon mal jemand versucht und hats hinbekommen?

Das einzige was ich hierzu im Netz fand war folgendes:
http://mexlewiki.hs-heilbronn.de/UserFiles/File/Doku%20LCD-Graphikanzeige.pdf

ZITAT

/**
* Waits for the busy flag to clear, which should take
* around the maximum time for an instruction to complete.
* Note, LCD operation is kind of sensitive to this configuration. If the 
delay
* is too fast, the LCD will miss some pixels when it is really put 
through
* a stress test. This dela time seems to work great.
*/
void lcd_wait_busy(void)
{
_delay_us(3);
}
/**
* Older implementation of lcd_wait_busy() that checked the busy flag in
* hardware. I found that it always hanged after plotting a byte to the 
screen,
* so I took up the delay version above.
*
void lcd_wait_busy(void) {
(...)
}*/

ZITAT ENDE

Also ist daran schon mal jemand gescheitert.

Mein Code dazu:

.def temp=r18
.equ LCD_DATA=PortD
.equ LCD_CTRL=PortB
.equ LCD_RS=0
.equ LCD_RW=1

(...)

LCD_BUSY:
 ldi temp, 0x00
 out LCD_DATA, temp   ; sicherstellen, dass alles 0 ist
 out DDRD, temp       ; Eingang
 out LCD_DATA, temp   ; keine Pullups
 sbi LCD_CTRL, LCD_RW ; lesen
 sbi LCD_CTRL, LCD_RS ; Instruction
LCD_BUSY_LOOP:
 rcall LCD_ENABLE
 sbic PIND,7          ; da liegt laut Datenblatt das Busy-Flag (busy=1)
 rjmp LCD_BUSY_LOOP
 ldi temp, 0xFF
 out DDRD, temp      ; wieder Ausgang
 ret

von cn (Gast)


Lesenswert?

achso: wenn ich

 sbic PIND,7
 rjmp LCD_BUSY_LOOP

auskommentiere, läuft alles wunderbar. also scheint das display das 
busy-flag nicht zu resetten, oder wie?

von Alex D. (allu)


Lesenswert?

> rcall LCD_ENABLE
> sbic PIND,7          ; da liegt laut Datenblatt das Busy-Flag (busy=1)

Du kannst den Datenbus nur lesen, wenn Enable = 1 ist. Falls das bei 
Deinen Programm nicht so ist, probier mal folgenden Ablauf:

Enable = 1
Warten bis Datenbus steht
sbic PIND,7
..
..
Enable = 0

Gruß
Allu

von Sebastian M. (noobuntu)


Lesenswert?

bei mir hat das mit dem Auslesen der Busyflag auch nicht geklappt. 
Weshalb ich einfach einen kleinen delay (ich glaub um die 10 uS) 
eingebaut. Damit hat dann alles einwandfrei funktioniert.

von A.Drei (allu) (Gast)


Angehängte Dateien:

Lesenswert?

Bei mir geht folgender Zauberspruch:

'---------------------------------------------------------------
' Ist das Display für einen neuen Befehl und Datenwert bereit ?
'---------------------------------------------------------------
      rjmp Write_2_Byte_20

Write_2_byte_10:
      dec   TEMP_1          ' Timeout, wenn Display defekt oder fehlt
      breq  Write_2_byte_98

      cbi  Control_Bus_e,E                        'Enable-Puls beenden

      nop
      nop
      nop                                                'warten  für
      nop                                                ' E passiv
      nop
      Nop
      nop

Write_2_byte_20:
      sbi  Control_Bus_e,E                     'Enable-Puls beginnt
      nop                                                   'warten
      nop                                                   'warten
      nop                                                   'warten
      nop                                                   'warten
      nop
      nop

      sbic Daten_Bus_in, Bussy                           'Fertisch ?
      rjmp Write_2_Byte_10

      nop
      cbi  Control_Bus_e,E                      'Enable-Puls beenden

'---------------------------------------------------------------
' Mit "Befehl" im Grafikcontroller das gewünschte Register wählen
'---------------------------------------------------------------

      cbi  Control_Bus_rw,RW                 'Write Signal aktivieren
      nop
         ... usw ...

von Sascha W. (sascha-w)


Lesenswert?

das EN kann während der gesamten Wartezeit stehen bleiben, die 
Busyausgabe ist statisch. RW und RS muss auch H sein.

Sascha

von wulf (Gast)


Lesenswert?

gibt es für das display mittlerweile C-Code für den ATmega32 bei dem die 
komplette ansteuerung für das Display und das Touch vorhanden sind? am 
besten wär ein Beispielprogramm... :)

von Matze G. (maroni666)


Lesenswert?

Hallo zusammen,

ich habe ein Problem mit meinem Touch und zwar habe ich die Atmega8 
Version von Benedikt.

Wenn ich allerdings versuche mein Touch zu kalibrieren passiert nichts.

Nur wenn ich gleichzeitig (bei upper left) links oben und unten drücke 
springt er weiter.
Bei (lower right) kann ich dann oben und unten rechts gleichzeitig 
drücken.
Dann bricht er ab mit der Meldung Try again.

Kann mir vielleicht jemand von Euch sagen was ich falsch mache bzw. was 
ich noch versuchen kann oder kann es sein das mein Touch wirklich 
hinüber ist. Ich habe das 2te. Touch auf dem Bild.

Gruß

Maroni

von GefährlichesHalbwissen (Gast)


Lesenswert?

... ... schrieb:
> Aber was kann st du bei 7€ schon verlieren...

7 Euro

von Matze G. (maroni666)


Lesenswert?

Danke für die Antwort.

Ich glaube nicht das mein zweites Touch auch nicht funktioniert. Bringt 
nämlich den selben Fehler, vielleicht hat ja jemand noch einen Vorschlag 
was ich kontrollieren kann bzw. eine Idee wodran dieser Fehler liegt.

von Matze G. (maroni666)


Lesenswert?

Alsoich habe es wie folgt angeschlossen, aber bei beiden Displays 
passiert der selber Fehler:

Y-  oben = Pin 23
Y+       = Pin 24
X+       = Pin 25
X- unten = Pin 26


Bin für fast jeden Tipp dankbar :)

Gruß

Matze

von A.Drei (allu) (Gast)


Angehängte Dateien:

Lesenswert?

Falls Du mal das angehängte Programm probieren willst. Es sollte sofort 
mit dem "Touchtest" beginnen. Angezeigte Messwerte (= Fein Y/X), in 
etwa:

oben links die 0 -> 50/50   oben rechts die 2 -> 50/230
unten links die 7 -> 210/50 unten rechts das ß -> 210/230

Gruß  allu

von Matze G. (maroni666)


Lesenswert?

Danke allu jetzt funzt es.

Es geht zwar jetzt aber es reagiert sehr sehr träge egal mit welchem 
prog. kann man da noch etwas ändern? Wenn ja wie?

gruß matze

von allu (Gast)


Lesenswert?

Wie hoch ist die Taktfrequenz? 8Mhz sollten es schon sein. Von "Natur" 
aus steht der ATMega8 - meines Wissens - auf 1 Mhz. Das Programm ist auf 
8 Mhz eingestellt.

Gruß  allu

von Matze G. (maroni666)


Lesenswert?

Danke Allu,

hab die fuses richtig gesetzt und schon läuft es flüssig. Danke

von kyrel (Gast)


Lesenswert?

Hallo zusammen,

heute ich mein Exemplar eingetrudelt und nach ersten schnellen Tests 
meine ich, dass auch dieses in Ordnung zu sein scheint. Aber eine Frage 
habe ich trotzdem, rein optischer Natur :) -> Auf dem Display befindet 
sich eine Folie, die irgendwie mitgenommen aussieht, handelt sich bei 
der um die übliche Display-Schutzfolie, die entfernt werden kann, oder 
dient diese sogar der Touchfolie ? Die vermeindliche Folie hat paar 
Kratzer und ist an einer Stelle nicht richtig fest.

Was meint ihr, kann ich diese ruhigen Gewissen abnehmen ?

Danke und einen schönen abend weiterhin

kyrel

von Matze (Gast)


Lesenswert?

Hi,

Also bei mir war das nur ne Schutzfolie ohne Funktion. Wenn das bei Dir 
auch der Fall sein sollte dann weg damit bzw. dann wenn Du das Display 
schon ohne Schutzfolie betreiben willst.

Gruß  Matze

von Sven B. (Gast)


Lesenswert?

Hi Leute!
Wenn ich erreichen möchte, dass die Touch-Asuwertung nur anspringt, wenn 
gedrückt wurde, welchen Interrupt brauch ich da?

Hat evtl jemand nen Codeschnipsel in Assembler für mich?

von gerd (Gast)


Lesenswert?

> Wenn ich erreichen möchte, dass die Touch-Asuwertung nur anspringt, wenn
> gedrückt wurde, welchen Interrupt brauch ich da?

Folge mal den Links aus diesem Beitrag von weiter oben:

Beitrag "Re: Display mit Touchscreen bei Pollin?"

In der dort verlinkten Atmel Application Note steht was über die 
Anwendung der Interrupts.

> Hat evtl jemand nen Codeschnipsel in Assembler für mich?

Der o.g. Artikel bezieht sich auf ein Beispielprogramm, welches 
ebenfalls auf der Atmel Seite zu bekommen ist. Es ist zwar in C, aber 
das geht von der Systematik her in die Richtung, die du angefragt hast. 
Da ich schon die Frage danach antizipieren kann, hier auch gleich der 
direkte Download-Link:

http://www.atmel.com/dyn/resources/prod_documents/AVR341.zip

BTW: Der C-Source ist für einen IAR Compiler mit entsprechenden 
Headerfiles.. d.h. du wirst das nicht ohne Portierung durch den avr-gcc 
jagen können.

Viel Spass!

- gerd

von Sascha W. (sascha-w)


Lesenswert?

@ Sven B.
> Wenn ich erreichen möchte, dass die Touch-Asuwertung nur anspringt, wenn
> gedrückt wurde, welchen Interrupt brauch ich da?
lege die eine Folie auf Low und einen Anschluss der anderen Folie mit 
Pullup auf Eingang, wenn du Zeit hast dann polle den PIN der 
entsprechenen Portleitung oder verwende ein Pinchange-INT

> Hat evtl jemand nen Codeschnipsel in Assembler für mich?
hast du die Auswertung schon in ASM umgesetzt? - habe hier eine 
ASM-Lösung die ich auf einem tiny44 am laufen habe.

Sascha

von Thomas F. (igel)


Angehängte Dateien:

Lesenswert?

> Hat evtl jemand nen Codeschnipsel in Assembler für mich?

Hier, bitte.
Ist aber ein größeres Schnipsel, für einen Mega48.

Die Pinbelegung meines Touch ist von oben nach unten:
ADC3
ADC4
ADC5
ADC2


Thomas

von Thomas F. (igel)


Lesenswert?

Ups, ist zweimal der gleiche Code. Bitte den zweiten (oder wahlweise den 
ersten) ignorieren.

Thomas

von Sven B. (Gast)


Lesenswert?

Danke Leute!

Hab vor, die Abfrage durch PinChangeInt zu realisieren.
Ist nur das erste Mal, dass ich INterrupts verwende... wachse mit deinem 
Projekt...
@Sascha:
Ja, Auswertung läuft soweit, nur halt bei jedem Programm durchlauf und 
noch nicht bei höherem Takt, wird wohl am ADC liegen...

von Andi (Gast)


Lesenswert?

Hallo,

Habe auch das Display und komme einfach mit dem Touch nicht zurecht.

Ich habe mal folgendes gemacht.

oben nach unten (Display connector unten Touch conector rechts)

Pin1 = Y-
Pin2 = y+
Pin3 = x+
Pin4 = x-

Ich hoffe das Stimmt

Messung mit Ohmmeter Pin1+2 und Pin 3+ Pin4 einmal 490Ohm und einmal 590 
OHM.

Das sollte stimmen.

nun zum ADC

PIN1 = ADC3
PIN2 = ADC2
PIN3 = ADC1
PIN4 = ADC0

zum einlesen des X Wertes setzte ich PIN1 Ausgang und low PIN2 Ausgang 
und High.
Dann lese ich über ADC0 ein.
Der ADC wert ist immer 460+-60 ob touch dran oder nicht.

habe den code aus RN Wissen.

channel wäre hier 0.



uint16_t readADC(uint8_t channel) {
  uint8_t i;
  uint16_t result = 0;

  // Den ADC aktivieren und Teilungsfaktor auf 64 stellen
  ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);

  // Kanal des Multiplexers waehlen
  // Interne Referenzspannung verwenden (also 2,56 V)
  ADMUX = channel | (1<<REFS1) | (1<<REFS0);

  // Den ADC initialisieren und einen sog. Dummyreadout machen
  ADCSRA |= (1<<ADSC);
  while(ADCSRA & (1<<ADSC));

  // Jetzt 3x die analoge Spannung and Kanal channel auslesen
  // und dann Durchschnittswert ausrechnen.
  for(i=0; i<3; i++) {
    // Eine Wandlung
    ADCSRA |= (1<<ADSC);
    // Auf Ergebnis warten...
    while(ADCSRA & (1<<ADSC));

    result += ADCW;
  }

  // ADC wieder deaktivieren
  ADCSRA &= ~(1<<ADEN);

  result /= 3;

  return result;
}

int main(void) {
  uint16_t result = readADC(0);  //Auslesen der analogen Spannungen an 
Pin 0,
          // also ADC0. In result steht das Ergebnis.
  return 0;
}

Bitte um Hilfe.

Besten Dank

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

Anschluss sollte stimmen.

Aber mit der 2.56V Referenz wird das nicht's denn die Eingangsspannung 
kann logischerweise zwischen 0 und 5V liegen, da diese Pegel ja durch 
die Portpins vorgegeben sind.

ADCW liest wohl beide ADC-Register automatisch in der entsprechenden 
Reihenfolge aus? (ich prog. in ASM)

Sascha

von noobuntu (Gast)


Lesenswert?

Jop der gnu-cc Compilier macht das in der richtigen Reihenfolge. Man 
muss nur drauf achten das man das Ergebniss in einer 16 Bit Variablen 
speichert.

von Andi (Gast)


Lesenswert?

Hallo,

Also muß ich die Interne Referenz raus nehmen.
In einen anderen Thread habe ich gelesen man soll erst muxen dann 
aktivieren.
Werde es morgen mal probieren Danke.

von Andi (Gast)


Lesenswert?

Hallo


Habe immer noch das Problem trotz externer ref das der ADC das selbe 
anzeigt.
An den PIN A0 mit den Oszi messe zeigt er mir 0Volt bei angeschlossen 
Touch wenn ich mit dem Finger von links nach rechts streiche geht er 
linear bus af 5V so soll es doch sein.

Habe auch mal ein Poti an den ADC gehangen der Oszi zeigt das gleiche 
von 0 bis 5V aber der ADC nicht er bleibt bei 460+-60 ob was dran ist 
oder nicht.

Also gehe ich davon aus das das Touch geht.

Danke

Andi

von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Hier mal mein code.Der soll erstmal nur den ADC Wert lesen.
Alles andere folgt wenn das denn geht.

Atmega 128 16MHZ


Danke

Vieleicht habt Ihr noch ne Idee.

An den Ports kommt alles an also lötunterbrechungen kann man 
ausschließen.
AREF hat 5V.

von Andi (Gast)


Lesenswert?

Hallo,

Problem gefunden

AD ist nicht gleich ADC.

Port A beim ATemga 128 sind AD Ports ich benötige aber ADC aslo PORT F.

gesagt getan und nun gehts.

Danke

andi

von Robert (Gast)


Lesenswert?

Hallo!
Habe mir auch das Display gekauft und gleich angeschlossen. Ohne 
Ansteuerung zeigt es manchmal gar nichts, manchmal einen Strich in der 
Mitte - scheint also zumindest zu funktionieren.
Nun habe ich versucht den Code von Benedikt zu verwenden - jedoch kann 
ich diesen nicht compilieren mit WinAVR, ich bekomme folgenden Fehler:
Linking: main.elf
avr-gcc -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields 
-fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o 
-std=gnu99 main.o lc7981.o   --output main.elf -Wl,-Map=main.map,--cref 
-lmega_intmath -lm
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: 
cannot find -lmega_intmath
Womit hängt das zusammen??? (ich habe im Makefile nur die MCU und den 
Programmer geändert und im Programm 16Mhz eingetragen. Ich verwende 
einen Atmega32 @ 16Mhz.
Da ich den Fehler nicht beheben konnte, habe ich das Programm von 
FrozenEskimo genommen, die Ports/Pins, MCU und Takrate geändert - das 
ließ sich auch flashen, jedoch zeigt das Display danach nichts mehr an 
(bevor das Programm drauf war, waren de wenigstens ab und zu noch ein 
paar Striche oder sowas). Habe schon ein wenig die Wartezeiten im 
Programm angepasst, jedoch ohne Ergebnis.
Hat jemand eine Idee? Würde gerne das Programm von Benedikt zum laufen 
bringen.

MfG,
Robert

von David M. (md2k7)


Lesenswert?

> c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe:
cannot find -lmega_intmath

mega_intmath scheint eine Library von Benedikt zu sein, die allerdings 
(soweit ich auf die Schnelle gesehen habe) nicht verwendet, sondern nur 
dazugelinkt wird.

Ergo: -lmega_intmath im Makefile löschen.

also aus Makefile, Zeile 99:
1
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref -lmega_intmath
mach
1
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref

Gruß
David

von Robert (Gast)


Lesenswert?

Danke^^
War vorns über die Suche im Makefile auch auf diese Zeile gestoßen. 
Jetzt kann ich das Programm compilieren ;)
Leider zeigt das Display aber nichts an. Nach langem Suchen nach dem 
Fehler ist mir jetzt etwas aufgefallen:
Wenn ich RS nicht anschließe und den MC resette, dann zeigt das LCD 
etwas an (meist einfach nur grau, da der Controller ja keine Befehle vom 
MC empfangen hat und somit alles, was kommt als Daten interpretiert - 
RS=0). Wenn ich aber RS wieder anschließe, dann zeigt das Display gar 
nichts an. Könnte es sein, dass ich die Wartezeiten ändern muss oder ist 
das Display möglicherweise defekt? Kennt jemand solche Probleme?
mfg

von Sven B. (svenba)


Lesenswert?

Hallo! Bin dabei, die Touchaktivierung per Pin Change Interrupt zu 
realisieren. Ich benutze einen AtMega644 ( Datenblatt: 
http://www.atmel.com/dyn/resources/prod_documents/doc8011.pdf )und bin 
mir jetzt nicht sicher, welche Register ich jetzt für den Interrupt 
nutzen muss. Im Netz findet man immer nur Beiträge zu den StandartPins 
INT0 / INT1.
Ich nutze aber den Interrupt an Pin PA4 (also PCINT4).

Also muss ich wohl in PCICR Bit 0 setzen, um PCINT0 bis 7 zu wählen.
Dann muss ich in PCMSK0 Bit 4 setzen,um PCINT4 zu wählen.
Irgendwann muss ich wohl SEI senden und in der Vektorenliste mein 
Unterprogramm eintragen.
Ist das soweit richtig?
Wenn ich das ganze so betreibe sehe ich, das der Interrupt ständig 
auslöst(Hab ne Displayausgabe in das Unterprogramm geschrieben).
Hab natürlich als erstes eine Touchfolie auf Masse gelegt und den 
"nichtInterrupt"Pin der anderen auf Pull-Up.
Muss ich noch weitere Register aktivieren ? Bin da grad ratlos.
Wo lege ich denn nun die auslösende Flanke fest??
Ich programmiere in Assembler.
Hilfe!!!

von Sven B. (svenba)


Lesenswert?

Kann mir hier keiner helfen?
Hab bis jetzt folgendes:
1
; Erst auswählen welcher Int(0 bis 2) mit High.
2
;   hier: PCInt0 weil Pin für Touch an PA4 = PCInt4 = INT0
3
        lds    temp1,EIMSK
4
        sbr    temp1, 0<< INT2 | 0<<INT1 | 1<<INT0
5
        sts    EIMSK,temp1
6
;  Flanke H/L, L/H oder Low Pegel einstellen 
7
        lds    temp1,EICRA
8
        sbr    temp1,  0<<ISC01 | 0<<ISC00  ; Low Level löst Int aus
9
        sts    EICRA,temp1      
10
      
11
    /*    lds    temp1,EIFR
12
        sbr    temp1, 1<<INTF2 | 1<<INTF1 | 1<<INTF0
13
        sts    EIFR,temp1
14
*/
15
        
16
; Welche Pin-Gruppe?
17
        lds temp1, pcicr
18
        sbr temp1, 1 << PCIE0
19
        sts pcicr, temp1
20
;Welcher Pin in Gruppe genau?
21
        lds temp1, pcmsk0
22
        sbr temp1, 1 << pcINT4    ; PA4 als Auslöser
23
        sts pcmsk0, temp1
24
        
25
      ;  sei  ; Alle Interrupts an
26
Touch_ruhe:
27
    
28
        sbi  Touch_DDR, Y_minus  ; alles auf Ausgang
29
        sbi  Touch_DDR, Y_plus
30
       sbi  Touch_DDR, X_plus
31
      cbi  Touch_DDR, X_minus    ; Interruptauslöser !!
32
???????????????????????????
33
        cbi  Touch_Control, Y_minus  ; Y Auf 0V
34
        cbi  Touch_Control, Y_plus  
35
        sbi  Touch_Control, X_Plus    ; Xplus auf High
36
      ;  cbi  Touch_control ,X_minus; pullup an

von Hab 3 Display´s (Gast)


Lesenswert?

Guten Morgen ihr Faschingsnarren! ;-)

Hab mir vor einiger Zeit auch drei Displays bestellt, bin jetzt erst 
daugekommen diese zu testen, aber es waren alle drei in schwarzen Tüten, 
und total unverlötet! Demnach funktionieren auch alle!

Jetzt zu meiner Frage, hab das Test-HEX von allu:

MEGA8_8MHZ_TOUCHTEST.Hex

Gibt es für diese HEX auch einen Quellcode? der auch die Symbole zeigt, 
oder einfach mal das ganze Programm?
Vorzugsweiße in C!

Danke euch schonmal im Vorraus!
Guten Morgen noch!
Bastler

von allu (Gast)


Lesenswert?


von Hobby-Bastler (Gast)


Lesenswert?

Hey allu,
danke schonmal für den Code, werd ihn gleich mal auf mein Steckbrett 
laden! Sieht zur Zeit noch ziemlich wirr aus, aber funktionieren tut es!

Jetzt zum Code, werd ihn mir mal etwas ansehen, hab allerdings von 
Bascom keine Ahnung, hab damit also auch noch nie was gemacht. Hat den 
noch nie jemand mal die Routinen schön geschrieben und die Ports in 
einen Defines.h Header gelegt?
Wär mal ne Möglichkeit, um das Display überall einbinen zu können!

Aber Danke schonmal!

Bastler

von Hab 3 Display´s (Gast)


Lesenswert?

EDIT: Also ich wrde ungern BASCOM lernen, denn das ist schon was ganz 
anderes wie C. Ich versteh eh nicht, warum man sowas in BASCOM macht, 
das geht doch in C wehsentlich einfacher oder?

von Hannes L. (hannes)


Lesenswert?

> das geht doch in C wehsentlich einfacher oder?

Nein, in ASM ist es einfacher... - Zumindest für mich... ;-)

Denn es kommt immer darauf an, was man kann und was man gewöhnt ist. 
Basic kann ich zwar auch, es ist in Form von Bascom aber nicht für 
zeitkritische Dinge auf AVRs geeignet, es nutzt die knappen Ressourcen 
einfach zu verschwenderisch. C kann und will ich nicht. Da bleibt nur 
ASM, was den Vorteil hat, eindeutig (sogar eineindeutig) zu sein, jedes 
Mnemonic entspricht 1 zu 1 einem Maschinenbefehl.

...

von ML (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank,
ich habe mir das LCD bei Neuhold besorgt, touch und co funktioniert 
wunderbar, als kleine Draufgabe habe ich einen .PBM -> LCD Converter 
geschrieben.

Damit ist es möglich Grafiken in Paint/Photshop zu bearbeiten und direkt 
auf das LCD zu senden. Da PBM sehr gut komprimiert (1 bit pro pixel), 
werden die grafik Bibliotheken sehr klein!

mfg ML

von Hobby-Bastler (Gast)


Lesenswert?

Okay, hast ja recht, aber so im Zusamenhang zu Umsetzung und zur 
Routinen find ich C komfortabler als ASM weil es halt einfach eine 
wunderschöne Sprache ist.
Aber so nen richtigen C-Source hab ich jetztoutch Auswertung wäre, wär 
das echt super!

Guten Abend
Bastler

von Sven B. (svenba)


Lesenswert?

Hi!
Hat jemand nen Schnellschuss für mich? Woran kann es liegen, wenn der 
Interrupt zum Touch-wecken immer wieder anspringt und das Hauptprogramm 
garnicht erst wieder zum arbeiten frei gibt?
Hier meine ISR:
1
touch_beruehrt:
2
3
          push temp1
4
          in temp1, sreg
5
          push temp1
6
7
          rcall touch_speichern_x
8
          rcall touch_speichern_y
9
          rcall touch_auswerten
10
          
11
          pop temp1
12
          out sreg, temp1
13
          pop temp1
14
          reti
So wird das Touch in Ruhe geschaltet:
1
Touch_ruhe:
2
    
3
        sbi  Touch_DDR, Y_minus  ; alles auf Ausgang
4
        sbi  Touch_DDR, Y_plus
5
       sbi  Touch_DDR, X_plus
6
      cbi  Touch_DDR, X_minus    ; Interruptauslöser !!
7
8
        cbi  Touch_Control, Y_minus  ; Y Auf 0V
9
        ;cbi  Touch_Control, Y_plus  
10
        ;sbi  Touch_Control, X_Plus    ; Xplus auf High
11
        cbi  Touch_control ,X_minus; pullup an

Hilfe, rauf mir langsam die Haare...

von Hannes L. (hannes)


Lesenswert?

> Hilfe, rauf mir langsam die Haare...

Warum den eigentlich im Ext.-Interrupt??

Warum nicht Polling im Timer-Interrupt, z.B. alle 1 ms?
Und dann als Statemachine.

- Im Ruhezustand auf Berührung (Schluss der beiden Widerstandsbahnen) 
prüfen. War keine Berührung, dann Statuszähler auf Startwert stellen. 
War Berührung, dann Statuszähler erhöhen. Erreicht der Statuszähler die 
Prellschwelle, dann Portpins und ADMUX auf X-Messung einstellen.

- Beim nächsten Timer-Int. dann (gemäß Statuszählerstand) den ADC-Wert 
als X-Wert speichern, Portpins und ADMUX auf Y-Messung stellen.

- Beim nächsten Timer-Int. (gemäß Statuszählerstand) ADC-Wert als Y-Wert 
speichern und Portpins wieder auf Berühriungspolling stellen.

- Ist beim nächsten Timer-Int. die Berührung noch da, dann einen Merker 
setzen, an dem die Mainloop erkennt, dass eine Berührung stattfand und 
die Koordinaten gesichert sind. Dann den Statuszähler wieder auf Start 
stellen und von vorn beginnen.

Dies kostet kaum Rechenzeit, da nirgends gewartet werden muss. Bei 
Deinem Konzept löst jeder Störimpuls (z.B. Licht ausschalten) einen 
Interrupt aus, in dem beide ADC-Mess-Konstellationen vorbereitet und 
abgewartet werden müssen. Dies ist Gift für eine ISR, denn dies dauert 
viel zu lange. Es wird viel zuviel Rechenzeit vertrödelt, um zweimal auf 
das Ergebnis des ADC zu warten. Da ist es doch bedeutend effizienter, in 
der ADC-Wandlungszeit zur Mainloop zurückzukehren und sich dort um 
andere Aufgaben zu kümmern.

Und nein, ich habe es noch nicht realisiert, aber so in etwa werde ich 
herangehen, wenn ich meine vorrätigen (und mit Benedikts Testprogramm 
erfolgreich getesteten) LCDs einsetzen werde.

...

von Sven B. (svenba)


Lesenswert?

Hi!
Danke für die Antwort!
Hatte hier schon oft gelesen, dass viele über den ext.Int. gehen und hab 
mich deshalb dafür entschieden.
Dein Konzept sieht aber wirklich plausibel aus, werde versuchen, das so 
um zu setzen, nach zwei Wochen ohne vernünftiges Resultat ist mir ein 
neuer Ansatz ganz Recht!
Welchen Wert (ms) würdest du als Prellschwelle verwenden?

Sven

von Hannes L. (hannes)


Lesenswert?

Sven B. schrieb:
> Hi!
> Danke für die Antwort!
> Hatte hier schon oft gelesen, dass viele über den ext.Int. gehen und hab
> mich deshalb dafür entschieden.

Das würde ich nicht überbewerten. Es gibt auch immer wieder Leute, die 
meinen, ihre Tasten per ext.-Interrupt einlesen zu müssen.

> Dein Konzept sieht aber wirklich plausibel aus, werde versuchen, das so
> um zu setzen, nach zwei Wochen ohne vernünftiges Resultat ist mir ein
> neuer Ansatz ganz Recht!

Wie gesagt, ich habe es noch nicht realisiert, es existiert also noch 
keinerlei Erfahrung damit.

> Welchen Wert (ms) würdest du als Prellschwelle verwenden?

Da muss ein Kompromiss gefunden werden. Zu schnell könnte zu Störungen 
führen, zu langsam beeinträchtigt die Grafikeingabe (malen, schreiben). 
Finde es raus. Man kann den Statuszähler ja rückwärts laufen lassen, 
dann kann man die Prellanzahl durch Variation des Startwertes 
einstellen, ohne den eigentlichen Code (welcher Statuszählerwert welchen 
Job erledigt) dabei nicht zu ändern.

Auch die 1 ms ISR-Rate ist erstmal aus der Luft gegriffen und kann 
variiert werden. Die Grenze nach unten ist das ADC-Tempo, der ADC sollte 
in diesem Intervall mindestens zwei Wandlungen geschafft haben, so dass 
die erste (ungenaue) Wandlung überschrieben ist und nicht erst per 
Programm ausgefiltert (unterdrückt, weggeworfen) werden muss. Die Grenze 
nach oben ist die gewünschte Geschwindigkeit der Toucheingabe. Da aber 
(fast) jedem Programm einen Zeittakt braucht, lohnt es sich, einen 
glatten Wert zu nehmen, aus dem man nebenher noch die Systemzeit 
ableiten kann.

>
> Sven

...

von Sven B. (Gast)


Lesenswert?

Yippie!
Du bist mein Held der Woche!!

Die erste Routine zur Timer gesteuerten Abfrage läuft!
Endlich!

Nur leider misst er nur vernünftige Werte bei niederigem Takt, meine 
Schaltung soll aber auf 20MHz laufen.Da kommt immer nur der "Min.Wert".
Hat jemand ne Idee?
ADC Prescaler ist schon so hoch wie möglich und meine sonstigen 
Messwertaufnahmen gehen damitz einwandfrei...

Touch-debouncing?? Aber wie?

von allu (Gast)


Lesenswert?

Versuch mal, messen und sofort nochmal messen und nur den 2. Messwert 
auswerten.
Gruß   allu

von Sven B. (Gast)


Lesenswert?

Hi!
Danke, habs schon mit Dummy-Messungen bis hoch auf 10 versucht. 
Ausserdem hab ich an allen möglichen Stellen delays eingefügt usw, er 
misst immer nur max Werte... Hab mein Display/Touch ber Flachband (ca. 
5cm) an die uC-Platine angeschlossen, hab das Gefühl, dass die 
verschiedenen Signal sich da stören.?.

Ach ja, hier mal meine erst (leicht veränderte) Variante der 
Timer-Touch- ISR: (noch mit Ausgabebefehlen zum überprüfen)
1
touch_timer:
2
    push temp1
3
    in temp1, sreg
4
    push temp1
5
    push adhigh
6
    push temp4
7
    push zl
8
    push zh
9
10
    clr temp2
11
    z_laden Touchstatus
12
    ld adhigh, z    ; Statuszähler
13
14
; Ist X- wirklich Low?
15
    in temp1, pina
16
    ldi temp2, 1<<x_minus
17
    andi temp1, 0b00010000
18
    cpi temp1, 0b00010000
19
    breq Touch_reset
20
    ;-----------------------------------------------  
21
; 20 mal während Timer gedrückt?
22
        
23
    cpi adhigh, 20
24
    breq Schwelle_eins
25
26
    cpi adhigh, 25
27
    breq Schwelle_zwei
28
29
    cpi adhigh, 30
30
    breq Schwelle_drei
31
32
; Schwelle erreicht:
33
Schwelle:
34
    inc adhigh
35
    st z, adhigh
36
    rjmp Timer_ende
37
38
Schwelle_eins:      ; X- speichern
39
    rcall touch_speichern_x  ; XWert in ZL(Touchwerte)
40
    z_laden Touchwerte
41
    ldi disdata1, 0x0c
42
    ldi disdata2, 0x53
43
    rcall sende_daten
44
    ldi disdata2, 0x31
45
    rcall sende_daten
46
47
    ld disdata2, z
48
    rcall sende_daten
49
    ;;;;;;;;
50
    z_laden Touchstatus
51
    inc adhigh
52
    st z, adhigh
53
    rjmp Timer_ende
54
Schwelle_zwei:      ; Y-speichern
55
    rcall touch_speichern_y  ; Y-Wert in ZL+1(Touchwerte)  
56
    ldi disdata1, 0x0c
57
    ldi disdata2, 0x53
58
    rcall sende_daten
59
    ldi disdata2, 0x32
60
    rcall sende_daten
61
    ;;;;;;;;
62
          
63
    inc adhigh
64
    st z, adhigh
65
    rjmp Timer_ende
66
Schwelle_drei:  
67
    ldi disdata1, 0x0c
68
    ldi disdata2, 0x53
69
    rcall sende_daten
70
    ldi disdata2, 0x33
71
    rcall sende_daten  
72
    rcall touch_auswerten
73
Touch_reset:  
74
    clr adhigh
75
    st z, adhigh
76
77
Timer_ende:  
78
    pop zh
79
    pop zl
80
    pop temp4
81
    pop adhigh        
82
    pop temp1
83
    out sreg, temp1
84
    pop temp1
85
          
86
          
87
    reti

von allu (Gast)


Lesenswert?

Wie ich die Berührungs- und Positionerkennung für meinen Touch gelöst 
habe, hatte ich oben schon mal kurz beschrieben:
Beitrag "Re: Display mit Touchscreen bei Pollin?".

Zur Zeit babe ich den IRQ auf 20msec Zeitabstand eingestellt. Nach 
meinen Versuchen reicht eine Dummy-Messung. Dann sollten sich auch 5cm 
Flachbandleitung beruhigt haben. Während den beiden Messungen dürfen 
aber die Portleitungen zum Touch nicht verändert werden.

Gruß   allu

von Sascha W. (sascha-w)


Lesenswert?

@ Sven B.

zeig mal den Rest des Programms: ADC starten/auslesen, Touchports 
einstellen!

Displayausgaben in der ISR - gruselig.

Sascha

von Hannes L. (hannes)


Lesenswert?

Deshalb halte ich mich ja zurück, das ist nicht das, was ich empfohlen 
hatte...

...

von Sven B. (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute!
Natürlich fliegen die Displayausgaben raus, hatte ich doch oben auch 
geschrieben. Nach zwei Wochen vergeblicher Liebesmühe wird man mir wohl 
ein bißchen sichtbare Erfolgskontrolle durchgehen lassen.
Ausserdem ging es mir hier erstmal darum, etwas reagierendes hin zu 
kriegen, deswegen hab ich den Vorschlag von Hannes nicht 100% umgesetzt, 
sondern arbeite mich Stück für Stück heran!
Hier mal noch ein bißchen Code;
1
Touch_ruhe:
2
        sbi  Touch_DDR, Y_minus  ; alles auf Ausgang
3
        sbi  Touch_DDR, Y_plus
4
       cbi  Touch_DDR, X_plus
5
  cbi  Touch_DDR, X_minus    ; Interruptauslöser !!
6
7
        cbi  Touch_Control, Y_minus  ; Y Auf 0V
8
        cbi  Touch_Control, Y_plus  
9
        sbi  Touch_control ,X_minus; pullup an
10
    
11
  ret
Die Init für meinen ADC habe ich so aus meinem funktionierenden Programm 
übernommen, genau wie die Messabläufe.
Aber hier mal die X-Messumschaltung;
1
 Touch_speichern_X:
2
;hier X-Messung
3
  push temp1
4
  push temp2
5
  push zl
6
  push zh
7
8
  z_laden Touchwerte
9
10
        cbi   Touch_DDR, Y_plus  ;Y auf Input stellen
11
        cbi   Touch_DDR, Y_minus
12
        sbi   Touch_DDR, x_minus  
13
        sbi   Touch_DDR, x_plus
14
15
        sbi   touch_control, x_plus
16
        cbi   Touch_Control, X_minus ;X bestromen
17
          
18
        ldi  Temp1, (0<<ADEN)
19
        sts Adcsra , Temp1
20
    
21
        ldi   Temp1, 0b01100010  ;auf Eingang Y- stellen
22
        sts  Admux , Temp1
23
    
24
        ldi  Temp1, (1<<ADEN)
25
        sts Adcsra , Temp1
26
    
27
        rcall Touch_messen
28
29
       st z, adlow  ; X-Wert in ZL(Touchwerte) gespeichert  
30
        
31
  pop zh
32
  pop zl
33
  pop temp2
34
  pop temp1
35
  ret
Touch_speichern_Y sieht genau so aus, nur wird der Wert in Z+1 
gespeichert und natürlich vorher die Pins umgeschaltet.
1
Touch_messen:
2
  push temp1
3
  push temp2      
4
  ldi temp2, 3  ; x-mal dummy messen
5
messen:
6
  lds   temp1, adcsra
7
  sbr     temp1,(1<<ADSC)
8
  sts     ADCSRA, temp1        ; den ADC starten    
9
warten_adc2:
10
  lds   temp1, adcsra
11
  sbrc     temp1, ADSC        ; fertig?
12
  rjmp     warten_adc2
13
   
14
; ADC einlesen:
15
  lds      adlow, ADCL
16
  lds      adlow, ADCH
17
  dec temp2
18
  brne messen
19
  rcall touch_ruhe
20
  pop temp2
21
  pop temp1
22
  ret     ; In ADLOW steht das Ergebnis

von Sven B. (svenba)


Lesenswert?

Oh!
Die angehängte Datei könnt ihr IGNORIEREN, hatte gedacht, die wäre nicht 
angenommen worden. Das meiste ist nur Baustelle der letzten Tage...

von Hannes L. (hannes)


Lesenswert?

Lies Dir noch mal mein Konzept durch.

Ich schlug vor, eine ADC-Messung nur vorzubereiten (Portpins setzen, 
Messquelle auswählen) und dann die ISR zu verlassen. Die Messung (egal 
ob ADC oder nur Berührung) erfolgt dann im nächsten Interrupt, danach 
wird die nächste Messung vorbereitet. Zwischen Vorbereitung und Messung 
vergeht also immer die Zeit eines Timer-ISR-Intervalls, in der aber die 
CPU nicht wartet, sondern Jobs der Mainloop abarbeiten kann. Der ADC 
klappert derweil im Hintergrund (per Hardware) einige Wandlungen durch, 
wobei es auch darauf ankommt, dass er mindestens zwei Wandlungen 
schafft, damit das erste fehlerhafte Ergebnis überschrieben (entsorgt) 
wird und ein sinnvolles Ergebnis erscheint.

Und was machst Du?

Du rufst in der ISR Unterprogramme auf, die erst jetzt die Ports 
konfigurieren, die ADC-Quelle auswählen und auch noch sofort das 
Ergebnis liefern sollen... Das kann doch gar nicht funktionieren, der 
ADC braucht doch auch seine Zeit zum arbeiten. Du erzeugst doch damit in 
der ISR elend lange Busywaits. Und dabei ist es doch so einfach, etwas 
vorausschauend zu planen...

Vom LCD-Zugriff möchte ich nicht reden, mit meinem LCD-Treiber ist das 
kein Problem, der führt einen Bildschirmspeicher im SRAM, was die 
Zugriffe extrem beschleunigt. An das LCD übertragen wird der Inhalt dann 
byteweise in einem per Timer synchronisierten Job der Mainloop. Damit 
darf ich dann auch in der ISR ganze Texte ausgeben, ohne dass ein 
Timing-Problem entsteht. Aber das ist nun wieder eine andere Baustelle.

...

von Sven B. (svenba)


Lesenswert?

Danke für die kritische Antwort.
Ich beschäftige mich erst seit letztem August mit uC,daher sind mir 
einige Dinge einfach noch nicht so klar.

Ich habe jetzt also die Befehle, die ich erst per rcall aufgerufen hatte 
direkt in die "Schleifen" geschrieben und halte mich an die von dir 
vorgeschlagene Reihenfolge.

Den ADC lasse ich dann also im Free Run laufen und kümmere mich nicht 
mehr unbedingt um das Busy-Flag, richtig?

Mein Hauptprogramm ist ein Oszilloskop auf einem zweiten, grösseren 
GLCD, wobei ich erst 255 Werte mit ADC speichere und danach auf dem GLCD 
ausgeben lasse, usw, das funktioniert bis jetzt alles super.

Was würde jetzt passieren, wenn der "TouchADC" im Free Run anläuft, die 
ISR
zurück springt und dann der Punkt kommt, wo ich die 255 Werte des 
anderen Portpins über ADC hole und während dieser Zeit die Interrupts 
sperre?

Kann ich dem ADC nach Start einer Wandlung eines Eingangs umschalten auf 
Wandlung von zwei Eingängen?
Evtl über "laden ADC-Register -- setzen High für neuen Eingang --- 
speichern in Register" ?

Schönes Wochenende wünsch ich euch!

von Hannes L. (hannes)


Lesenswert?

Sven B. schrieb:
> Danke für die kritische Antwort.

Sorry, manchmal bin ich da recht direkt...

> Ich beschäftige mich erst seit letztem August mit uC,daher sind mir
> einige Dinge einfach noch nicht so klar.

Das ist normal.

>
> Ich habe jetzt also die Befehle, die ich erst per rcall aufgerufen hatte
> direkt in die "Schleifen" geschrieben und halte mich an die von dir
> vorgeschlagene Reihenfolge.

Das allein ist es nicht, das würde weiterhin Busywaits bewirken.

>
> Den ADC lasse ich dann also im Free Run laufen und kümmere mich nicht
> mehr unbedingt um das Busy-Flag, richtig?

Das wäre richtig, wenn der ADC sich nur um den Touch kümmern bräuchte. 
Einfach das Abfrage-Intervall so hoch legen, dass darin mindestens zwei 
Wandlungen erfolgen.

>
> Mein Hauptprogramm ist ein Oszilloskop auf einem zweiten, grösseren
> GLCD, wobei ich erst 255 Werte mit ADC speichere und danach auf dem GLCD
> ausgeben lasse, usw, das funktioniert bis jetzt alles super.

Aha, dann ist ja der ADC bereits voll ausgebucht. Dann sollte man 
unbedingt den ADC-Complete-Interrupt nutzen, um die maximale Samplerate 
nutzen zu können und nebenher noch etwas Rechenzeit für andere Aufgaben 
zu haben.

>
> Was würde jetzt passieren, wenn der "TouchADC" im Free Run anläuft, die
> ISR
> zurück springt und dann der Punkt kommt, wo ich die 255 Werte des
> anderen Portpins über ADC hole und während dieser Zeit die Interrupts
> sperre?

Dies ist kein gutes Konzept. Wenn der ADC eine Quelle (also ohne 
Quellen-Umschaltung) mit maximaler Samplerate abtasten soll, dann nutzt 
man den ADC-Complete-Interrupt und liest die Messwerte in ein Array ein. 
Die ISR wird dabei so kurz, dass die Mainloop nebenher noch andere 
Arbeiten erledigen kann.

Übrigens halte ich den ADC des AVRs für etwas zu langsam für ein Gerät, 
dass Oszilloskop genannt werden darf. Für einen Kanal kommt man nicht 
viel höher als 15 kHz Samplerate (wenn man sich an das Datenblatt hält, 
also den ADC-Takt nicht über 200 kHz wählt), bei zwei Kanälen ist es 
dann nur noch 1/4 davon je Kanal, da ja die jeweils erste Messung nicht 
so gut ist.

>
> Kann ich dem ADC nach Start einer Wandlung eines Eingangs umschalten auf
> Wandlung von zwei Eingängen?

Du solltest Dir im Datenblatt nochmal den Aufbau, die Arbeitsweise und 
die Timingdiagramme des ADCs genauer ansehen.

> Evtl über "laden ADC-Register -- setzen High für neuen Eingang ---
> speichern in Register" ?

Das verstehe ich jetzt nicht, ADC-Register ist doch readonly.

Falls Du Admux meinst, sicher kann man das ändern, aber bitte nicht 
irgendwann während der Messung, sondern erst nach der Messung. Z.B. in 
der ADC-ISR: Messwert holen und sichern, ADMUX auf nächste ADC-Quelle 
einstellen, ADC wieder starten, im Hauptprogramm weiter arbeiten.

>
> Schönes Wochenende wünsch ich euch!

Danke, Dir auch, die Sonne scheint ja bereits...

...

von Sven B. (svenba)


Lesenswert?

Hannes Lux schrieb:

> Übrigens halte ich den ADC des AVRs für etwas zu langsam für ein Gerät,
> dass Oszilloskop genannt werden darf. Für einen Kanal kommt man nicht
> viel höher als 15 kHz Samplerate (wenn man sich an das Datenblatt hält,
> also den ADC-Takt nicht über 200 kHz wählt), bei zwei Kanälen ist es
> dann nur noch 1/4 davon je Kanal, da ja die jeweils erste Messung nicht
> so gut ist.
Off-Topic:
Ja, das war mir von Anfang an auch klar, deswegen bin ich gerade dabei, 
eine kleine abgeschirmte Platine zu entwickeln, welche zwischen meine 
Eingangsverstärkerschaltung und den uC gesteckt werden kann.
Hab dafür schon nen schnellen ADC von Maxim und schnelle RAMs liegen.
Ich versuche nur, mein Projekt Stück für Stück weiter zu entwickeln und 
lerne dabei immer mehr dazu.
(Am Anfang blinkte nur eine Led, dann Text auf einem 2 Zeilen 
Textdisplay, dann Punkte auf dem GLCD von Pollin, dann ADC einlesen mit 
Poti, ausgeben Byteweise mit Umrechnung, ausgeben bitweise mit 
Umrechnung auf 240x128, entwickeln und aufbauen einer Eingangsschaltung 
mit Multiplexer zum V/Div einstellen und hoher Eigangsimpedanz,Messung 
mit (für mich) maximal erreichbarer Samplerate, TOUCHBENUTZUNG, 
schnelleres Messen,......)
Die Frequenz, welche bis jetzt mit einer kompletten Periode angezeigt 
wird, liegt bei 2,5 kHz, das reicht fürs erste...
Sorry fürs Abschweifen... :-)

Ich stelle mir jetzt vor, dass ich den ADC für die Touchabfrage im Free 
Run starte und sollte mein Oszi-ADC dazwischen kommen, wird in dessen 
Unterprogramm der Touch-Schwellenzähler zurückgesetzt und meine 255 
Werte werden geholt.
Dann würde die Berührung nur in diesem Fall verworfen und wenn sie NACH 
dem OsziMessen kommt normal ausgewertet. Ist zwar nicht so elegant, aber 
könnte evtl funktionieren, oder?
Später soll der interne ADC eh nicht mehr fürs Oszi genutzt werden und 
es wird nichts mehr verworfen.
Was hältst du davon?

Mit dem ADC-Int hab ich noch nicht gearbeitet, werd mich da jetzt aber 
mal ran machen, dann könnte ich das oben geschilderte evtl sein lassen.
In etwa würde das ganze dann so aussehen, oder?


Start
Intvektor ADC wählen
Intvektor Timer wählen

Hauptprogramm:
mach blabla
rjmp starte OsziADC
mach blabla
rjmp Hauptprogramm

starte OsziADC:
   setze bit1 in Register XY ; Oszi ist am messen
   st Z(ADCwahl), xy
   admux xy
   adsc
   ADIF
ret

Timer-ISR:
   Abfrage Z(ADCwahl) ; misst Oszi?
   wenn ja, Abbruch

   setze bit2 in Register XY ; Touch misst
   st Z(ADCwahl), xy
   Schwellenaktionen wie bekannt
   adsc
   adif
Abbruch:
reti

ADC-ISR:
   ld XY, z(ADCwahl)
   auswerten bit1 oder 2 set?
bit1: ; Oszi
   Messwertzähler = 255 ?
wenn ja, Abbruch
   st Z(OsziADC), ADCH
   inc Messwertzähler, speichern
   xxx
Abbruch:
reti

bit2: ; Touch
   st Z(TouchADC), ADCH
   xxx
reti

von Chriz X. (tc-maxx)


Lesenswert?

Allu schrieb:
> Nach dem Einschalten wird zur Kalibrierung ein Kreuz angezeigt, das in
> der zu berühren ist. Danach folgen die 3 weiteren Ecken. Erfolgt eine
> Fehlermeldung, ist der Touch sehr abweichend von meinen Exemplaren, es
> werden dann Defaultwerte geladen und nach 5 Sekunden geht's weiter. Eine
> erfolgreiche Kalibrierung wird im EEProm abgelegt.

Hi Allu,
ich versuche gerade die Z-Werte vom ADC in eine korrekte X/Y Positionen 
für das Display umzurechnen.

Du hast ja in deinem Code den Touch kalibriert, ich habe versuch ASM zu 
verstehen aber das gelingt mir nicht! :(

Kannst du mir bitte beschrieben wie die Kalibrierung funktioniert und 
wie du die Umrechnung realisiert hast?

Vielen Dank!
Gruß MaXX

von Alex D. (allu)


Lesenswert?

Hi MaXX,

mein Display habe ich in ein Raster mit 23 Zeichen mit 7 Pixel Breite 
(x, 10 Pixel-Zeichen-Zeilenhöhe) und in 8 Zeichenzeilen (y) unterteilt. 
Das ergibt 23  x 8 = 184 kleine Folientasten. Dafür ist die Berechnung 
der Kalibrierung ausgelegt. Diese erfolgt in Bascom und wird im EEprom 
abgelegt.

Was Du in ASM siehst, ist die Berechnung der Rasterkoordinaten und des 
Rückgabewerts, wenn der Touch berührt wurde.

Der Touch läuft per Interrupt im Hintergrund. Mit dem habe ich nichts 
mehr zu tun, außer in Bascom zu fragen, wurde eine Folientaste gedrückt 
und welchen Rückgabewert hatte diese. Bei einer Zehnertastatur 
bespielsweise ordne ich einfach den Tasten die Rückgabewerte "0" bis "9" 
zu. Und dann kommt in Bascom die Frage, wurde eine Taste gedrückt und 
wenn ja, welchen Rückgabewert hatte diese. Die x/y-Koordinaten brauche 
ich also im meinem Auswerteprogramm überhaupt nicht.

Die Striche der Kreuze liegen auf der erster Pixelzeile des zweiten und 
des letzten Zeichens, in X- und Y-Richtung. Kalibriert wird hier auf ein 
Raster, da ich nicht auf dem Display malen will, sondern auf einfache 
Art Tasten erzeugen möchte. Beispielweise generiert der Text (Return) 
eine dünn umrandete Taste und [DEL] ein dick umrandete Taste.

Aber da hat ja jeder andere Ziele.

Gruß  allu

von Hannes L. (hannes)


Lesenswert?

Sven B. schrieb u. A.:
>
> Ich stelle mir jetzt vor, dass ich den ADC für die Touchabfrage im Free
> Run starte und sollte mein Oszi-ADC dazwischen kommen, wird in dessen
> Unterprogramm der Touch-Schwellenzähler zurückgesetzt und meine 255
> Werte werden geholt.

Dann würde ich die ADC-Zugriffe generell in einen Interrupt auslagern. 
Um im Oszi-Betrieb mit unterschiedlichen Zeitachsen arbeiten zu können, 
würde ich dann wieder den Timer-Int (Compare) benutzen. Da ja der Oszi 
nicht kontinuierlich läuft, sondern einen "Schnappschuss" macht und 
dabei den zur Verfügung stehenden RAM füllt, muss ja während des Scanns 
der Touch nicht abgefragt werden. So kann per Merker entschieden werden, 
ob die ISR den Messwert ins Oszi-Array schaufelt, oder den Touch 
abfragt. Die Touchabfrage ist dann eben während des Scanns blockiert.

> Dann würde die Berührung nur in diesem Fall verworfen und wenn sie NACH
> dem OsziMessen kommt normal ausgewertet. Ist zwar nicht so elegant, aber
> könnte evtl funktionieren, oder?

Die Berührung würde ich während des Oszi-Scanns überhaupt nicht testen, 
es gibt keinen Grund, den Scann abzubrechen. Für den Scann würde ich 
auch den gesamten freien RAM nutzen (außer Variablen und Stack 
natürlich), so dass man bei der Darstellung darin scrollen bzw. zoomen 
kann.

> Später soll der interne ADC eh nicht mehr fürs Oszi genutzt werden und
> es wird nichts mehr verworfen.
> Was hältst du davon?

Ich halte nichts davon, mit einem AVR zwei verschiedene GLCDs mit 
unterschiedlichen Controllern ansteuern zu wollen. Ich hatte auch mal 
mit einem GLCD 320x128 mit T6963C und einem Mega32 herumgespielt, es 
dann aber erstmal beiseite gelegt, weil andere Dinge anstanden. 
Realisiert sind erstmal nur Life-Oszi (also kein Speicherbetrieb) mit 
AVR-ADC mit nur einem Kanal und 8-Bit-Logic-Logger auf Event-Basis 
(Loggen von Veränderung mit Zeitstempel) mit grafischer Darstellung 
zoom- und scrollbar. Dazu sollte noch ein Speicher-Oszi und ein LA mit 
einstellbarer Abtastrate kommen, mir ist aber auch irgendwie die Lust 
vergangen, denn was Vernünftiges wird das sowiso nicht. Wenn Du mir eine 
PM schreibst, kann ich Dir gern mal den bisher existierenden Code 
schicken. Veröffentlichen möchte ich ihn nicht, dazu ist er zu schlecht, 
es gibt in diesem Forum bedeutend bessere Umsetzungen von Oszi und LA. 
Das Teil wird mittels zweier Drehgeber und einiger Taster bedient. Die 
Touch-LCDs gab es damals noch nicht.

>
> Mit dem ADC-Int hab ich noch nicht gearbeitet, werd mich da jetzt aber
> mal ran machen, dann könnte ich das oben geschilderte evtl sein lassen.
> In etwa würde das ganze dann so aussehen, oder?
>
>
> Start
> Intvektor ADC wählen
> Intvektor Timer wählen

Naja, ich schreibe da nicht nur die benötigten Vektoren, sondern die 
gesamte Sprungtabelle, denn ich mag keine Lücken im Code. Das ist aber 
Ansichtsache.

>
> Hauptprogramm:
> mach blabla
> rjmp starte OsziADC
> mach blabla
> rjmp Hauptprogramm
>
> starte OsziADC:
>    setze bit1 in Register XY ; Oszi ist am messen
>    st Z(ADCwahl), xy
>    admux xy
>    adsc
>    ADIF
> ret
>
> Timer-ISR:
>    Abfrage Z(ADCwahl) ; misst Oszi?
>    wenn ja, Abbruch
>
>    setze bit2 in Register XY ; Touch misst
>    st Z(ADCwahl), xy
>    Schwellenaktionen wie bekannt
>    adsc
>    adif
> Abbruch:
> reti
>
> ADC-ISR:
>    ld XY, z(ADCwahl)
>    auswerten bit1 oder 2 set?
> bit1: ; Oszi
>    Messwertzähler = 255 ?
> wenn ja, Abbruch
>    st Z(OsziADC), ADCH
>    inc Messwertzähler, speichern
>    xxx
> Abbruch:
> reti
>
> bit2: ; Touch
>    st Z(TouchADC), ADCH
>    xxx
> reti

Naja, ich wäre mit diesem Konzept nicht glücklich. Aber ich möchte 
diesen Thread nicht auch noch für ein Oszi-Projekt entführen.

...

von Alex D. (allu)


Lesenswert?

Hallo MaXX,

genaueres zur Berechnung. Ursprünglich wollte ich noch eine mögliche 
Verdrehung der Touchfolie gegen das LCD rausrechnen, hat sich aber bei 
meinen Displays als nicht notwendig herausgestellt.

So konnte die Berechnung der Kalibrierwerte recht schlicht ausfallen. 
Das Prinzip am Beispiel der X-Achse (im Programm werden jeweils 2 Werte 
gemittelt, aber das ist hier erstmal egal).

Prinzip:
|<----------------------ADC-Wert------------------|
|<-ADC-Wert->|
|            +                                    +  Kal-Kreuze|
|            X_links                              X_rechts|
|<-1 Raster->|<-- -----------21-Raster----------->|<-1 Raster->|
|<------Displaybreite = 23 Zeichen (Raster / Folientasten)---->|

X_links und X_ rechts sind die entsprechenden Messwerte des ADCs.
Der Randabstand zum zweiten Zeichen ist (die Zählung beginnt bei 0):

X_1_pos = X_links      ; erster Kalibrierwert

Um das berührte Rasterkästchen im Auswerteprogramm schnell ermitteln zu 
können, ist der zweite Kalibrierwert so aufgebaut, dass im wesentlichen 
eine Multiplikation und ein Division zur Bestimmung ausreichen. Um die 
erforderliche Genauigkeit zu erhalten, wird bei X mit 1024 und bei Y mit 
2048 multipliziert).

X_pro_spaltenbreite =  21 * 1024 / (X_rechts - X_links)

Zur Auswertung:
- der ADC liefert einen X-Wert, nennen wir ihn X_aktuell
- von X_aktuell wir der Randabstand abgezogen (X_1_Pos)
- ist das Ergebnis negativ, ist die Position 0 berührt worden
- war es positiv wird der verbleibene Rest mit X_pro_Spaltenbreite 
(hardware)multipliziert und dann durch 1024 geteilt, Low-Byte ignorieren 
und High-Byte 2 mal rechts schieben und plus 1 rechnen. Die X-Postion 
des Rasterkästchens ist jetzt bestimmt.
- da je nach Touch auch mal ein Wert grösser als 22 herauskommen könnte, 
wird das Ergebnis noch auf den Max-Wert korrigiert (Wertebereich 0-22 = 
23 Zeichen je Zeile).

Mehr steckt nicht dahinter. Die Y-Richtung funktioniert genauso. Die 
beiden Werte zeigen jetzt auf das errechnete Rasterkästchen. Damit wird 
auf die Tabelle der Rückgabewerte zugegriffen (Form_tab) und der Wert in 
F_Taste bereitgestellt. Die Tabelle der Rückgabewerte liegt im RAM, hier 
schreibt man rein, was man bei der Berührung des entsprechenden 
Rasterkästchen haben möchte. Jetzt wird noch das Flag Touch_meldet 
gesetzt und fertig.

Was das LCD an dieser Stelle anzeigt, ist davon völlig unabhängig. Ob 
eine Taste oder Text, Hauptsache es stimmt mit dem Raster überein.

Gruß  allu

von Chriz X. (tc-maxx)


Angehängte Dateien:

Lesenswert?

@allu
Danke für deine Erklärung, jetzt ist mir einiges klar!!!

Ich habe mal 4 Punkte auf meinen Touch gesetzt die ich angetippt habe, 
dabei sind folgende Werte (siehe Bild) herausgekommen.

Kann das sein, oder mache ich hier evtl. etwas Grundlegendes in der 
Ansteuerung falsch ?

MaXX

von Alex D. (allu)


Lesenswert?

Chriz X. schrieb:
> ich habe mal 4 Punkte auf meinen Touch gesetzt die ich angetippt habe,
> dabei sind folgende Werte (siehe Bild) herausgekommen.

X muss in Richtung von P1 nach P2 ansteigen, ok,
aber die Wertepaare gleichen Abstands von P1/P3 und P2/P4 weichen viel 
zu stark voneinander ab.

Y muss in Richtung von P1 nach P3 ansteigen, falsch. Für mich sieht das 
so aus, als würde nochmal die X-Richtung mit umgedrehter Polarität 
gemessen werden.

Die Messwerte müssen sich anlog zu deiner Liste LCD(X) und LCD(Y) 
verhalten.

Übrigens verwende ich nur die oberen 8-Bit des A/D-Wandlers, reicht für 
meine Aufgabenstellung. Im Touchprogramm ist eine Entprellfunktion 
integriert. Die Touchfolie wird nur für einige 100 usec während der 
Messzeit angeschaltet, da diese doch recht niederohmig ist. Ob sich 
damit die Werteabweichungen erklären lassen, weiß ich leider auch nicht.

Gruß  allu

von K. J. (Gast)


Lesenswert?

Alex D. schrieb:
> Chriz X. schrieb:
>> ich habe mal 4 Punkte auf meinen Touch gesetzt die ich angetippt habe,
>> dabei sind folgende Werte (siehe Bild) herausgekommen.
>
> X muss in Richtung von P1 nach P2 ansteigen, ok,
> aber die Wertepaare gleichen Abstands von P1/P3 und P2/P4 weichen viel
> zu stark voneinander ab.
>
> Y muss in Richtung von P1 nach P3 ansteigen, falsch. Für mich sieht das
> so aus, als würde nochmal die X-Richtung mit umgedrehter Polarität
> gemessen werden.

> Gruß  allu

Hm Display unterscheide ? bei mir ist es auch andersherum.

ALSO:

H->L
|
L

von allu (Gast)


Lesenswert?

K. J. schrieb:
> Hm Display unterscheide ? bei mir ist es auch andersherum.
>
> ALSO:
>
> H->L
> |
> L

Geht auch, die Werte müssen halt per Software umgerechnet werden um 
aufsteigende GLCD-RAM-Adressen zu erreichen. Man kann den Touch aber 
auch gleich so anschliessen, dass es direkt passt.

Nur X und umgepolt X nochmal messen geht nicht. Da fehlt Y.

Gruß  allu

von Chriz X. (tc-maxx)


Lesenswert?

Hi, also ich habe jetzt nochmal angeschlossen wie es eigentlich sein 
müsste! (oder?)
1
'---[Readtouch]-----------------------------------------------------------------
2
'
3
'                Y- (1)
4
'                Pina.0
5
'                *
6
'                |
7
'                |
8
'  X+ (3) *------+-----*    X- (4)
9
'  Pina.2        |          Pina.3
10
'                |
11
'                *
12
'                Y+ (2)
13
'                Pina.1
14
'
15
' #-----------------#
16
' | Aktion:         |
17
' #-----------------+-------------#------------#------------#------------#
18
' | Folie           |  links X-   |  rechts X+ |  oben Y-   |  unten Y+  |
19
' | Pin am LCD      |  (4) unten  |  (3)       |  (1) oben  |  (2)       |
20
' | Pin am µC       |  Pina.3     |  Pina.2    |  Pina.0    |  Pina.1    |
21
' #-----------------+-------------+------------+------------+------------#
22
' | X-Wert messen   |  L-Pegel    |  H-Pegel   |  hochohmig |  ADC-IN    |
23
' | Y-Wert messen   |  hochohmig  |  ADC-IN    |  L-Pegel   |  H-Pegel   |
24
' | Test:is touched |  hochohmig  |  IN mit PU |  L-Pegel   |  hochohmig |
25
' #-----------------#-------------#------------#------------#------------#
26
27
Readtouch:
28
 '-[Read X]---------------------------------------------------------------------
29
 Config Pina.3 = Output                                     ' Output
30
 Reset Porta.3                                              '  Low
31
32
 Config Pina.2 = Output                                     ' Output
33
 Set Porta.2                                                ' High
34
35
 Config Pina.0 = Input                                      ' Input
36
 Config Pina.1 = Input                                      ' Input
37
38
 Waitms 20                                                  ' Wait until the port is stable
39
 X = Getadc(1)                                              ' Read the ad value for the y
40
 X = 1024 - X                                               ' Invert the reading
41
42
 '-[Read Y]---------------------------------------------------------------------
43
 Config Pina.3 = Input                                      ' Input
44
 Config Pina.2 = Input                                      ' Input
45
46
 Config Pina.0 = Output                                     ' Output
47
 Reset Porta.0                                              ' Loq
48
49
 Config Pina.1 = Output                                     ' Output
50
 Set Porta.1                                                ' High
51
52
 Waitms 20                                                  ' Wait until the port is stable
53
 Y = Getadc(2)                                              ' Read the ad value for the x
54
 Y = 1024 - Y                                               ' Invert the reading
55
Return
56
57
'---[Is_Touched?]---------------------------------------------------------------
58
Function Is_touched() As Byte
59
 '-[ X1 ]-----------------------------------------------------------------------
60
 Config Pina.0 = Input                                      ' Input
61
 Porta.0 = 0                                                ' Pullup aus -> Hochohmig
62
63
 '-[ X2 ]-----------------------------------------------------------------------
64
 Config Pina.2 = Input                                      ' Input
65
 Porta.2 = 1                                                ' Pullup ein
66
67
 '-[ Y1 ]-----------------------------------------------------------------------
68
 Config Pina.1 = Output                                     ' Output
69
 Reset Porta.1                                              ' Low-Pegel
70
71
 '-[ Y2 ]-----------------------------------------------------------------------
72
 Config Pina.3 = Input                                      ' Input
73
 Porta.3 = 0                                                ' Pullup aus  -> Hochohmig
74
75
 '-[Touch gedrückt ?]-----------------------------------------------------------
76
 Waitms 20
77
78
 If Pina.3 = 0 Then
79
   Lcdat 20 , 1 , "Touched"
80
 Else
81
   Lcdat 20 , 1 , "       "
82
 End If
83
84
 Is_touched = Pina.3
85
End Function

Nun zeigt es mir den Wert für X nur noch in der linke Hälfte des LCD an, 
in der rechten Hälfte erhalte ich permanent eine 1.

Und der Wert für Y wird mir nun in der oberen Hälte des LCDs angezeigt, 
in der Unteren bekomme ich auch eine 1.

MaXX

von allu (Gast)


Lesenswert?

Auch wenn ich selbst Bascom benutze, aber beim Touch?

Sag mal, was willst du eigentlich mit dem Touchwert anstellen? Malen, 
Tasten basteln, Einzelpixel "antouchen" oder was sonst?

Gruß  allu

von Chriz X. (tc-maxx)


Lesenswert?

allu schrieb:
> Sag mal, was willst du eigentlich mit dem Touchwert anstellen? Malen,
> Tasten basteln, Einzelpixel "antouchen" oder was sonst?

Als erstes will ich es verstehen, dann malen und Tasten basteln.

Gruß MaXX

von Chriz X. (tc-maxx)


Lesenswert?

Hi, ich habe das Problem gefunden:

Ich hatte in der ADC-Config die Referenzspannung auf Internal statt auf 
Avcc stehen.

Gruß MaXX

von allu (Gast)


Lesenswert?

Zwei Vorschläge hätte ich noch (am Beispiel von X):

Chriz X. schrieb:
> Waitms 20                               ' Wait until the port is stable
>  X = Getadc(1)                          ' Read the ad value for the y

ändern in:
X = Getadc(1)
X = Getadc(1)

Das sollte schneller und genauer gehen, da der ADC bei der relevanten 
Messung bereits auf dem richtigen Eingang steht.

Chriz X. schrieb:
> X = 1024 - X                             ' Invert the reading

bedeutet, der Touch wird umgekehrt mit Spannung versorgt, aber wozu soll 
das gut sein? Am Rande bemerkt, die größte Zahl des ADC ist 1023 und 
nicht 1024.

Chriz X. schrieb:
> Config Pina.3 = Output                    ' Output
>  Reset Porta.3                            '  Low
>
>  Config Pina.2 = Output                   ' Output
>  Set Porta.2                              ' High

dafür schreiben:

Config Pina.3 = Output                    ' Output
Set Porta.3                               '  High

Config Pina.2 = Output                     ' Output
Reset Porta.2                              ' Low

Gruß  allu

von Chriz X. (tc-maxx)


Lesenswert?

Danke allu, ich habe es so umgesetzt.
Gruß MaXX

von Klaus (Gast)


Lesenswert?

hallo, hab mal eine frage und zwar habe ich das Touch so wie die 
Schaltung von benedikt verdrahtet. Ich habe alle auf eine platine 
gesetzt mit ISP-Programmer, wenn ich jetzt einen Atmega8 bespielen 
möchte ( mit den richtigen Fuses) klappt das auch und das Programm läuft 
super.

Jetzt kann ich aber kein 3. mal den Controller bespielen, ich kann nich 
mehr auf ihn zugreifen, auch nich auf ner anderen platine. Ich habe so 
schon 4 Atmegas geschrottet oder kan nich mehr zugreifen.

Was mache ich verkehrt? Wo liegt mein Fehler ?

von Florian S. (der_picknicker)


Lesenswert?

Vielleicht Fuses falsch gesetzt? Was hast du denn "gefused"?

von Klaus (Gast)


Lesenswert?

Also ich habe folgende gesetzt:
SUT1
SUT0
CKSEL3
CKSEL1
CKSEL0
BOOTSZ0
BOOTSZ1

von Klaus (Gast)


Lesenswert?

Ich sehe grade weiter ob folgenden beitrag:

falls du  einen billig-programmer am com-port des pcs benutzt. dann
solltest du mal den transistor fuer die reset-steuerung checken, hier
ist ein exemplar mit recht hoher stromverstaerkung erforderlich.

Welchen transistor sollte ich denn verwenden? ixh habe jetzt BC 547B 
drin.

von Sascha W. (sascha-w)


Lesenswert?

@Klaus

da der AVR auf internem Takt laufen muss kann es nicht sein das CKSEL 3 
gesetzt ist, denn dann musst du einen Quarz anschließen, oder zum 
wiederbeleben einen externen Takt.

warum verstellst du die FUSE's wenn er läuft wie er soll??

Sascha

von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

ich habe die fuses vorher vestellt und dann lief der und dann wollte ich 
noch ne andere software draufbügeln aber danach geht nix merh bei allen 
4 atmegas war das so.
Im Anhang noch mal die Fuses also häkchen heisst unprogrammed.

von Klaus (Gast)


Lesenswert?

Ich meine natürlich 0 bedeutet häkchen.

von Sascha W. (sascha-w)


Lesenswert?

läuft denn das Programm noch - auch wenn er sich nicht proggen lässt?

Sascha

von Klaus (Gast)


Lesenswert?

Also es läuft solange, bis ich ein neues Programm aufspiele und danach 
geht dann nix mehr.
Und ich habe nur die hier aus dem Forum genommen, die auf laufen.kann es 
sein das sich das Display und Isp gleichzeitig nicht verstehen?

von Sascha W. (sascha-w)


Lesenswert?

Klaus schrieb:
> Also es läuft solange, bis ich ein neues Programm aufspiele und danach
> geht dann nix mehr.
lief zuvor schon das Programm fürs Display ?

> kann es
> sein das sich das Display und Isp gleichzeitig nicht verstehen?
das kann schon sein - ich hab in der Testschaltung das Display zum 
programmieren jedenfalls nicht angeschlossen gehabt da ich dort keinen 
ISP-Stecker dran hatte.

Sascha

von Klaus (Gast)


Lesenswert?

ja also das Programm lief vorher einwandfrei.

Ich habe jetzt den letzten atmega mal immer auf nem exteren board 
programmier und jetzt scheint das zu funktionieren. Dann lag das wohl 
doch am ISP und gleichzeitigem Display

totzdem danke für die Antworten

von Sascha W. (sascha-w)


Lesenswert?

evl. mit einem Pullup an CS vom Display dafür sorgen, das während des 
programmierens das Display wirklich inaktiv ist.

Sascha

von Klaus (Gast)


Lesenswert?

So nun hab ich doch noch mal eine frage und zwar benutze ich den ersten 
Code von benedikt, wo es nur um das text Display geht und nun wollte ich 
die Schrift kleiner machen, damit ich mehr zeilen bekommen.
Welchen Ansatz muss ich da nachgehen?

von Alex D. (allu)


Lesenswert?

Kleiner machen geht nicht wirklich, wenn es gut lesbar bleiben soll. Die 
Zeichen sind 7 Pixel hoch. Ein Pixel Zwischenraum = 8. Das Display ist 
80 Pixelzeilen hoch, ergibt maximal 10 Zeichenzeilen.

Aber enger schreiben geht, maximal 26 Zeichen je Zeile sind möglich.

Gruß  allu

von Julius H. (julius)


Lesenswert?

Moin Moin,

ich würde gerne wissen, ob es schon Ideen bzw. Ansätze gibt, wie man es 
schaffen kann, damit man mit diesem Touchscreen auch etwas steuern kann.
Wie z.B. ein Relais. Weil wenn ich diesen Thread richtig verfolgt habe 
gibt es soetwas leider noch nicht.
Wenn es bis jetzt noch keine Sourcecodes dafür gibt, könnte mir jemand 
vielleicht einen Denkanstoß geben in welche Richtung ich mir Gedanken 
machen muss. Bin was Controller angeht noch recht neu auf dem Gebiet 
also bitte nicht gleich verbal niedermachen.

MfG

Julius

von Hannes L. (hannes)


Lesenswert?

Wieso soll das nicht gehen?

Du malst Dir mit den bisher bekannten Routinen eine Benutzeroberfläche.
Du nutzt den Touch, um Eingaben zu machen.
Die Eingaben werden dem Hauptprogramm gemeldet und haben Koordinaten.
Nun liegt es an Dir, die Koordinaten auszuwerten, also den Buttons der 
Oberfläche zuzuordnen und die entsprechenden Schalthandlungen 
auszuführen.

Das ist im Prinzip nichts Anderes, als wenn Du Tastendrücke auswertest 
und in Abhängigkeit davon Portpins setzt. Oder als wenn Du über eine 
Schnittstelle (UART, I²C, SPI, ...) Kommandos empfängst, auswertest und 
in Abhängigkeit davon Schalthandlungen auslöst.

Und wenn Du betreffs Controller noch "neu" bist, dann solltest Du 
erstmal kleinere Brötchen backen, ehe Du Dich mit einem Grafik-LCD mit 
Touchscreen beschäftigst. Das ist jetzt kein "Niedermachen", sondern ein 
gut gemeinter Rat. Man schreibt auch keine Romane, ehe man das Alfabet 
gelernt hat. Es ist immer vorteilhaft, wenn man versteht, was man tut. 
Und dabei ist es hilfreich, etwas kleiner anzufangen und sich das Wissen 
Schritt für Schritt anzueignen.

...

von Julius H. (julius)


Lesenswert?

Hallo Hannes,

danke für den Tipp.

Das ist schon richtig das man eigentlich am Anfang besser mit den 
kleinen Brötchen anfangen sollte, aber ich versuch mich gerne an großen 
Sachen um so größer ist hinterher auch die Freude.

Zumindest habe ich es geschafft mittels Touch meine LED auf dem 
Testboard An/Aus zu schalten, Dank deines Denkanstoßes. Ob das so wie 
ich das gemacht die beste Art und Weise ist das sei mal dahin gestellt, 
zumindest freue ich mich über den kleinen Erfolg. Danke für Eure Hilfe 
ich hoffe ich kann weiterhin darauf zurück greifen.

von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
im Anhang befindet sich ein Code hier aus dem Forum, den ich umgeändert 
habe auf meine Schaltung und wo ich die lcd lib von Benedikt eingefügt 
habe.

In Main habe ich einen Buttom programmiert und dann einen Schriftzug 
einblenden lasse, wenn das touchg irgendwo berührt wird.
Wie kann ich jetzt nur die koordinaten des Buttoms abfragen, damit nur 
etwas passiert, wenn auch der button berührt wird?

Könnt ihr mir helfen ? hier noch mal der Ausschnitt:
1
int main(void)
2
{
3
  lcd_init();
4
  adc_init();
5
  lcd_clear();
6
7
  int t=0;
8
9
  while(1){
10
    
11
  lcd_line(20,20,20,35);
12
  lcd_line(21,35,70,35);
13
  lcd_line(70,35,70,20);
14
  lcd_line(21,20,70,20);
15
16
      lcd_gotoxy(28,24);
17
      lcd_writestringP(PSTR("Button"));
18
19
20
    while(!touched()){}
21
22
      lcd_gotoxy(51,50);
23
      lcd_writestringP(PSTR("das ist ein Test"));
24
    
25
    }
26
27
  while(1);
28
29
  return 0;
30
}

von DerDieter (Gast)


Lesenswert?

Wenn du dir die adc.c anguckst findest du die Funktionen für die 
touchauswertung im folgenden Teil:
1
//Is LCD touched?
2
int touched(void)
3
{
4
  TOUCH_PORT=0x01;
5
  TOUCH_DDR=0x04;
6
  _delay_ms(1);
7
  return (TOUCH_PIN&0x01)?0:1;
8
}
9
10
//Read raw X
11
int read_x(void)
12
{
13
  TOUCH_PORT=0x04;
14
  TOUCH_DDR=0x0C;
15
  _delay_ms(2);
16
  return adc_read(1);
17
}
18
19
//Read raw Y
20
int read_y(void)
21
{
22
  TOUCH_PORT=0x02;
23
  TOUCH_DDR=0x03;
24
  _delay_ms(1);
25
  return adc_read(2);
26
}
27
28
//Read screen X
29
int read_xval(void)
30
{
31
  long tx=read_x();
32
  tx-=280;
33
  tx*=327;
34
  tx/=1000;
35
  if(tx<0){tx=0;}
36
  if(tx>160){tx=160;}
37
  return tx;
38
}
39
40
//Read screen Y
41
int read_yval(void)
42
{
43
  long ty=read_y();
44
  ty-=295;
45
  ty*=192;
46
  ty/=1000;
47
  if(ty<0){ty=0;}
48
  if(ty>80){ty=80;}
49
  return ty;
50
}

Damit müsstest du da was machen können aber wie ganu kann ich dir jetzt 
so auch nich sagen.

von Thomas (Gast)


Lesenswert?

hallo habt ihr schon was rausgefunden wegen dem Erkenn, wo genau 
gedrückt wurde, um verschiedene Tasten nauswerten zu können ??
Wäre auch an sowas interessiert und probiere schon länger rum aber meine 
Kenntnisse sind nich so gut deswegen gabs noch keine fortschritte...

Gruß Thomas

von Oliver (Gast)


Lesenswert?

Also warum fragt ihr nicht einfach ab ob ihr an der Stelle seit wo ihr 
den Button gesetzt habt ?

Klaus schrieb:
> lcd_gotoxy(28,24);
>       lcd_writestringP(PSTR("Button"));

Hier habt ihr doch die Stelle wo der button ist!

Also fragt ihr einfach das Touch ab und errechnet dann ob ihr an der 
Stelle seit wo der button liegt !!

greetz. Oliver

von Thomas (Gast)


Lesenswert?

Also würde das einfach bedeuten, dass man mit tx und ty die Werte 
abfragt?
1
if( 
2
    touched(
3
4
 tx=bla ;
5
 ty=bla ;
6
  )
7
           )
8
{}

Oder wie muss ich das verstehen?

von Oliver (Gast)


Lesenswert?

Also ich löse das ganze anderst, im Moment arbeite ich nämlich an einer 
TouchScreenButton Steuerung...

Ich mache folgendes.. ich kreiere Buttons die eine von mir festgelegte 
maxhöhe sowie maxbreite haben, dazu kommen noch die Koordinaten.

Wenn ich also jetzt den Button definiert habe, nennen wir ihn Button1 
werde ich in der Hauptschleife die Buttons auslesen, das geschieht in 
einer Schleife.

Dazu frage ich jeweils das Touchscreen ab, speichere die X,Y Koordinaten 
in einem Strukt und vergleiche dann ob die Koordinaten in dem Bereich 
des Buttons liegen.

Das dürfte ungefähr so aussehen.

!!!!!!!!!ACHTUNG: KEIN VOLLWERTIGER CODE NUR GEDANKENGÄNGE !!!!!!!!
1
char num_buttons; //ButtonNummerierung
2
3
// Buttons initialisieren
4
void button_init(void)
5
{
6
 num_buttons = 0; // Buttons am anfang zurücksetzen oder falsch gewünscht später aus dem EEProm auslesen ?
7
}
8
9
// Button malen
10
void button_add(height,width,x,y,bitmap,funktion die aufgerufen wird wenn gepushed wird(*push))
11
{
12
13
//Buttongrafik aus dem flash laden und zeichen
14
button_bitmap(bitmap,x,y,width,height);
15
16
// Button zur Buttonliste hinzufügen
17
button[num_buttons].on_press = push;
18
button[num_buttons].x1 = x ;
19
button[num_buttons].y1 = y;
20
button[num_buttons].x2 = x + width;
21
button[num_buttons].y2 = y + height;  
22
num_buttons++;
23
}
24
25
// Buttons abfragen
26
void button_poll(void)
27
{
28
struct Point* coords; // Koordinaten in ein Strukt schreiben
29
30
for (int i=0; i<num_buttons; i++)
31
{
32
coord = Touchauswertungsprogramm; // Hier muss erst X und danach Y ausgelesen werden da beide werte in das Strukt geschrieben werden !!
33
  
34
// Koordinaten abfragen.
35
1. if *coords x > button x koordinate &
36
2. if *coords x < button x2 koordinate &
37
3. if *coords y > button y koordinate &
38
4. if *coords y < button y2 koordinate
39
40
// Dann führe Programm denn Button wurde innerhalb seiner Größe gepushed.
41
button[num_buttons].on_press();
42
return
43
}

Hauptprogrammteil dürfe ungefähr so aussehen:
1
//initteil
2
button_init();
3
4
while(1)
5
{
6
 button_poll();
7
 add_button(0,0,96,29,hochgrafik,funk_hoch);
8
9
// So könnte eine Funktion aussehen die aufgerufen wird:
10
void funk_hoch(void)
11
{
12
 // Bewege z.B Servo nach Rechts (hoch) !
13
}

! Wie gesagt sind nur Ideen von mir, welche ich im Moment umsetze, wenn 
ich was fertiges habe werde ich es hier natürlich präsentieren !!

Greetz Oliver

von Thomas (Gast)


Lesenswert?

OHA, Das sieht doch schon ganz schön komplex aus. Funktioniert das denn 
schon bei dir??
Vll wäre es auch gut, wenn man die Buttons schon vordefiniert und sie 
nur an bestimmte stellen plazieren kann z.B. nur links oder rechts vom 
Touch also an dafür festgelegte Stellen oder so ^^ wäre jetzt mein 
erster Gedanke.

Bin auch sehr an sowas interessiert. Kannst dich ja mal melden:
ThomasH89@gmx.de

gruß

von Oliver (Gast)


Lesenswert?

Thomas schrieb:
> OHA, Das sieht doch schon ganz schön komplex aus. Funktioniert das denn
> schon bei dir??

Also im Moment funktioniert das Button - anlegen, -löschen, -pushen 
schon einigermaßen,allerdings habe ich keine passenden grafiken um sie 
darzustellen. Deshalb ist es bei mir einfach nur ein TEXT welchen ich 
dann verarbeite.

Thomas schrieb:
> Vll wäre es auch gut, wenn man die Buttons schon vordefiniert und sie
> nur an bestimmte stellen plazieren kann z.B. nur links oder rechts vom
> Touch also an dafür festgelegte Stellen oder so ^^ wäre jetzt mein
> erster Gedanke.

Also meine Idee ist, einfach die "buttongrafik" genau an meine Stelle zu 
setzen welche ich vorgebe:

Oliver schrieb:
> // Button malen
> void button_add(height,width,x,y,bitmap,funktion die aufgerufen wird wenn 
>gepushed wird(*push))
> {
>
> //Buttongrafik aus dem flash laden und zeichen
> button_bitmap(bitmap,x,y,width,height);
>
> // Button zur Buttonliste hinzufügen
> button[num_buttons].on_press = push;
> button[num_buttons].x1 = x ;
> button[num_buttons].y1 = y;
> button[num_buttons].x2 = x + width;
> button[num_buttons].y2 = y + height;
> num_buttons++;
> }

Per -X, -Y Koordinaten übergebe ich den Startpunkt, an dem die Grafik 
anfangen soll (Kann diese also beliebig platzieren !!
1
button_add(20,40,X-Koordinate,Y-Koordinate,button_hoch,f_hoch);

Vielleicht hat ja jemand lust kleine Grafiken zu zeichnen welche passend 
für die Größe des Displays sind, dann kann ich schauen dass ich eine 
passende Grafikausgabe programmiere.

Greetz Oliver

von Thomas (Gast)


Lesenswert?

Mist Hatte ne falsche Email-Adresse angegeben, meine ist 
ThomasH89@gmx.net
sonst schreib mir mal deine dann melde ich mich mal wäre dann 
interessiert eventuell ein wenig an deinem Projekt 
mitzuwirken............

von Sascha W. (sascha-w)


Angehängte Dateien:

Lesenswert?

Hallo,

also die Auswertung von Schaltflächen mache ich auch wie von Oliver 
vorgeschlagen - allerdings in ASM.

Im Anhang mal eine Exceldatei die ich mir zum testen gebastelt habe.
Man kann dort mal malen und sich die Grafikdaten ausgeben lassen.
(hier als ASM-Code, ab mit ein bisschen VBA sollte das auch für C 
machbar sein)
In meiner Originaldatei hab ich noch ein paar Funkionen eingebaut, die 
über die RS232 auch den Transfer der Excelansicht auf das Display 
erlaubt - passende Software auf dem Controller vorrausgesetzt.


Sascha

von Stefan F. (feissy)


Lesenswert?

Oliver schrieb:

> Vielleicht hat ja jemand lust kleine Grafiken zu zeichnen welche passend
> für die Größe des Displays sind, dann kann ich schauen dass ich eine
> passende Grafikausgabe programmiere.

An was hast du da denn gedacht aus deinem Code kann man entnehmen, dass 
du das für servos nutzen möchtest. Also eher sonne Cursortasten in alle 
Richtungen oder welche Grafiken /Darstellung hast du dir so gedacht??

Gruß

von Oliver (Gast)


Lesenswert?

Stefan Feismann schrieb:
>An was hast du da denn gedacht aus deinem Code kann man entnehmen, dass
>du das für servos nutzen möchtest. Also eher sonne Cursortasten in alle
>Richtungen oder welche Grafiken /Darstellung hast du dir so gedacht??

Also ich würde sagen wir können ja einfach mal ein paar 
Cursortasten,Zahlen, vielleicht Statussymbole (Kreis welcher einen 
kleinen gefüllten Kreis innerhalb hat für aktiviert und ein einfacher 
Kreis für inaktiv) gebrauchen.

Buttons allgemein mit Text kann jeder sich selber anpassen, gibt es hier 
nicht iwo im Forum ein Programm welches aus bmp dateien direkt 
headerfiles erstellt ?

Ich möchte nicht nur Servos ansteuern, dies war jetzt nur ein Beispiel 
welches ich im Quellcode veranschauliche.

Ich möchte eine komplette Steuerung damit erledigen.

Im Moment scheint alles recht zügig zu funktionieren, den Quellcode 
werde ich schon bald hier online stellen, wobei hier zu sagen ist dass 
alles noch ziemlich BETA Status hat denn ich habe ja noch keine 
GrafikPlitt Funktion um Buttons oder ähnliches anzeigen zu können.

Hoffe das wir demnächst hier was ausarbeiten können, vielleicht kann ja 
jemand eine GrafikPlott Funktion im Ansatz ausarbeiten, ich verwende ja 
die lcd lib von Benedikt! Vielen Dank nochmal dafür !

Greetz Oliver

von Stefan F. (feissy)


Lesenswert?

Ich mach mich morgen mal dran einfache Cursortasten zu erstellen ich 
will hoffen das das alle klappt.
ich erstell die in paint und speicher die dann als .bmp und dann kann 
man die ja in sonem anderen Programm kleiner machen, etc ich stell 
einfach mal was on und guck ob du damit was anfangen kannst.

von Stefan F. (feissy)


Angehängte Dateien:

Lesenswert?

Also mein ertser gendanke wäre jetzt so ein cursor ^^...............Hab 
mal den Cursor Oben mit dem Programm LCD-Assistant verkleinert und so 
aber irgendwie kann man das dann nich mehr angucken weiß auch nich weiß 
jemand womit oder wie man die passend umwandelt ??

von Oliver (Gast)


Lesenswert?

Stefan Feismann schrieb:
> Also mein ertser gendanke wäre jetzt so ein cursor ^^...............Hab
> mal den Cursor Oben mit dem Programm LCD-Assistant verkleinert und so
> aber irgendwie kann man das dann nich mehr angucken weiß auch nich weiß
> jemand womit oder wie man die passend umwandelt ??

Also ich würde das mal mit "Image2Code" probieren, google einfach mal 
danach.
Habe im Moment leider nicht die möglichkeit das selber zu testen da ich 
nicht zuhause bin und meine Hardware vorliegend habe !

Habe in einem anderen Forum gelesen, dass der dortige User erfolgreich 
grafiken damit konvertiert hatte, allerdings beschreibt er dass man die 
Einstellung "3" nehmen sollte da es bei den anderen nicht richtig klappt 
bzw der dort extrahierte Code anscheinend problematisch zu sein scheint.

Habe mir deine Cursorgrafik angeschaut, sieht wirklich gut aus damit 
könnte man wunderbar ein nettes Steuerungsmenü basteln um z.B. eine 
Rolladensteuerung zu ermögliche oder ähnliches !!

Greetz Oliver

von Stefan F. (feissy)


Angehängte Dateien:

Lesenswert?

Ok hab da mal was probiert it dem Programm. Jetzt ist ein Cursor 30 x 30 
Pixel groß muss mal jemand ausprobieren, ob das so geht im Anhang das, 
was das Programm mir ausgespuckt hat ^^

von Oliver (Gast)


Lesenswert?

@ Sascha Weber:

Ich habe mir mal deine MacroExcelDatei angeschaut und bin absolut 
begeistert.
Das hast du wirklich genial hinbekommen.

Im großen und ganzen ist es eigentlich kein Unterschied ob dein Programm 
die Tabelle für ASM ausgibt oder für C.

Man könnte ganz einfach "Symbole" zeichnen, die .db als Array 
umportieren und somit schöne "Grafiken" auf dem Display basteln.

Ich werde mal mit deiner ExcelDatei rumspielen und mal schauen was sich 
da so machen lässt, vielleicht ist deine Lösung für einfache Sachen 
leichter als ständig das ganze in Paint oder Photoshop in der passenden 
Größe zu zeichnen und anschließend mit einem Konvertierungsprogramm in 
hexwerte für Mikrocontroller umzuwandeln.

Ich werde hoffentlich im laufe dieser Woche richtig Zeit haben um mich 
intensivere mit der Display & Grafikausgabe zu beschäftigen.

Dann kann ich auch mal deine gebastelte Grafik mir anschauen welche du 
uns netterweise im Anhang dagelassen hast xD.

Greetz Oliver

von Stefan F. (feissy)


Lesenswert?

@ Oliver

hast du schon was erreicht mit deiner grafikausgabe und hat das mit 
meinem erzeugten code geklappt, dann werde ich die anderen teile des 
Cursors noch online stellen..........

Schönen Abend noch

von Sebastian R. (sebr)


Lesenswert?

@ Hannes Lux:
Kannst du mal das Layout von deinem Testboard hier einstellen?

von tb (Gast)


Lesenswert?

Hm

Hi hab hier grade 2 frische von pollin bekommen die mit den weisen 
streifen am Touchscreen und invertierender HG-Beleuchtung.

Kann es sein das es da auch nochmal unterscheide gibt, hab hier 3 
unterschiedliche die alle mit der gleichen Ansteuerung laufen nur die 2 
neuen scheinen eine andere Config zu haben.

ist da was bekannt ?

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

Sebastian R. schrieb:
> @ Hannes Lux:
> Kannst du mal das Layout von deinem Testboard hier einstellen?

Yea, I can...

Nur das Layout??? - Oder auch den Schaltplan? ;-)

Ist natürlich nicht professionell gemacht, war ja nur für einmaligen 
Tonertransfer gedacht.

...

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Hm, bekomme es nicht hin merkwürdig bei den anderen Displays geht es mit 
folgender INIT, bei den 2 neuen nicht glaub auch nicht das die defekt 
sind reagieren beide gleich und zeigen auch was an nur halt nicht 
richtig.

Un hab  die Rückseiten verglichen konnte da keine unterscheide 
feststellen scheint aber ne andere Charge zu sein weil die diesmal ohne 
Pinheader wahren.
1
disp_init_text        ; Display im TEXTMODE Inialisieren
2
  bcf  RW      ; Startbedinungen herstellen
3
  nop
4
  bcf   CS
5
  movlw  0x00      ; Mode Control REG
6
  call  disp_send_c    ; Send Command
7
  movlw  b'00110000'    ; DB5=ON/OFF, DB4=Master/Slave, DB3=Blink, DB2=Coursor, DB1/DB0=TEXT(00)/GRAFIG(10)
8
  call  disp_send_d    ; Send Data
9
  movlw  0x01      ; Character Pitch REG
10
  call  disp_send_c    ; Send Command
11
  movlw  0x75      ; 7x8px
12
  call  disp_send_d    ; Send Data
13
  movlw  0x02      ; Nummer oh Char REG
14
  call  disp_send_c    ; Send Command
15
  movlw  D'26'      ; Anzahl horit. Zeichen -1
16
  call  disp_send_d    ; Send Data
17
  movlw  0x03      ; Display Duty REG
18
  call  disp_send_c    ; Send Command
19
  movlw  0x4F      ; Display Duty
20
  call  disp_send_d    ; Send Data
21
  movlw  0x04      ; Cursor Position REG
22
  call  disp_send_c    ; Send Command
23
  movlw  D'2'      ; Curserstrich y-Pos -1
24
  call  disp_send_d    ; Send Data
25
  return

von Sebastian R. (sebr)


Lesenswert?

Hannes Lux schrieb:
> Sebastian R. schrieb:
>> @ Hannes Lux:
>> Kannst du mal das Layout von deinem Testboard hier einstellen?
>
> Yea, I can...
>
> Nur das Layout??? - Oder auch den Schaltplan? ;-)
>
> Ist natürlich nicht professionell gemacht, war ja nur für einmaligen
> Tonertransfer gedacht.
>
> ...

Vielen Dank, dann kann ich das als Grundlage benutzen und ein bischen 
erweitern (ISP-stecker usw.)!  :-)

von Thomas F. (igel)


Lesenswert?

@ K. J.

ich benutze folgende init-Werte:

Adresse   wert

  0       32
  1       0x77
  2       19
  3       79
  4       7


Thomas

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

Sebastian R. schrieb:
> Vielen Dank, dann kann ich das als Grundlage benutzen und ein bischen
> erweitern (ISP-stecker usw.)!  :-)

ISP-Stecker brauche ich nicht, den stülpe ich einfach von oben auf den 
Controller drauf, die Controllerpins sind dabei der Steckverbinder... 
;-)

...

von K. J. (Gast)


Lesenswert?

Thomas Forster schrieb:
> @ K. J.
>
> ich benutze folgende init-Werte:
>
> Adresse   wert
>
>   0       32
>   1       0x77
>   2       19
>   3       79
>   4       7
>
>
> Thomas

Hm, klappt leider auch nicht irgendwie scheint da was komplett anders zu 
sein, die anderen Displays laufen auf der Schaltung aber kann ich nicht 
verwenden da die diesen komischen Folienleiter haben den man nicht löten 
kann.

von Thomas F. (igel)


Lesenswert?

Mein Display sieht genau so aus wie deines, mit den lötbaren 
Anschlüssen.
Bei mir funktionierts.
Ist dein enable-Impuls lang genug?

Thomas

von Thomas (Gast)


Lesenswert?

Hallo,
möchte mal die hintergrundbeleuchtung ausprobieren und hab da auch schon 
einen Inverter bei reichelt gefunden mit 12V Eingang und 100V Ausgang 
aber dann mit 800Hz ist das schlimm oder funktioniert das auch mit 800Hz 
weil im Datenblatt steht ja was von ca 500Hz??


@ Oliver
Wie weit bist du denn mit deiner Grafikausgabe schon gekommen ??

von Oliver (Gast)


Lesenswert?

Thomas schrieb:
> @ Oliver
> Wie weit bist du denn mit deiner Grafikausgabe schon gekommen ??

Sry Leute dass ich im Moment fast nix von mir gebe, ich habe im Moment 
mit nun noch 3 Abi-Vorklausuren zu kämpfen welche vorraussichtlich mitte 
nächster Woche vorbei sind, dann schätze ich kann ich mich endlich 
wieder ein bischen mehr mit diesem Thema beschäftigen.

Leider kommt noch erschwerend dazu, dass ich nun auf meine neuen 
Displays warten muss da mein altes mitsamt dem Atmega kaputt gegangen 
ist (Defektes Netzteil,hatte ziemlich Glück dass nur die Teile an der 
etwas stark erhöhten Spannung hingen !!!).

Offtopic:
Werde wohl nie wieder ein Voltcraft Labornetzteil gebraucht kaufen, 
hatte zwar nun fast 1 Jahr perfekt seinen Dienst vollrichtet, allerdings 
jetzt scheint es irgentwie plötzlich die Vollmeise zu bekommen !!!


Zurück zum Text..

Ich habe mir mal gedanken um die Grafikausgabe gemacht, hatte mir da 
auch anregung von dem Roboternetz-Code geholt, die dort entwickelte 
Grafikausgabe ist ja echt buggy... aber "eigentlich" einfach gelöst..

Wer Lust hat, kann sich diese mal schnappen und mal testen,ich meine 
damit schonmal halb erfolgreich (GUTE AUSSAGE xD) einen Button gemalt 
(plaziert) bekommen zu haben !!!

Also wenn ich wieder richtig Zeit habe, werde ich hier natürlich wieder 
aktiver mitwirken und dann auch mal meinen Code veröffentlichen !!


Bis dahin..


Greetz Oliver

von hboy007 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,


entschuldigt, dass ich euch mit einer neuerlichen Frage zu den 
Grafikdisplays stören muss, aber hier liegen drei Stück herum, die ich 
beim besten Willen nicht abgesteuert bekomme. Ich habe das Sanyo- und 
das Hitachi-Datenblatt durch und brüte nun zwei Tage an der blöden 
Initialisierung.

Noch dazu arbeite ich lieber mit assembler und da sind die Codebeispiele 
nicht so reichlich zu finden.

Mein aktueller Status:
- Flash-Upload klappt, Fuses sind alle richtig gesetzt, der Prozessor 
(ATMega32) läuft mit 16 MHz. Mein Portmapping schaut so aus:
PORTC PC0..PC7 : DB0 .. DB7
PORTA PA0: RS; PA1: R/W; PA2: EN; PA3: !CS; PA4: RST

- Das Display bleibt hängen wie beim power-up, mal mit vertikalen 
Streifen, mal komplett leer.

Bin ich jetzt total bescheuert oder total blind? Ich habe auch das 
timing so langsam gemacht, damit ich mir um die set-up und hold -Zeiten 
keine Sorgen machen muss, aber irgendwie tut sich nichts. Den "Einfach 
mal draufbrennen und es tut"-Code scheint ihr hier nur für den ATMega8 
ausgeheckt zu haben :(

Danke schonmal für die Hilfe!

hboy

von hboy007 (Gast)


Lesenswert?

es ist natürlich
.equ LCD16080_CS  = 3      ; display Pin15
.equ LCD16080_RST = 4                   ; display Pin16
da stimmen die Kommentare nicht.

Ich habe die Pinbelegung schon nachgeprüft (Pins mit pulsfolgen belegt 
und am Display nachgemessen)

von K. J. (Gast)


Lesenswert?

Thomas Forster schrieb:
> Mein Display sieht genau so aus wie deines, mit den lötbaren
> Anschlüssen.
> Bei mir funktionierts.
> Ist dein enable-Impuls lang genug?
>
> Thomas

Hi thx für die Antwort hab den Fehler mittlerweile gefunden schuld ist 
der ICSP die internen pulups dessen ziehen die dl auf 3v runter und das 
Display erkennt kein high mehr.

von Sascha W. (sascha-w)


Lesenswert?

@hboy007

also wenn man schon in ASM programmiert dann nicht unbedingt einen 
Compiler nachahmen.

im Macro "LCD16080_Write" legst du die zwei Werte auf den Stack, dann 
ein call auf "_LCD16080_Write" macht wieder 2Byte auf dem Stack.

und - was liest du nun im Unterprogramm mit deinen 2 Pop's aus??

Sascha

von Thomas F. (igel)


Lesenswert?

@hboy007

  LCD16080_ToggleENA: ; refer to datasheet
      rcall WAIT_10us
      sbi LCD16080_BITS, LCD16080_ENA
      rcall WAIT_10us
      sbi LCD16080_BITS, LCD16080_ENA
      rcall WAIT_10us
    ret


Sollte das zweite sbi nicht besser ein cbi sein, um Enable zu toggeln.


Thomas

von hboy007 (Gast)


Lesenswert?

hoppla, das sbi ist da beim Aufräumen  durch copy&paste reingerutscht 
(da standen vorher Port und Bitnummer). Ich habs repariert und getestet, 
geändert hat diese Selbstverständlichkeit leider noch nichts.

In der Zwischenzeit habe ich auch das Display mal gewechselt, falls das 
vorherige wider Erwarten über den Jordan gegangen sein sollte.

Die Aufrufkonvention war ein kleines Experiment dem Interesse halber, 
aber ich bin mit dem Overhead auch nicht zufrieden :-)

von hboy007 (Gast)


Lesenswert?

Ok, es tut noch immer nicht, aber ich habe nun den Grund gefunden: PortC 
2..5 liefern keinen Strom. Ich hoffe nur, dass das nicht aufgrund der 
bidirektionalen Kommunikation mit dem Display zustande kam.

Mit Pull-Up-Getrickse konnte ich auch keine Daten senden... schade.

von Thomas Forster (Gast)


Lesenswert?

> PortC 2..5 liefern keinen Strom.

Ein alter Hut: JTAG Enable in den Fuses ausschalten.

Thomas

von hboy007 (Gast)


Lesenswert?

Vielen Dank!
Ich benutze AVRdude erst seit ein paar Tagen, es lag an dem jtag fuse 
bit. Nun läuft der Textmodus, Grafikmodus dürfte auch kein Problem sein.
Ich hätte eine Frage bezüglich der Initialisierung:

RST ist im Prinzip überflüssig, wenn ich lese, was im Datenblatt steht. 
Gibt es Fälle, bei denen man !CS ändern müsste? Ansonsten kann man sich 
diese beiden Leitungen sparen und alles läuft bequem über eine 
Parallelport-Schnittstelle (ich arbeite gerade mit dem NET-IO Board von 
Pollin).

hboy007

von Alex D. (allu)


Lesenswert?

hboy007 schrieb:
> Gibt es Fälle, bei denen man !CS ändern müsste?

Ja, die gibt es. Ich betreibe 2 Displays an einem ATMega32. Bis auf die 
CS-Pins ist alles parallel geschaltet. Ausgewählt wird mit 2 Portpins.

Übrigens hat die Samsung-Variante des Pollin DG16080 32KByte an Board. 
Wenn man 3 zusätzliche Drähte reinbastelt, ist der Speicher verwendbar 
und man kann wunderschön durch ändern der Displaystartadresse die Seiten 
umschalten.

Gruß  allu

von Oliver (Gast)


Lesenswert?

Hey Leute, heute kam endlich mein erwartetes Päckchen, zwei neue 
Displays(Samsung) sowie reichlich kleinkram !

Und ich habe endlich mal ein paar Atmega32 mehr gekauft, wer weiß was da 
noch so alles kaputt gehen wird !!

Werde hoffentlich nächste WE dann anfangen die Software einigermaßen auf 
vordermann zu bringen um sie dann hier zu veröffentlichen !!

Alex D. schrieb:
> Übrigens hat die Samsung-Variante des Pollin DG16080 32KByte an Board.
> Wenn man 3 zusätzliche Drähte reinbastelt, ist der Speicher verwendbar
> und man kann wunderschön durch ändern der Displaystartadresse die Seiten
> umschalten.

Könntest du das mal genauer beschreiben, das klingt verdammt interessant 
!
Hast du auch Codebeispiele und vorallem wofür nutzt du diese Technik ??

Bis dahin,

Greetz Oliver

von hboy007 (Gast)


Lesenswert?

Danke für die Info. Ich werde nun RST über Bord werfen. Um Die Portzahl 
zu begrenzen, werde ich eine 8-fach d-latch an den Datenbus hängen und 
dessen Clock an !CS klemmen, damit kann ich die Speicherseite durch 
Pulsen von !CS setzen.

Von Vorteil ist dies, wenn man Animationen mit minimalem Rechenaufwand 
erzeugen möchte, da man nach Duplizieren der frames nurnoch in einem 
timer interrupt die Speicherseiten durchzappen muss :-)

von hboy007 (Gast)


Lesenswert?

ich vergaß es zu erwähnen, das RAM ist ein
KM62256DLG

http://pdf1.alldatasheet.com/datasheet-pdf/view/37306/SAMSUNG/KM62256DLG-7.html

die drei MSB sind pin 2, 26, 1 (ADR12, ADR13, ADR14)

von tb (Gast)


Lesenswert?

hboy007 schrieb:
> Von Vorteil ist dies, wenn man Animationen mit minimalem Rechenaufwand
> erzeugen möchte, da man nach Duplizieren der frames nurnoch in einem
> timer interrupt die Speicherseiten durchzappen muss :-)

Du meinst layer Funktion ? des wehre natürlich interessant, meins leuft 
grade im mischbetrib also text und grafig und dafür wer des ganz nett 
neu initialisieren Grafik nach vorne holen und andersherum mit dem 
textmode das gleiche.

von Alex D. (allu)


Angehängte Dateien:

Lesenswert?

Oliver schrieb:
> Könntest du das mal genauer beschreiben, das klingt verdammt interessant
> !

Der LC7981 könnte das 32KByte-RAM komplett ausnutzen, leider sind aber 
die drei Ausgänge  MA12 bis MA14 nicht mit dem RAM verbunden. Ich habe 
die Pins A12 und A14 am RAM abgelötet und hochgebogen und vor Pin A13 
die Leiterbahn durchtrennt und dann mit dünnen Drähten mit MA12, MA13 
und MA14 des LC7981 verbunden. Allerdings nicht so wie die Wertigkeiten 
im Datenblatt stehen, sondern wie es am besten zu löten war. Aber das 
ist für die Funktion egal.

Oliver schrieb:
> Hast du auch Codebeispiele und vorallem wofür nutzt du diese Technik ??

Damit möchte ich einige Dinge im Haus überwachen, wie Türen, 
Rauchmelder, Temperaturen usw. und vielleicht auch mal eine Lampe 
schalten. Im oberen Display sind auf den ersten 4 Seiten die Grundrisse 
von Keller, Erdgeschoss, 1.Stock und Dach gespeichert.

Im Moment schicke ich die Displaystartadresse noch "zu Fuss" zum 
Display.
Gruß  allu


Do
If Touch_meldet = Ja Then
   Select Case F_taste
      Case "K" : Gosub Keller
      Case "U" : Gosub Eg
      Case "O" : Gosub Og
      Case "D" : Gosub Dach
   End Select
Touch_meldet = Erledigt
End If

Loop Until F_taste = _menue
Gosub Auswahl
Return

Keller:
Lcd_select = 2
Command = &H08                               'Befehl: Display Start Low
Datenwert = &H00
Gosub Zum_glcd
Command = &H09                               'Befehl: Display Start High
Datenwert = &H00
Gosub Zum_glcd
Lcd_select = 1
Return

 usw.:  Eg:  ..... Og:  ...

Dach:
Lcd_select = 2
Command = &H08                               'Befehl: Display Start Low
Datenwert = &H80                             '
Gosub Zum_glcd
Command = &H09                               'Befehl: Display Start High
Datenwert = &H16                             '
Gosub Zum_glcd
Lcd_select = 1
Return

von Oliver (Gast)


Lesenswert?

@Alex D.

Vielen Dank für die Informationen, das ist ja wirklich genial...
Ich ändere die Adresse, schreibe mein Bild rein, nächste Adresse, 
nächstes Bild....

Gibt es dort festgelegte ADR Bereiche oder sind die dynamisch (wie hast 
du die Anfangsadressen gewählt) ???

Ich habe eigenlich so etwas ähnliches vor, allerdings wollte ich die 
"grafiken" von einer SD Karte holen und dann ausgeben.. wobei ja jetzt 
deine Möglichkeit das ganze noch erheblich vereinfachern würde !!

Ich sehe auf deinem Bild dass du zwei Displays mit einem Inverter am 
laufen hast.... ich habe den Inverter vom großen C... der sackt mir 
leider ein bischen ein wenn ich das zweite Display mit anschließe..


Mal jetzt ne ganz blöde frage nebenbei...
Ich würde gerne den Atmega32 unter das Display setzen 
(Platinentechnisch).
Oberhalb des Displays sollen die Anschlüssen sowie der Inverter und das 
Kontrastpoti hin... Stört zufällig der Inverter vielleicht irgentwelche 
Sachen vom Display oder Controller ?

Vielleicht kommt später noch ein RFM12 Modul dazu, ich denke spätestens 
dann wird es mit dem Inverter Probleme geben... Hoffe nur dass die zwei 
Leiterbahnen unter dem Display (welche aber mit Massefläche rundherum 
versehen sind) nicht auf das Touchscreen streuen !!!

Vielleicht kann mir einer diese kleine Frage netterweise beantworten..

Greetz Oliver

von Alex D. (allu)


Lesenswert?

Oliver schrieb:
> Gibt es dort festgelegte ADR Bereiche oder sind die dynamisch (wie hast
> du die Anfangsadressen gewählt) ???

Der Controller selbst kennt keine festgelegten Bereiche. Im ersten 
Schritt habe ich mal Seiten verwendet. Initialisiert wird das Display im 
Grafik Mode mit 23 Zeichen (nur gerade Adressen = 24 Byte) je 
Pixelzeile, ergibt einen Speicherbedarf von:

24 Byte/Pixelzeile * 80 Pixelzeilen = 1920 Byte (Hex 0780)

Start: Seite_0 = 0, Seite_1 = 1920, Seite_2 = 3840, Seite_3 = 5760 (Hex 
1680). Man könnte aber auch um 24 erhöhen um pixelzeilenweise zu 
scrollen.

Oliver schrieb:
> Ich sehe auf deinem Bild dass du zwei Displays mit einem Inverter am
> laufen hast.... ich habe den Inverter vom großen C... der sackt mir
> leider ein bischen ein wenn ich das zweite Display mit anschließe..

Der Inverter liefert nur etwa 80 V, reicht aber für den "Nachtbetrieb".

Oliver schrieb:
> Ich würde gerne den Atmega32 unter das Display setzen
> (Platinentechnisch).

Gute Idee, ist in meinem Versuchsaufbau auch so (unter dem oberen 
Display). Dadurch lässt sich der B-Port kreuzungsfrei mit dem 
Display-Datenbus verbinden. Und hat den weiteren Vorteil, dass man 
gleich den Programmieradapter parallel mit anschliessen kann. 
Vorsichtshalber hat noch jeder !CS einen 22kOhm-Pullup. Funktioniert mit 
meinem AVR ISP MK II problemlos.

Oliver schrieb:
> Stört zufällig der Inverter vielleicht irgentwelche
> Sachen vom Display oder Controller ?

Da habe ich noch nichts bemerkt.

Oliver schrieb:
> Vielleicht kommt später noch ein RFM12 Modul dazu

Da das Ding etwas sinusähnliches erzeugt, ist keine Störung der RFM12 zu 
erwarten, eher wird der der ATMega Störungen verursachen.

Gruß  allu

von Stefan F. (feissy)


Angehängte Dateien:

Lesenswert?

So bin endlich mal dazu gekommen einen Schaltplan für meinen neuen 
Versuchsaufbau zu erstellen könnt ihr da mal eben drüber schauen, ob ich 
was gravierendes vergessen habe, oder ob das so passt.

@ Oliver
Hattest du schon wieder zeit dich mit der DisplayTouch-Auswetung zu 
beschäftigen ?

Gruß Stefan Feismann

von Thomas F. (igel)


Lesenswert?

@Stefan:

- Der Gleichrichter braucht noch einen dicken Elko.
- Ich habe das Kontrast-Poti gegen Masse, nicht 5V.
- Kondensator an AVCC gegen Masse.

von Stefan F. (feissy)


Lesenswert?

Ok alles klar hab ich geändert.
Beim letzten Mal habe ich immer beim Programmieren meinen Atmega8 
zerschossen, weil das Display fest dran war( also auch beim 
Programmieren)
Kann das auch hier passieren, oder muss ich noch Widerstände oder 
Kondensatoren an die ISP Pins hängen?

von PIC N. (eigo) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe mir auch mal so ein Display zu gelegt und habe ein 
funktionierendes (mit TP) bekommen. Auf dem Bild mit den verschiedenen 
Versionen das in der Mitte.

Habe auch alles soweit angeschlossen und die Verbindungen überprüft.
Das Display hängt bei mir an einem PIC18F4550.
Wenn ich das Display initialisiere kriege ich auf dem Display alle 
möglichen Zeichen dargestellt (s. Foto).

Also nochmal schnell eine Display Clear eingebaut und alles ist weg 
soweit so gut jetzt habe ich es als Charakter Display initialisiert und 
wollte mit dem eingebauten Generator mal ein bisschen was schreiben aber 
das Display will einfach nichts anzeigen?

Vielleicht hatte ja jemand schon mal dieses Verhalten und kann mir sagen 
was ich falsch mache. Bei der Init war mir auch nicht ganz klar wofür 
die Einstellung "Cursor lower und upper Adress" ist. Wo das Display 
starten soll lege ich doch schon mit den Adressen "Display Start 
upper/lower" fest?

Nun gut, hier mal meine Init.. und wie ich versuche was auf dem Display 
zu schreiben:
1
void GLCD_Init(void)
2
{
3
  GLCD_RES=0;
4
  Delay10KTCYx(1);
5
  GLCD_RES=1;
6
7
  GLCD_writecom(0x00);  // Mode Con
8
  GLCD_writedata(0x3C);  // Character Mode, Cursor blink  
9
  
10
  GLCD_writecom(0x01);  // Character Pitch
11
  GLCD_writedata(0x76);  // 7x7 Chars  
12
13
  GLCD_writecom(0x02);  // Number of Characters
14
  GLCD_writedata(25);  // 25 Zeichen <--->
15
16
  GLCD_writecom(0x03);  // Set Duty
17
  GLCD_writedata(79);  // 1/80
18
19
  GLCD_writecom(0x04);  // Cursor Position
20
  GLCD_writedata(0x08);  // Line 1
21
22
  GLCD_writecom(0x08);  // Start Adresse Low
23
  GLCD_writedata(0x00);  // 0
24
25
  GLCD_writecom(0x09);  // Start Adresse High
26
  GLCD_writedata(0x00);  // 0
27
28
  GLCD_writecom(0x0A);  // Cursor lower adress
29
  GLCD_writedata(0x01);  // 1
30
31
  GLCD_writecom(0x0B);  // Cursor upper adress
32
  GLCD_writedata(0x01);  // 1
33
}

und:
1
  GLCD_writecom(0x0C);      // Writing Display Data
2
  GLCD_writedata(0x48);      // H
3
  GLCD_writecom(0x0C);      // Writing Display Data
4
  GLCD_writedata(0x61);      // a
5
  GLCD_writecom(0x0C);      // Writing Display Data
6
  GLCD_writedata(0x6C);      // l
7
  GLCD_writecom(0x0C);      // Writing Display Data
8
  GLCD_writedata(0x6C);      // l
9
  GLCD_writecom(0x0C);      // Writing Display Data
10
  GLCD_writedata(0x6F);      // o
11
  GLCD_writecom(0x0C);      // Writing Display Data
12
  GLCD_writedata(0x20);      // 
13
  GLCD_writecom(0x0C);      // Writing Display Data
14
  GLCD_writedata(0x57);      // W
15
  GLCD_writecom(0x0C);      // Writing Display Data
16
  GLCD_writedata(0x65);      // e
17
  GLCD_writecom(0x0C);      // Writing Display Data
18
  GLCD_writedata(0x6C);      // l
19
  GLCD_writecom(0x0C);      // Writing Display Data
20
  GLCD_writedata(0x74);      // t

LG Nico

von PIC N. (eigo) Benutzerseite


Lesenswert?

Ok habe es selber hin bekommen! War nach dem löschen logischer weise am 
Ende des Displays und musste dann halt wieder an die Startadresse 
wechseln =)

von PIC N. (eigo) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe nochmal eine Frage an die Profis hier: Ich kann mit der 
Funktion von Benedikt, zum "springen" zu einer Adresse im Display:
1
void GLCD_SetAdress(unsigned char x, unsigned char y)
2
{
3
  unsigned short adress;
4
  adress=y*20+x;
5
  GLCD_writecom(0x0A);        // write adress low
6
  GLCD_writedata(adress&255);
7
  GLCD_writecom(0x0B);        // write adress high
8
  GLCD_writedata(adress/256);    
9
}

..nur bis zur Zeile 7 springen danach geht es nicht mehr, bzw. wird ab 
hier dann nichts mehr geschrieben =( Wenn ich aber keine Zeile anwähle 
sondern einfach nur wild aufs LCD drauf los schreibe schreibt er sauber 
das ganze Display voll aufgrund des inkrementieren um 1 je Datensatz.

Meine Initialisierung sieht so aus:
1
void GLCD_Init_C(void)
2
{
3
  GLCD_RES=0;
4
  Delay10KTCYx(1);
5
  GLCD_RES=1;
6
7
  GLCD_writecom(0x00);  // Mode Con
8
  GLCD_writedata(0x3C);  // Character Mode, Cursor blink  
9
  
10
  GLCD_writecom(0x01);  // Character Pitch
11
  GLCD_writedata(0x77);  // 8x8 Chars  
12
13
  GLCD_writecom(0x02);  // Number of Characters
14
  GLCD_writedata(19);  // 19 Zeichen <--->
15
16
  GLCD_writecom(0x03);  // Set Duty
17
  GLCD_writedata(0x4F);  // 80-1
18
19
  GLCD_writecom(0x04);  // Cursor Position
20
  GLCD_writedata(0x07);  // Line 1
21
22
  GLCD_writecom(0x08);  // Start Adresse Low
23
  GLCD_writedata(0x00);  // 0
24
25
  GLCD_writecom(0x09);  // Start Adresse High
26
  GLCD_writedata(0x00);  // 0
27
28
  GLCD_writecom(0x0A);  // Cursor lower adress
29
  GLCD_writedata(0x00);  // 1
30
31
  GLCD_writecom(0x0B);  // Cursor upper adress
32
  GLCD_writedata(0x00);  // 1
33
}

..hier frage ich mich zum Bleistift auch, warum darf ich eigentlich nur 
19 Zeichen einstellen? Ein Font ist doch 8x8 also würden rein 
theoretisch bei 160 Dots in der Breite doch genau 20 Zeichen neben 
einander passen, warum aber wird hier 19 eingestellt..mh

UND: Auch wenn ich 19 einstelle, kann ich an der 20. Stelle dann 
trotzdem ein Zeichen schreiben =/!

Im Anhang ist nochmal ein Foto wie das dann ausschaut, programmiert ist, 
dass er "eigentlich" bis zur Zeile 10 runter weiter das Muster verfolgt.

Dann nochmal ein paar Kleinigkeiten:

1. Wo ist der unterschied zwischen Cursor Adresse und Start Adresse?
2. Warum wird ein Font o. Char von 8x8 eingestellt, wenn doch die Fonts 
vom integrierten Generator 5x7 (6x8) groß sind?
3. Die selbe Sache wie mit der Breite -> Warum stellt man 80-1 Zeilen 
ein?

So das soll erstmal reichen, ich hoffe es nimmt sich jemand die Mühe 
auch wenn es vielleicht so trivial erscheint..

schönen Abend! Nico

von Thomas Forster (Gast)


Lesenswert?

> ..hier frage ich mich zum Bleistift auch, warum darf ich eigentlich nur
> 19 Zeichen einstellen?
> 3. Die selbe Sache wie mit der Breite -> Warum stellt man 80-1 Zeilen
> ein?


Das steht doch im Datenblatt des LC7981 und außerdem in den Kommentaren 
der diversen Codebeispiele auf dieser Seite.

von Rene K. (draconix)


Lesenswert?

Ums mal das Suchen abzukürzen: 80 Zeilen, gerechnet wird aber 0-79 ;)

von PIC N. (eigo) Benutzerseite


Lesenswert?

Ok ja jetzt hab ich es auch gesehen, wegen Binär also von 0 an, ok.
Aber dann bleibt der Rest trotzdem offen, also das eigentliche Problem..

von Rene K. (draconix)


Lesenswert?

Wechsel mal short mit int aus ;) Hatte bei mir viele Probleme bereitet. 
Jedoch mußte ich den Code von AVR-GCC auf MicroC anpassen.

von PIC N. (eigo) Benutzerseite


Lesenswert?

Hat leider nicht geholfen, in den Zeilen 8-10 schreibt er leider immer 
noch nichts. Er platziert den blinkenden Cursor beim 1 Zeichen der 8. 
Zeile (s. Foto) aber macht dann nichts =/

von Rene K. (draconix)


Lesenswert?

Was mich jetzt gerade ein wenig wundert... ich habe selber diese 
Displays, 4 Stück an der Zahl.

Hab mir nun heute mal meinen Inverter gebaut und, zu meiner Freude, 
festgestellt das mein Display Weiß / Schwarz ist. Jedoch sieht man hier 
viele verschiedene Displaytypen... z.b. Nicolas seins ist ja schwarz / 
blau...

Warum?!

von PIC N. (eigo) Benutzerseite


Lesenswert?

Meines ist auch S/W.. schaut nur so aus ;)

von Rene K. (draconix)


Lesenswert?

Nicolas M. schrieb:
> Meines ist auch S/W.. schaut nur so aus ;)

Ja aber invertiert oder? Bei mir ist der Hintergrund weiß und die Pixel 
Schwarz?!

von PIC N. (eigo) Benutzerseite


Lesenswert?

Achso! Ist doch auch schick =)

von Rene K. (draconix)


Lesenswert?

Nicolas M. schrieb:
> Achso! Ist doch auch schick =)

Jaja, sagt ja keiner was :D

Wo wir da gerade bei sind: Tausche einmal Hintergrund weiß / Schrift 
schwarz zu Hintergrund schwarz / Schrift weiß XD

von PIC N. (eigo) Benutzerseite


Lesenswert?

Hab mir leider nur eins gekauft =)
Hast du alle mit heilem TP bekommen, bzw. alles die selben Modelle?

von Charly B. (charly)


Lesenswert?

Rene K. schrieb:
> Hab mir nun heute mal meinen Inverter gebaut

haett ich auch interresse, haste ein schaltbild f. mich (uns)?,
vielen dank & ein schoenes WE

Charly

von Rene K. (draconix)


Angehängte Dateien:

Lesenswert?

Charly B. schrieb:
> haett ich auch interresse, haste ein schaltbild f. mich (uns)?,
> vielen dank & ein schoenes WE

Ja gut, was heißt gebaut... "Gebaut" in dem Sinne das ich ihn mit 
Anschlüssen "versehen" und am Eingang geglättet habe. Hatte mir für 
2,95€ die EL Inverter 08 bei Reichelt gekauft. Klappt wunderbar. Und für 
den Preis stelle ich mich nicht hin und baue selber einen ;)

von Migelito (Gast)


Lesenswert?

Hallo Leute,
ich habe leichte Probleme irgend wie die zeit oder Temperatur beim
Pollin Display an zeigen zu lassen, ich habe schon einiges probiert im
Programm von Allu, aber es funktioniert nicht, kann mir jemand Bitte
zeigen wie die Zeit oder Temperatur beim Programm eingebunden wird. ??

Danke
Migelito

ich glaube ich hab den Beitrag aus versehen, in den alten Forum ab 
gelegt.

von PIC N. (eigo) Benutzerseite


Lesenswert?

Du brauchst einfach eine 1s Basis, einen Temperaturfühler + AD Wandler 
und die Befehle zur Ausgabe auf dem Display evtl. noch eine Zahlensystem 
Umwandlung und gut =)

LG Nico

von Migelito (Gast)


Lesenswert?

Hallo Nico,
wie es funktioniert weiß ich ja, habe es auch schon oft genug in ein 
normales LCD an zeigen lassen, nur hier für das GLCD bin ich nicht in 
der Lage.
ach, übrigens ich versuche es in bascom.
wie ich normale Wörter anzeige ist auch klar wie hier.

Locate_zeile = 07
Locate_spalte = 0
'Muster    = "01234567890123456789012"
Lcd_string = "    A U S W A H L"
Gosub Lcd_write_string

aber wie bindet man eine temp oder die zeit ein.

gruß Migelito

von PIC N. (eigo) Benutzerseite


Lesenswert?

Hi, ja blöd von Bascom hab ich gar keinen Schimmer. Aber es geht 
eigentlich immer am einfachsten so:

1. Z.B. mit einem KTY die Temperatur über einen Spannungsteiler messen,
diese wird dann mit einem µC in einen digitalen Wert umgewandelt.

2. Jetzt musste die Spannung wohl noch entsprechend umrechnen, je 
nachdem wie der Temperaturkoeffizient im Datenblatt des Sensors ist.

3. Dann hast du ja immer noch einen Binärwert, den dann einfach in 
dezimal umrechnen (Division durch 10).

4. Jetzt ist es einfach, einfach identifizieren welche dez Zahl 
vorhanden ist (Einer, Zehner, evtl. Hunderter) und dann dem entsprechend 
die Zahlen aus dem ASCII Satz auf dem Display darstellen lassen.

Aber das wusstest du wahrscheinlich eh schon... sry =/

LG Nico

von Meik D. (meik)


Lesenswert?

Für die Temperatur würde ich mir die Mühe mit dem Umrechnen nicht 
machen. DS18S20(Pollin) heißt die Alternative. Da wird die Temperatur 
über OneWireBus aus dem Sensor gelesen. Für das Datum und die Zeit nehme 
ich den DS3234 mit SPI Interface. Der hat übrigens auch schon einen 
Temperaturfühler integriert, da kann man sich den DS18S20 u.U. sparen.

Meik

von Migelito (Gast)


Lesenswert?

Hallo Maik,
ich glaube ich habe mich total besch.... ausgedrückt ;) wie und was ich 
für Sensoren nehme, um eine Temperatur aus zu lesen oder berechnen, habe 
ich schon gemacht und ich weiß wie es geht, habe auch genug auf den 
normalen LCds angezeigt mit.
Nur hir, im Programm von Allu, für das Pollin GLCD, bekomme ich es nicht 
zur anzeige.
Am besten ihr schickt mir mal ein kurzen ausschnitt vom Programm wie ihr 
es in bascom auf das Display (Pollin GLCD) ausgibt, dann sehe ich wie es 
von statten geht.
Also, noch mal, ich weiß wie es geht, mit herkömmlichen LCDs die Zeit 
oder dir Temperatur dort aus zu geben.
Wie aber beim Pollin GLCS ?? ich habe mit GLCDs noch nicht gearbeitet.

Gruß Migeleito

von allu (Gast)


Lesenswert?

Migelito schrieb:
> Locate_zeile = 07
> Locate_spalte = 0
> 'Muster    = "01234567890123456789012"
> Lcd_string = "    A U S W A H L"
> Gosub Lcd_write_string

Migelito schrieb:
> Also, noch mal, ich weiß wie es geht, mit herkömmlichen LCDs die Zeit
> oder dir Temperatur dort aus zu geben.

"Gosub Lcd_write_String" schreibt ab der Position 
"Locate_zeile/Locate_spalte" den Text in "Lcd_string" ins Display.

Wie für dein herkömmliches LCD berechnest Du den Anzeigestring, zum 
Beispiel: Temperatur_in_Ascii = "38,5". Diesen Wert möchstest Du in die 
3. Zeichenzeile ab der 9. Spalte eintragen und "Grad" anhängen:

Locate_zeile = 21 'Eine Zeichenenzeile = 10 Pixelzeilen / gerechnet ab 0
Locate_spalte = 8    ' gerechnet ab Spalte 0
Lcd_string = Temperatur_in_Ascii + " Grad"
Gosub Lcd_write_string

Gruß  allu

von Migelito (Gast)


Lesenswert?

Hallo allu,
ich habe nach deine vorgaben mal es so eingesetzt, mit meiner Temperatur 
Ausgabe.
Aber er sagt, es wäre kein Wert vorgegeben und compiliert nicht ?
In der normalen LCD Variante würde es so aussehen, wie du es sicherlich 
kennst.

Locate 1 , 1
Lcd Fusing(temp1 , "#.&") ; Chr(0) ; "C   "


Locate_zeile = 10
Locate_spalte = 8
Lcd_string = Temp1 "Grad"
Gosub Lcd_write_string


Gruß Migelito

von allu (Gast)


Lesenswert?

Hallo Migelito

Migelito schrieb:
> Lcd_string = Temp1 "Grad"     -->   +   fehlt

Lcd_string = Temp1 + " Grad"

Temp1 muss ein Ascii-String sein, sonst umwandeln mit str(Temp1).

Gruß  allu

von Tom_W (Gast)


Lesenswert?

Problem: Viel Text mit kleinem Zeichensatz darstellen

Hallo Displayprogrammierer

danke an alle hier im Forum, mit Eurer Hilfe habe ich auch mein Display 
zum Laufen gebracht. Ich verwende die Anschlussbelegung von Benedikt, 
einen Atmega32 und Libs in C von Sebastian, der im Forum bei Roboternetz 
gepostet hat.

Folgendes fehlt noch zum letzten Glück: Ich möchte gerne viel Text 
komprimiert auf dem GLCD ausgeben und einen 5x7 Zeichensatz verwenden. 
Ich habe dazu je einen Lösungsansatz für den Textmodus und den 
Grafikmodus, jeder natürlich jeder mit einem Problem, was sonst:

1) Textmodus + interner Zeichensatz, schön klein, spart Speicherplatz
Das funktioniert allerdings nur mir 20 Zeichen pro Zeile statt 26 
möglichen und ist mir nicht dicht genug. Bei 26 Zeichen gibt es irgendwo 
in der Mitte jeder Zeile Pixel die nicht angesprochen werden. Das 
gleiche Problem wurde hier im Forum schon einmal mit Foto nachgefragt. 
Man muss also die horizontal pitch und number of characters entsprechend 
Datenblatt anpassen. Die Erklärung ist sicher, dass mit einer Hp von 8 
und einer Pixelanzahl von 160 pro Zeile eben nur 20 Zeichen glatt 
aufgehen. Sonst müsste man den LC7981 irgendwie überlisten, wie weiß ich 
leider nicht.
So funktioniert es im Textmodus:
1
lcd_write_command(0x01,0x77); //Hp=8 stellt die pitch-Werte ein
2
lcd_write_command(0x02,20 - 1); //Anzahl Zeichen pro Zeile (minus 1)


Frage 1: hat jemand einen Tip, wie ich auch 26 Zeichen pro Zeile im 
Textmodus fehlerfrei darstellen kann, 160/7 =26,6 das geht nicht auf!!
Textmodus so einstellen, aber das gibt besagte Fehler:
1
lcd_write_command(0x01,0x75);  //Hp=6
2
lcd_write_command(0x02,26 - 1); //Anzahl Zeichen pro Zeile (minus 1)


2) Grafikmodus + selbst erstellter Zeichensatz 5x7
Das würde ja funktionieren, aber ich habe keinen freien 
Zeichensatzgenerator und die verfügbaren Zeichensätze sind anders 
kodiert als ich es brauche, nämlich SB last!!

Frage 2: Kann jemand einen Zeichensatzgenerator oder einen Zeichensatz 
empfehlen?

Gruß Tom_W

von Migelito (Gast)


Lesenswert?

Hallo Allu,
irgendwie will es nicht, ich denke aber doch das ich es soweit richtig 
umgesetzt habe, oder ?
habe mal die wichtigen Zeilen mit rein genommen wie ich es im Programm 
habe.
er compiliert zwar aber er zeigt nur "Grad" an, kann aber auch nicht das 
Programm für ein ds1820 mit ins Hauptmenü rein nehmen dann spinnt das 
komplette Programm.

Gruß Migelito


Dim Temperatur As String * 3
Dim Temp As String * 3

Do
  Temperatur = Str(temp1)
  Temp = Format(temperatur , "00.0")

Loop

Locate_zeile = 10
Locate_spalte = 8
Lcd_string = temperatur + "Grad"
Gosub Lcd_write_string

von PIC N. (eigo) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi zusammen ich bin jetzt von dem Charakter in den Grafik Modus 
umgestiegen und wollte zum Testen mal einfach einen Kasten rund ums 
Display darstellen also ein Rechteck so groß wie es geht (4 Linien) aber 
komischerweise kann ich nur eine Linie zeichnen und den Anfang einer 
zweiten, danach ist Schluss =( Wer kann mit weiter helfen?

Ich verwende die Funktionen aus Benedikts Programm...

LG Nico

von PIC N. (eigo) Benutzerseite


Lesenswert?

Ich habe Not gedrungen mal ein zweites neues Display angeschlossen, es 
weist das selbe Verhalten auf. Ich verwende wie schon geschrieben die 
Zeilen von Benedikt, hier mal die wichtigsten:


Die Initialisierung
1
void GLCD_Init_G(void)
2
{
3
  GLCD_RES=0;
4
  Delay10KTCYx(1);
5
  GLCD_RES=1;
6
7
  GLCD_writecom(0x00);  // Mode Con
8
  GLCD_writedata(0x32);  // Grafik Mode  
9
  
10
  GLCD_writecom(0x01);  // Character Pitch
11
  GLCD_writedata(0x77);  // Chars  
12
13
  GLCD_writecom(0x02);  // Number of Characters
14
  GLCD_writedata(0x13);  // 20-1 (0-19)
15
16
  GLCD_writecom(0x03);  // Set Duty
17
  GLCD_writedata(0x4F);  // 80-1 (0-79)
18
19
  GLCD_writecom(0x08);  // Start Adresse Low
20
  GLCD_writedata(0x00);  // 0
21
22
  GLCD_writecom(0x09);  // Start Adresse High
23
  GLCD_writedata(0x00);  // 0
24
25
  GLCD_Clear();      // GLCD Inhalt löschen
26
}

So will ich die Linien schreiben:
1
  GLCD_Line(0,0,159,0);      // Linie oben
2
  GLCD_Line(159,0,159,79);    // Linie rechts
3
  GLCD_Line(0,0,0,79);      // Linie links
4
  GLCD_Line(0,79,159,79);      // Linie unten
1
void GLCD_Line (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2)
2
{   unsigned char temp;
3
  if (y1==y2)
4
  {  if (x1>x2)
5
    {  temp=x1;
6
      x1=x2;
7
      x2=temp;
8
    }
9
    for (temp=x1; temp<=x2; temp++)
10
      GLCD_Setpixel (temp,y1);
11
12
  }
13
  else if (x1==x2)
14
  {  if (y1>y2)
15
    {  temp=y1;
16
      y1=y2;
17
      y2=temp;
18
    }
19
    for (temp=y1; temp<=y2; temp++)
20
      GLCD_Setpixel (x1,temp);
21
  }
22
}

Kann mir irgendjemand sagen, was ich falsch mache??

LG Nico

von Tony G. (tonyg)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!
Da ich auch schon lange mit dem Display rumspiele, möchte
ich heute auch mein Beitrag dazu geben und hatte
mir mal paar Gedanken zum Anzeigen von Bilder gemacht.
Ich habe mal meinen kleinen Sohn auf dem Display gezaubert.
Leider ist dabei auch zu sehen das die Pixel des LCD nicht quadratisch
sind. Das Bild wird etwas in der Höhe gestreckt.
Hier ein Ausschnitt der ergänzte Source von mir aus der lc7981.c die ich 
hier aus dem Forum habe. Ich benutze einen Atmega32 mit 16 MHz.
1
unsigned char tausch( unsigned char a )
2
{
3
  a = ((a >> 4) & 0x0F) | ((a << 4) & 0xF0);
4
  a = ((a >> 2) & 0x33) | ((a << 2) & 0xCC);
5
  a = ((a >> 1) & 0x55) | ((a << 1) & 0xAA);
6
7
  return a;
8
}
9
10
11
void lcd_bmp(unsigned const char *bitmap,unsigned char xpos , unsigned char ypos, unsigned char width, unsigned char height)
12
{
13
 unsigned char bwidth, i,j,yp,xp;
14
 unsigned char by;
15
 unsigned int xend;
16
 
17
 yp=ypos;
18
 xp=xpos;
19
  
20
 xend=(unsigned int)xpos + (unsigned int)width;
21
 if(xend>LCD_WIDTH) {lcd_gotoxy(xp,yp); lcd_writestring("error"); return;} //Fehler wenn außerhalb des Displays
22
 bwidth=width/8; //Anzahl Bytes horizontal
23
for(i=0; i<height; i++) //Höhe schreiben
24
{
25
lcd_setadress(xp/8,yp);
26
for(j=0; j<bwidth; j++) //Breite schreiben in Bytes
27
    {
28
     by=pgm_read_byte(bitmap);
29
     lcd_writebyte(tausch(by)); //(tausch) 8 Bit spiegeln um richtig anzuzeigen, wegen MSB first
30
   bitmap++;          //bei LSB first kann tausch() weggelassen werden
31
} // schleife j ende
32
yp++;
33
} // schleife i ende
34
}

Ich habe einen Grafikkonverter (Freeware) gefunden der bmp und jpg 
Bilder convertiert. Leider hat die Software einen kleinen Fehler... Man 
kann kein LSB first schreiben, deswegen auch der Umweg über "tausch()" 
Bei der Convertierung ist darauf zu achten das die Breite durch 8 
Teilbar ist weil ich ja immer gleich 1 Byte auf das Display schreib. 
Also wie z.B. in meinem Beispiel Breite 152 Pixel und Höhe 80 Pixel. Bei 
der Höhe ist das egal. Bei dem Converter verwendet man das 
Floyd-Steinberg Verfahren. Dann kann das Bild als .c abgespeichert 
werden. Alle andere ist noch mal in der lcd_test.c erklärt. Anbei die 
Bilder, der Converter und mein Source. Ich hoffe ich hab nichts 
vergessen! :) Viel Spaß damit!

MfG
Tony

von Max P. (max1988)


Lesenswert?

Hallo,
ich versuche gerade selbst ein Bild anzuzeigen.
Ich habe mir mit dem Grafikkonverter ein C18 Code ausgeben lassen.
Nun setzte ich meinen Coursor auf X0 Y0 und schiebe alle Bytes aus dem 
Array nacheinander auf das Display...
Leider scheint es so nicht zu funktionieren das ganze Bild ist mehrfach 
verschoben.
Das sollte doch eigentlich funktionieren oder mache ich einen Fehler???

hier mein C Code

lcd_coursor(0,0);

for (i=0;i<=1600;i++)
{
lcd_send_byte(data_demo_image[i]);
}

Gruß Max

von tonyg (Gast)


Lesenswert?

Max Pohl schrieb:
> Leider scheint es so nicht zu funktionieren das ganze Bild ist mehrfach
> verschoben.

Hallo Max!
Hast du eventuell ein Bild von dem verschobenen Bild?
Dann kann ich dir vielleicht helfen. Ich denke mal das
du hauptsächlich das Problem mit dem LSB und MSB hast.
Das würde man daran erkennen das das gesendete Byte immmer
spiegelverkehrt auf dem Display angezeigt wird.
Also z.B "01100101" = 0x65 auf dem Display so angezeigt wird
"10100110" = A6 weil der LC7981 das MSB zuerst schreibt.
Was mir auch aufgefallen ist das du den Cursor mit "lcd_coursor(0,0)"
setzt. Da gab es bei mir auch Probleme deswegen setze ich den Coursor
so "lcd_setadress(xp/8,yp);" Schick mal ein Bild und deinen source dazu
und dann sehen wir weiter!

Gruß
Tony

von Alex D. (allu)


Lesenswert?

Migelito schrieb:

> Hallo Allu,
> irgendwie will es nicht, ich denke aber doch das ich es soweit richtig
> umgesetzt habe, oder ?

Weil Bascom, schau mal unter 
Beitrag "Re: Pollin 16080 Touch mit ATMEGA32 und BASCOM" dort findest Du 
meine Antwort.

Gruß  Allu

von Max P. (max1988)


Lesenswert?

Hallo Tony,
ich habe es mit deiner Tausch Funktion versucht.
Nun funktioniert es einwandfrei.
Dank dir!!!

Gruß Max

von Stefan R. (esbit)


Lesenswert?

Hallo miteinander!

Ich fass es nicht, ich bin am Ende des Threads angekommen ;-)

Ich hab alles gelesen, was in diesem Thread steht, hab auch das meißte 
verstanden ^^ und viele Beispielprogramme ausprobiert.

Zuerst zu meiner Hardware/Software: Ich benutze einen ATmega168, den ich 
per avrisp programmiere, was wunderbar funktioniert.
Das Display, das ich bekommen habe, entspricht dem Mittleren auf dem 
Bild von Benedikt (-> 
Beitrag "Re: Display mit Touchscreen bei Pollin?").
Ich programmiere mit AVR-Studio in C.

Weder das Testprogramm von Benedikt, noch ein auf den ATmega168 
angepasstes Programm funktioniert.

Wenn der Kontrast richtig eingestellt ist, sehe ich nur einen komplett 
ausgefüllten Bildschirm, d.h. jedes Pixel ist schwarz. (Wenigstens weiß 
ich somit, dass das Display theoretisch funktioniert :-) )

Als ich vorgestern zum ersten Mal das Programm von Sigint 122 
ausprobiert habe, hat es mir auf Anhieb das Sigint-Logo angezeigt! Zuvor 
habe ich im Sourcecode von Sigint die Ports auf meine Schaltung 
angeglichen und die Frequenz angepasst auf 16MHz, weil ich einen 
externen Oszi am ATmega168 verwende.

Sogar der Touch hat soweit funktioniert, dass das Programm merkt, wenn 
er berührt wird und dann auf die nächste Seite, das Tastenfeld, 
umschaltet.

Das ganze war aber nur ein winziger Lichtblick, der schnell wieder 
vorbei war: Seit dem einen Erfolg funktioniert garnichts mehr. Die 
Kontakte hab ich alle durchgemessen, die Widerstände und Kondensatoren 
stimmen, das Programm ist auf den ATmega168 zugeschnitten, aber der 
Bildschirm wird einfach nur schwarz.

Vielleicht hilft das noch weiter: Wenn ich den Kontrast runter drehe, 
schaut mein Display wie das in diesem Post aus -> 
Beitrag "Re: Display mit Touchscreen bei Pollin?"

Ich hoffe ich habe keine wichtige Angabe vergessen und dass jemand eine 
Lösung kennt, die ich noch nicht versucht habe.

Grüße, Stefan

von Tony G. (tonyg)


Lesenswert?

Stefan R. schrieb:
> Ich hoffe ich habe keine wichtige Angabe vergessen und dass jemand eine
> Lösung kennt, die ich noch nicht versucht habe.

Hallo Stefan!
Ich schätze mal das es kein Fehler in der Software
ist sondern in deiner Hardware. Hast du mal alle Ports
die das Display braucht geprüft, ob da auch was ankommt?
Also einfach mal ein Testprogramm schreiben wo alles auf HIGH ist
und mit nem Oszi oder Spannungsmesser nachprüfen.
Ich habe auch schon den Fall gehabt das ein Portpin defekt war und
dann sucht man sich dumm und dusslig!
Oder versuch es mal mit einem anderen Controller wenn du einen
rumliegen hast!

Gruß
Tony

von Stefan R. (esbit)


Lesenswert?

@Tony:

Hat leider nicht geholfen, alle Ports am leben (zum Glück :-) ), aber 
schöne Idee, darauf wär ich nicht allein gekommen.

Ich hab leider nur noch den einen ATmega168 und sonst nur Tinys. Die 
Pins vom ATtiny2313 würden zwar reichen, aber das Programm passt nicht 
drauf.

Ich werd demnächst mal wieder beim Reichelt bestellen, da nehm ich dann 
ein paar ATmegas mit. Vllt auch mal einen Mega8, den hatte ich noch 
nicht. Dann kann ich 1:1 die Schaltungen nachbauen, die hier beschrieben 
sind. Wenigstens liegts wohl nicht am Display.

Bis dann! Stefan

von Wolfgang-G (Gast)


Lesenswert?

Stefan R. schrieb:
> Wenigstens liegts wohl nicht am Display.

kann trotzdem ein Irrtum sein. Bei mir hatten sich durch häufiges Löten 
Haarrisse in der Leiterbahn gebildet, die mit dem Auge nicht sofort 
erkennbar waren.
MfG

von Stefan R. (esbit)


Lesenswert?

Ich hab an das Display eine 20-Pol Stiftleiste gelötet, alle Kontakte in 
Ordnung. Der Rest ist nur Gesteckt auf nem Breadboard.
Reicheltbestellung ist raus ;-) in ein paar Tagen kann ich's mit nem 
Mega8 versuchen...

Stefan

von Wolfgang_G (Gast)


Lesenswert?

Wahrscheinlich habe ich es überlesen.
Bei mir werden mit dem IS TSC2003  die Koordinaten des berührten Punktes 
ermittelt. (funktioniert schon)
Der Bildschirm des DG-16080 soll z. B. in 5 x 7 = 35 Planquadrate 
(Schaltflächen) eingeteilt werden.
Schaltfläche 1 soll liegen bei
           X  Y
      P1  40  40
      P2  80  40
      P3  40  80
      P4  80  80
Schaltfläche 2  soll liegen bei
           X  Y
      P1  80  40
      P2  120  40
      P3  80  80
      P4  120  80
usw.
Werden z. B. die Koordinaten x=60 y= 65 ermittelt, dann sehe ich, dass 
der berührte Punkt in der Schaltfläche 1 liegt.
Wie kann man dies jetzt programmtechnisch lösen bzw. wo nachlesen, um 
die berührte  Schaltfläche zu ermitteln? (MSP430, vorzugsweise in C)
MfG

von Alex D. (allu)


Lesenswert?

Wolfgang_G schrieb:
> Der Bildschirm des DG-16080 soll z. B. in 5 x 7 = 35 Planquadrate
> (Schaltflächen) eingeteilt werden.

> Wie kann man dies jetzt programmtechnisch lösen bzw. wo nachlesen, um
> die berührte  Schaltfläche zu ermitteln? (MSP430, vorzugsweise in C)
> MfG

Mein Display habe ich in 23*8 = 184 Planquadrate unterteilt. Welches 
Feld berührt wurde, wird aus den AD-Wandler Messwerten berechnet. Im 
wesentlichen ist es eine Multiplikation und ein Division. Das dauert 
unabhängig davon wo die Berührungsstelle liegt etwa 50usec. 5 x 7 = 35 
Planquadrate gingen natürlich auch.

In C habe ich leider nichts, das Prinzip sollte aber auch in C gut 
realisierbar sein. Kurze Beschreibung:
Beitrag "Re: Display mit Touchscreen bei Pollin?"

Gruß  allu

von Wolfgang_G (Gast)


Lesenswert?

Recht vielen Dank an Alex D. (allu)
Prima Lösung. Teilprogramm läuft schon.
MfG

von PIC N. (eigo) Benutzerseite


Lesenswert?

Nicolas M. schrieb:
> Hallo,
>
> ich habe nochmal eine Frage an die Profis hier: Ich kann mit der
> Funktion von Benedikt, zum "springen" zu einer Adresse im Display:
>
> ..nur bis zur Zeile 7 springen danach geht es nicht mehr, bzw. wird ab
> hier dann nichts mehr geschrieben =( Wenn ich aber keine Zeile anwähle
> sondern einfach nur wild aufs LCD drauf los schreibe schreibt er sauber
> das ganze Display voll aufgrund des inkrementieren um 1 je Datensatz.

Kann mir hier vielleicht nochmal jemand helfen =( ?

LG Nico

von Johannes (Gast)


Lesenswert?

könntest du mir bitte einmal alles was du über das Display schon hast 
geben, denn ich habe auch dieses Display und den PIC 18F4550 und ich 
schaffe es einfach nicht das Display anzusprechen. Also wenn du mir 
helfen könntest wäre das super
lg Johannes :)

von PIC N. (eigo) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi, na klar! Alles im Anhang..
Würde mich dann brennend interessieren ob du in die unteren Zeilen 
springen kannst...

von Johannes (Gast)


Lesenswert?

Danke :)

von Johannes (Gast)


Lesenswert?

Danke :)
ja, ich werd mir das mal anschaun

von PIC N. (eigo) Benutzerseite


Lesenswert?

Wenn irgendwas unklar ist kannst du einfach fragen.
Hoffentlich funktioniert es bald =) dann kann ich das Display endlich 
voll ausnutzen! Hehe

von Marco S. (sharkman)


Lesenswert?

Hallo Nicolas.

Könntest du vielleicht auch eine Anschlussbelegung mit posten. Ich habe 
selber auch noch einige dieser LCD's rumliegen und würde sie gerne 
nutzen. Wahrscheinlich steht irgendwo oben auch welcher Schaltplan du 
benutzt. Es wäre aber trotzdem nett, wenn du den noch einmal hochladen 
könntest. Ein Bild davon würde mir schon reichen.

besten dank und schöne grüße

von PIC N. (eigo) Benutzerseite


Lesenswert?

Hi, hier:

GLCD_RES      LATBbits.LATB0
GLCD_RS       LATCbits.LATC2
GLCD_RW       LATCbits.LATC7
GLCD_E        LATCbits.LATC6
GLCD_Data     LATD

edit: Und natürlich das Potentiometer (100K) zwischen Vdd und Pin 17 
sowie den Schleifer an Pin 3!

von Marco S. (sharkman)


Lesenswert?

Hi!

Und wo hängt bei dir der Touch dran. Das wird aus der Beschreibung nicht 
ganz ersichtlich.

Wenn ich deinen Code richtig verstehe müssten das dann
 Oben      LATEbits.LATE0
 Unten      LATBbits.LATB3
 Rechts     LATBbits.LATB4
 Links      LATBbits.LATB5
sein. Gibt es einen Grund warum du Oben nicht auf LATB6 gesetzt hast? 
Spricht irgendetwas dagegen es dahingehend zu ändern, weil ich sehe da 
grade keinen Grund.

von Max P. (max1988)


Lesenswert?

Hallo zusammen,
ich musste eben feststellen das mein Display DG-16080 den Geist 
aufgegeben hat.
Den größten Schock habe ich jedoch bekommen als ich bemerkt habe das 
Pollin keine mehr auf Lager hat.

Hat jemand ein oder zwei Stück übrig bei denen auch der Touch 
funktioniert?

Wäre bereit 20€ für beide zu zahlen.

Bzw.10€ für eins.

MfG Max

von PIC N. (eigo) Benutzerseite


Lesenswert?

@Marco: Nein gibt keinen besonderen Grund!

von Marco S. (sharkman)


Lesenswert?

Ich muss leider nochmal ganz dumm fragen, wafür genau ist die EL Drive 
Voltage und muss diese angeschlossen werden?

von Marco S. (sharkman)


Lesenswert?

Hat sich erledigt das Ganze. Ich habe leider etwas auf dem Schlauch 
gestanden. Die Geschichte hat sich damit dann erstmal erledigt, ich 
werde mir die Tage erstmal einen Inverter besorgen gehen.

von PIC N. (eigo) Benutzerseite


Lesenswert?


von PIC N. (eigo) Benutzerseite


Lesenswert?

Also im Textmode funktioniert es jetzt bei mir zu 100% allerdings kann 
ich im Grafikmodus immer noch nicht richtig arbeiten... =(

Man springt zu den Adressen doch in beiden Modis gleich oder?
Also durch verändern der Cursor Adresse, oder nicht?

Übrigens im Textmodus war die Busy Abfrage fehlerhaft kp warum habe sie 
einfach mal durch eine Schleife ersetzt!

LG Nico

von Sascha W. (sascha-w)


Lesenswert?

Nicolas M. schrieb:
> Also im Textmode funktioniert es jetzt bei mir zu 100% allerdings kann
> ich im Grafikmodus immer noch nicht richtig arbeiten... =(
was geht nicht ??

> Man springt zu den Adressen doch in beiden Modis gleich oder?
> Also durch verändern der Cursor Adresse, oder nicht?
ja, aber
in Y-Richtung adressierst du nur eine Pixelzeile und nicht ein ganzes 
Zeichen, das selbst aus n-Zeilen besteht. Und in X-Richtung must du 
dafür sorgen das ein Byte auch 8Bit breit ist, sonst wird's mist.

> Übrigens im Textmodus war die Busy Abfrage fehlerhaft kp warum habe sie
> einfach mal durch eine Schleife ersetzt!
die Busy-Abfrage ist von der Betriebsart unabhängig.

Sascha

von PIC N. (eigo) Benutzerseite


Lesenswert?

Hi Sascha,
ok also wie gesagt Textmode klappt!
Im Grafikmodus allerdings nichts so richtig.

Ich habe eigentlich das meiste fürs Display aus der Bibliothek von 
Benedikt.

Also ich initialisiere das GLCD für den Grafikmodus so:
1
void GLCD_Init_G(void)
2
{
3
  GLCD_RES=0;
4
  Delay10KTCYx(1);
5
  GLCD_RES=1;
6
7
  GLCD_writecom(0x01);  // Character Pitch
8
  GLCD_writedata(0x77);  // Chars  
9
10
  GLCD_writecom(0x02);  // Number of Characters
11
  GLCD_writedata(19);  // 20-1 (0-19)
12
13
  GLCD_writecom(0x08);  // Start Adresse Low
14
  GLCD_writedata(0x00);  // 0
15
16
  GLCD_writecom(0x09);  // Start Adresse High
17
  GLCD_writedata(0x00);  // 0
18
19
  GLCD_writecom(0x0A);  // Start Adresse Low
20
  GLCD_writedata(0x00);  // 0
21
22
  GLCD_writecom(0x0B);  // Start Adresse High
23
  GLCD_writedata(0x00);  // 0
24
25
  GLCD_writecom(0x03);  // Set Duty
26
  GLCD_writedata(79);  // 80-1 (0-79)
27
28
  GLCD_writecom(0x00);  // Mode Con
29
  GLCD_writedata(0x32);  // Grafik Mode
30
31
  GLCD_Clear();    // GLCD Inhalt löschen
32
}

dann wird das Display einmal gelöscht:
1
void GLCD_Clear(void)
2
{
3
  unsigned int i;
4
  GLCD_SetAdress(0,0);
5
  for (i=0; i<160/8*80; i++)
6
  GLCD_writebyte(0);  
7
}

die Adresse wird dabei über die Funktion ausgeführt:
1
void GLCD_SetAdress(unsigned char x, unsigned char y)
2
{
3
  unsigned int adress;
4
  adress=y*20+x;
5
  GLCD_writecom(0x0A);    // write adress low
6
  GLCD_writedata(adress&255);
7
  GLCD_writecom(0x0B);    // write adress high
8
  GLCD_writedata(adress/256);    
9
}

Die habe ich z.B. auch von Benedikt übernommen verstehe sie aber kaum,
bzw. verstehe ich das System vom Display nicht wie wird die Adresse
eigentlich eingestellt. Der cursorcounter ist ja 16bit 0 bis 65535 und 
das
Display hat 160x80=12800.. wie wird das jetzt gesteuert?

Nagut und so versuche ich dann ein Pixel zu setzten:
1
GLCD_Setpixel(80,40);

mit der Funktion:
1
void GLCD_Setpixel(unsigned char x, unsigned char y)
2
{  
3
  if ((x>=160)||(y>=80))
4
  {
5
    return;
6
  }
7
    GLCD_SetAdress(x/8,y);
8
    GLCD_writecom(0x0F);
9
    GLCD_writedata(x&7);
10
}

Aber bei dem Versuch wird dann ein Pixel ganz oben und ca. 8-9 pixel von 
links gesetzt... häää?

LG Nico

von PIC N. (eigo) Benutzerseite


Lesenswert?

Hi also die Addressierung in der X Achse klappt wohl aber ich komme 
nicht nach unten (Y)... =(

von Tony G. (tonyg)


Lesenswert?

Nicolas M. schrieb:
> Hi also die Addressierung in der X Achse klappt wohl aber ich komme
> nicht nach unten (Y)... =(

Hallo Nicolas!

Beim vergleich meiner INIT mit deiner ist mir aufgefallen das du
sowas machst..
1
GLCD_writecom(0x0A);  // Start Adresse Low
2
  GLCD_writedata(0x00);  // 0
3
4
  GLCD_writecom(0x0B);  // Start Adresse High
5
  GLCD_writedata(0x00);  // 0
Wozu soll das gut sein?
Lass das einfach mal in deiner INIT weg und versuche es ohne den Zeilen!
Den Code brauchst du erst später für:
1
void lcd_setadress(unsigned char x, unsigned char y)
2
{  unsigned short adress;
3
  adress=y*20+x;
4
  lcd_writecom(0x0A);        // writeadress low
5
  lcd_writedat(adress&255);
6
  lcd_writecom(0x0B);        // writeadress high
7
  lcd_writedat(adress/256);
8
}

MfG
Tony

von Tony G. (tonyg)


Lesenswert?

Ich benutze übrigens
1
unsigned short adress;
und du
1
unsigned int adress;
und die lcd_writedat und lcd_writecom sehen so aus
1
void lcd_writedat(unsigned char byte)
2
{
3
  RS=0;
4
  lcd_write(byte);
5
}
6
7
void lcd_writecom(unsigned char byte)
8
{
9
  lcd_waitbusy();
10
  RS=1;
11
  lcd_write(byte);
12
}

von PIC N. (eigo) Benutzerseite


Lesenswert?

Hi Tony,
ich habe die Init mal geändert hat nichts verändert.
Auch das austauschen von int gegen short ändert nichts.

Und meine Funktionen writecom und writedata sind identisch zu deinen!

Mh.. Weitere Tipps?

von Tony G. (tonyg)


Lesenswert?

Nicolas M. schrieb:
> Mh.. Weitere Tipps?

Hallo Nicolas!
Um eine genaue Analyse zu machen, schick doch einfach
mal deinen gesamten code! Dann kann ich vielleicht helfen.

MfG
Tony

von PIC N. (eigo) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hatte ich oben schon mal gepostet aber hier nochmal...

LG Nico

von Armin (Gast)


Lesenswert?

Hi Leute!

Ich hab folgendes Problem mit dem Display, das wir ja hier alle zu haben 
scheinen...
Hab die Schaltung auf einem Steckbrett so weit aufgebaut... Mit einem 
Atmega88 funktioniert das ganze auch einwandfrei (Data: D0-D7, Ctrl: 
PB0-2).
Sobald aber ein Atmega32 ins Spiel kommt, scheint das Display die beine 
Breit zu machen... Es funktioniert einfach nicht. Egal auf welchen Pins 
an welchem Port... Es will einfach nicht. Ich hab gelesen, dass sobald 
PortC verwendet werden will man die JTag Fuses deaktivieren soll. Hab 
ich gemacht... Gut, ich muss jetzt nicht zwangsweise PortC verwenden, 
Aber es funktioniert genauso wenig mit PortB und PortA. Habt ihr 
vielleicht irgendeine Idee? Der AVR läuft noch mit factory 1MHZ... aber 
daran wird es ja wohl nicht liegen, oder?

Zum Glück hatte ich noch nen kleinen AVR rumliegen, sonst wüsst ich 
nicht mal, dass es nur mit dem 32er nicht geht... Immerhin :)

Habt ihr Ideen?

Grüße
Armin

von Dirk B. (garag)


Lesenswert?

Hallo Armin,

bei deinem ATmega32 könnte es nicht zufällig ein Problem mit der JTAG 
Fuse und PortC sein ?

Gruß
Dirk

von Armin (Gast)


Lesenswert?

Hey Dirk!

Danke für deine Antwort! Nein, da kann es kein Problem geben. Aber das 
steht ja schon in meinem letzten Post... es ist wie verhext :)

Grüße Armin

von Armin (Gast)


Lesenswert?

Hi!
Ihr dürft mich jetzt steinigen!
Datenbus vertauscht... shame on me. es geht :)

Grüße Armin

von Tony G. (tonyg)


Lesenswert?

Armin schrieb:
> Datenbus vertauscht... shame on me. es geht :)

Morgen!
Hätte mich auch gewundert wenn es nicht geht!
Ich benutze ja schließlich auch einen Atmega32!

@Nicolas
Ich hab deinen Code mal angeschaut, ich finde eigentlich
keinen Fehler in der Soft! Ist soweit identisch mit meiner.
Ich kann mir nur vorstellen das da irgendwas mit dem Timing
nicht stimmt oder der Compiler was weg optimiert! Da ich
leider keine PIC programmiere, kann ich auch nicht viel testen.

MfG
Tony

von Eigo als Gast (Gast)


Lesenswert?

Hi Tony, trotzdem danke!

Also ich benutze den C18 Compiler von Microchip und den PIC18F4550 mit 
20Mhz Taktung. Wie gesagt im Textmode funktioniert das Display wunderbar 
nur im Grafikmodus funktioniert die Y Adressierung nicht.

Ich hoffe es gibt noch jemanden der mir helfen kann.

LG Nico

von Sascha W. (sascha-w)


Lesenswert?

@Nicolas

setze in deiner INIT für GFX-Mode mal die Auswahl der Betriebsart (CMD 
0x00)
an den Anfang der Initroutine und nicht ans Ende!
Nicht das dadurch irgendwelche Werte die du vorher einstellst verworfen 
werden.

Sascha

von Armin S. (knallerbse)


Angehängte Dateien:

Lesenswert?

Hi!

Hab mich hier jetzt angemeldet...
Hier mein Source... is mehr oder ne kleine Techdemo mit nem kleinen 
Menue...
Alles einfach mal reingehackt... vielleicht hilft es ja jemanden weiter.

Grüße Armin

von Michael S. (suttermichi)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe mir auch noch 3 von diesen Displays ergattert (Bei Pollin gibts 
die ja im Augenblick nicht mehr :-O ).

Ich habe das mittlere Modell im Bild oben bekommen. Zwischen den beiden 
Touchscreen Pins messe ich jeweils so ca. 300 und 600 Ohm. Zwischen den 
anderen beiden, ohne Berührung unendlich Ohm, bei Berührung ändert sich 
der Wert dementsprechend. Ich denke das der Touch funktioniert, oder? 
Und wenn ich das GLCD an die 5V Versorgungsspannung hänge, leuchten auch 
alle Pixel, es hat also soweit ich das beurteilen kann keine Zeilen die 
fehlen oder so.

Ich habe folgende Hardware aufgebaut um meine Displays zu testen. 
(Schaltplan oben) Ist der gleiche Schaltplan wie in Benedikt weiter oben 
schon mal gepostet hat.

Dann habe ich in einen neuen ATmega8 verschiedene der oberen 
Assembler-Testprogramme geladen (z.B.: "dg16080.hex" von Benedikt), aber 
so bald das Programm geflasht ist, erlöschen alle Pixel auf dem Display 
und dann tut sich gar nichts mehr! (Bei den meisten oberen 
Testprogrammen sollte man da ja dann was zeichen können) Wenn ich das 
Programm dann wieder vom mega lösche, leuchten wieder alle Pixel. Habe 
es auch mit einem oberen Programm, wo eigentlich nur Text angezeigt 
werden sollte, probiert geht aber auch nicht!

Nun weiss ich nicht was ich falsch mache. Habe ich vielleicht was im 
Schema vergessen, oder muss ich irgend was machen wenn ich nen ATmega 
zum ersten mal brenne(habe noch nicht so viel Erfahrung mit uCs, binns 
am erlernen, aber ich will eben diese GLCDs mal schnell testen)?

Ich hoffe es kann mir einer helfen.

Gruss und gute Nacht ;-)

Michi

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Haste den Kontrast richtig eingestellt?

von Stefan F. (feissy)


Lesenswert?

tach,
 ich hab da man ne Frage und zwar habe ich grade den Code 2 postings 
über mir runtergeladen und bin nu am verdrahten des Atmegas32, wie muss 
da die Beschaltung von RES und CS sein, davon steht im Code ja nichts 
beschrieben?

Gruß

von Armin Sch. (Gast)


Lesenswert?

Hi!

Diese Leitungen hab ich auf feste Pegel gelegt... Reset ist low aktiv, 
also auf 5V und CS auf GND... Aber das kannst du auch im Datenblatt 
selbst nochmal nachsehen!

Grüße Armin

von Michael S. (suttermichi)


Lesenswert?

Ja den Kontrast habe ich richtig eingestellt. Wenn der mega kein 
Programm geflasht hat, leuchtet jedes Pixel und ist gut zu erkennen. Ich 
habe auch schon wärhrend dem Programmablauf am Kontrastpoti 
herumgedreht, aber es tut sich einfach nichts!

Ich denke mal dass ich es richtig verdratet habe, so wie im Schema, 
vielleicht ist es ein Softwarefehler?

Gruss

Michi

von Stefan F. (feissy)


Lesenswert?

weil im Datenblatt steht, dass beide aktiv low sind. Aber dann mache ich 
das so wie du Res aktiv low und Cs aktiv high
Gruß

von Michael B. (planlessmichi)


Lesenswert?

@Michael Sutter:
Also wenn selbst das "dg16080.hex" von Benedikt bei Dir nichts anzeigt, 
dann passt was anderes nicht. Weil die Datei funktioniert wunderbar. Von 
Deiner Beschreibung her, würde ich sagen, dass die HW auch in Ordnung 
ist. Ich tippe dann mal eher auf die Fuses. Hast Du auch den internen 
RC-Oszillator (und kein externes) auf 8MHz eingestellt? Die 
XTAL-Anschlüsse werden ja für das Display benötigt.

von Michael B. (planlessmichi)


Angehängte Dateien:

Lesenswert?

@Michael Sutter:
Anbei mal ein Screenshot von den Fuse-Einstellungen...
Überprüfe Deine doch einfach mal...

von Stefan F. (feissy)


Lesenswert?

@ Armin Sch.

Wie ist das denn mit den Datenleitungen, da hast du doch von Db0 bis Db7 
alle auf den Port D 0 bis Port D 7 gelegt oder ?

Gruß

von Michael S. (suttermichi)


Lesenswert?

Nein an den Fusebits habe ich nichts verstellt. Muss ich dann zuerst das 
Programm in den ATmega laden und dann diese Fusebits setzten oder?
Wie stelle ich denn die Fuse-Bits bei PonnyProg richtig ein?
Und was bedeutet HW?

Gruss

Michi

von Michael B. (planlessmichi)


Lesenswert?

:-) HW = Hardware; damit meinte ich Dein Display ;-)
Was PonnyProg angeht, kann ich Dir leider nicht helfen, da ich eben 
AVR-Studio benutze. Ich glaube, da muss man immer "invertiert" denken. 
Aber da kann Dir mit Sicherheit jemand anderes hier weiterhelfen.
Prinzipiell würde ich jetzt vom Bauchgefühl her sagen, dass man zuerst 
die Fuses richtig setzen sollte; kann aber sein, dass das - vorallem bei 
dem Projekt hier - auch egal ist.

EDIT: Schau mal hier:
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/fusebits_standard/

Das sollte weiterhelfen :-) Da ist ein Screenshot speziell für 8MHz 
interner RC-Oscillator. Keine Ahnung, ob das noch aktuell ist, aber 
klicke zuerst auf Read, dann ändere und dann auf Write

von Michael S. (suttermichi)


Lesenswert?

Vielen vielen Dank!!!!

Es funktioniert nun!

Ich habe die Fusebits nun so wie auf deiner verlinkten Seite gesetzt. 
Und noch ein wenig am Kontrast geschraubt, wahr anscheinend doch nicht 
ganz richtig.

--> und siehe da es funktioniert!

Gruss und DANKE!

Michi

von PIC N. (eigo) Benutzerseite


Lesenswert?

Sascha Weber schrieb:
> @Nicolas
>
> setze in deiner INIT für GFX-Mode mal die Auswahl der Betriebsart (CMD
> 0x00)
> an den Anfang der Initroutine und nicht ans Ende!
> Nicht das dadurch irgendwelche Werte die du vorher einstellst verworfen
> werden.
>
> Sascha

Hat leider nicht geholfen =(

LG Nico

von Armin S. (knallerbse)


Lesenswert?

Stefan Feismann schrieb:
> @ Armin Sch.
>
> Wie ist das denn mit den Datenleitungen, da hast du doch von Db0 bis Db7
> alle auf den Port D 0 bis Port D 7 gelegt oder ?
>
> Gruß

Genau.

von Thorsten (Gast)


Lesenswert?

@ Armin Sch.

Und zwar hab ich mal eine frage bezüglich der grafikausgabe:

Und zwar wenn ich Cursortasten selber erstellen will und dann mit 
image2Code umwandle und auf dem Display ausgeben will ( z.B. ein 
einfaches Viereck 30x30 ) erscheint wohl ein teil, aber der untere teil 
des Vierecks scheint zu fehlen.
Woran kann das liegen?

Gruß Stefan

von Armin S. (knallerbse)


Lesenswert?

Thorsten schrieb:
> @ Armin Sch.
>
> Und zwar hab ich mal eine frage bezüglich der grafikausgabe:
>
> Und zwar wenn ich Cursortasten selber erstellen will und dann mit
> image2Code umwandle und auf dem Display ausgeben will ( z.B. ein
> einfaches Viereck 30x30 ) erscheint wohl ein teil, aber der untere teil
> des Vierecks scheint zu fehlen.
> Woran kann das liegen?
>
> Gruß Stefan

Hi!
Ja das Problem kenn ich... das Problem ist meine Funktion um diese 
Bitmaps auszugeben. Ich gebe immer ein Byte aus. D.h. mit dieser 
Funktion muss die Breite ein vielfaches von 8 sein... also mach das bild 
32x30 gross, dann is alles gut :)
Ich wollte mich eh mal ransetzen um eine neue Funktion schreiben, die 
auch andere Breiten als x*8 kann... Aber hab momentan dazu keine Zeit.
Geht alles andere denn?

Grüße Armin

von Thorsten (Gast)


Lesenswert?

Ja echt super Programm hätt ich niemal hinbekommen ^^
hab schon ein eigenes Menü und alle sowas erstellt und durch deine 
Funktionen scheint alles klar und deutlich wie man das anstellen kann
Wenn ich mal fragen darf wie lange hast du da dran gesessen ?

Gruß

von Armin S. (knallerbse)


Lesenswert?

Thorsten schrieb:
> Ja echt super Programm hätt ich niemal hinbekommen ^^
> hab schon ein eigenes Menü und alle sowas erstellt und durch deine
> Funktionen scheint alles klar und deutlich wie man das anstellen kann
> Wenn ich mal fragen darf wie lange hast du da dran gesessen ?
>
> Gruß

ka.. n tag halt zwischen uni und schlafen :)

von Stefan F. (feissy)


Lesenswert?

Hallo, habt ihr noch Dipslays, die ihr zum angemessenen Preis loswerden 
wollt, ich bräuchte noch welche ??

Gruß Stefan Feismann

von Stephan B. (s_bronco)


Lesenswert?

Ich brauch auch noch ein oder zwei, die hälfte (1 von 2) geht ned, 
Umtausch, wegen haben keine mehr, nicht möglich........

oder nen Tip für ein anderes Bezahlbares GLCD mit Touch

von lcdler (Gast)


Lesenswert?

Joa, gibts denn jetzt noch Displays irgendwo im netz?!
Oder eben ähnliche um den Preiß?! Vllt auch bissle teurer?

von lcdler (Gast)


Lesenswert?

hat jetzt jemand noch eins?!

von Sascha W. (sascha-w)


Lesenswert?

lcdler schrieb:
> hat jetzt jemand noch eins?!

hab noch eins hier, komplett funktionsfähig.
Ist eins wo die Beleuchtung den Hintergrund beleuchtet und die Pixel 
immer schwarz erscheinen - ist vom Kontrast nicht so besonders.

zum Pollin Preis + VP&Porto abzugeben - bei Interesse PM


Sascha

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.