www.mikrocontroller.net

Forum: Codesammlung Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen

Autor: Benedikt K. (benedikt) (Moderator)
Datum: 24.04.2008 15:15
Angehängte Dateien:

Da ich immer wieder auf einen grafikfähigen LCD Controller für
controllerlose 320x240 Displays angesprochen werde, habe ich meinen
alten auf der 640x480 Version
(Beitrag "LCD Controller für 640x480 LCD mit mega8515") basierten Controller
etwas aufgepeppt und mit neuen Features versehen:

- Einfache Schaltung aus nur wenigen Standardbauteilen
- Grafikmodus mit 4 Graustufen
- Textmodus mit 8x12 Zeichensatz, der Text in Grafik umwandelt
- Funktionen für Pixel, Linien, Rechtecke, Bilder usw
- Ansteuerung über UART (Standard: 19200 Baud), daher ideal als Display
in einer µC Schaltung verwendbar. Die Grafikfunktionen entlasten dabei
den anderen µC.
- Die LCD Routinen sind in Assembler geschrieben (für beste Ausnutzung
der Rechenleistung), Ansteuerung und Kommunikation dagegen in C, daher
leicht ist das ganze leicht erweiterbar.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 24.04.2008 15:15
Angehängte Dateien:

So könnte das ganze aussehen, wenn es aufgebaut ist und läuft.
Autor: Thorsten (Gast)
Datum: 24.04.2008 15:21

Sehr beeindruckend. Danke fürs posten.

Gruß
Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum: 24.04.2008 15:59

Ich hatte schon die ganze zeit vor deinen großen Controller auf die
displays umzumünzen, bin aber noch nicht dazu gekommen, naja jetzt hast
du das ja gemacht, prima :D
Autor: Thorsten S. (whitenoise)
Datum: 24.04.2008 22:48

@Benedikt,

ich konnte in deiner Schnittstellenbeschreibung die Schnittstelle zum
Kreise zeichnen nicht finden.

Eine Frage dabei zur Umsetzung, bietet sie nur gefüllte Kreise, wie im
Bild, oder ist es möglich die Randdicke zu Variieren?

Gruß,
Dennis
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 24.04.2008 22:50

Wirklich beeindruckend Benedikt,

toll das Farbenspiel mit dem "schwarzen" (ist es doch wohl) Display.

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 24.04.2008 23:14

Dennis S. wrote:
> ich konnte in deiner Schnittstellenbeschreibung die Schnittstelle zum
> Kreise zeichnen nicht finden.

Gibt es auch nicht. Ich hatte zwar erst dran gedacht, aber dann doch
sein lassen, da Kreis im Vergleich zu Rechtecken doch eher selten
vorkommen. Bei der nächsten Version ist das aber drin.

Wo wir schon dabei sind: Kennt jemand eine Füllfunktion die auch auf dem
AVR einigermaßen schnell läuft ? Floodfill scheitert schon alleine am
Stack.
Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum: 25.04.2008 07:40

in inrgend einer lib wurde das so gelöst:
man errechnet zwei auf gleicher höhe liegende Kreiskoordinaten und
zeichnet von der einen koordinate zur anderen eine linie, das macht man
für alle punkte, fertig ist der gefüllte kreis.
Autor: Läubi .. (laeubi) (Moderator) Benutzerseite
Datum: 25.04.2008 08:07

Oder du machst es so: vom mittelpunkt ausgehen gehst du in y richtung
nach oben bis du auf ein gleichfarbiges Pixel (rand) triffst, das gleich
einmal nach unten.
Dann erhöhsat du x um eine und wiederholst das solange bis du in x
richtung auf ein gleichfarbiges pixel triffst.
dann nochmal vom mittelpunkt aus nach links und fertig
Problem ist nru wenn andere objekte "im Weg" sind wird nicht der ganze
kreis gefüllt. Man könnte natürlich auch einfach die koordinaten des
Kreisrandes speichern oder das beim zeichnen miterledigen volgendermaßen
vieleicht:
Ich geh jezt mal davon aus das du immer Viertelkreise zeichnest.
mx = mittelpunkt X
my = mittelpunkt Y

x=mx
oldx = x-1
y=my+radius
while(x < mx+radius) {
 
 drawPixel(x,y) //rand zeichnen
 if (x != oldx) { //x != alter postion, sonst haben wir schon gemalt!
  oldy = y //y sichern
  while( y > my ) { //sind wir schon am mittelpunkt?
     y--; //nach unten gehen
     drawPixel(x,y) //pixel zeichnen
  }
  y=oldy //y wieder herstellen
 }
 oldx = x //altes x speichern um "doppelmalen" zu verhindern falls
          //sich x in dieser iteration nicht ändert
 x = newXKoord(x) //neue X berechnen
 y = newYKoord(y) //neue Y berechnen
}
Jezt natürlich ungetestet aber das könnte so gehen, es werden halt immer
streifen vom Rand runter bis zum mittelpunkt gezeichnet.
Muß man jezt halt nocheinmal spiegeln für die 4 Quadranten.
Autor: Thomas Pototschnig (pototschnig)
Datum: 25.04.2008 08:20

Was ist das für ein controller-loses Display?

Mfg
Thomas Pototschnig
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.04.2008 08:54

Pollin: 120460 (mechanisch und elektrisch identisch zu 120471).
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 25.04.2008 09:26

Hallo Benedikt,

>Bei der nächsten Version ist das aber drin.
Wirst Du die Hardware verändern?

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.04.2008 10:33

Nein, nur die Software.
Autor: Kay B. (newbie)
Datum: 25.04.2008 18:25

hallo Benedikt,

respekt

vielleicht eine blöde frage aber,
um eine text zb.in Zeile 1 zu schreiben
ist es richtig 17,x1,y1 x=position y=zeile

mfg kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.04.2008 18:42

Ja, genau so. Die Zeilen und Spaltenzählung beginnt aber C typisch bei
0.
Autor: Sven (Gast)
Datum: 25.04.2008 18:50

Mir ist jetzt noch nicht ganz klar welcher RAM
verwendet wird. Alle anderen Bausteine sind ja bezeichnet ;-).

Gibt es da einen Standard Reichelt Typ ?

Gruß Sven
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.04.2008 19:11

Als SRAM findet irgendein schneller 32k x 8 SRAM mit 10-35ns Verwendung.
Sowas hat Reichelt nicht.
Daher kann man in der lcd.c den RAM Zugriff ausbremsen. Dann kann man
auch langsamere mit bis zu 90ns verwenden. Das wäre dann z.B. 62256-80
von Reichelt.
Autor: Sven (Gast)
Datum: 25.04.2008 19:22

Ok, danke. Dann würde dieser hier passen :

http://de.farnell.com/1271827/halbleiter/product.u...

Bestnr: 1271827

Danke schon mal für die Arbeit und die Veröffentlichung.
Überlege das ganze in SMD zu realisieren und zu veröffentlichen.


Gruß Sven
Autor: Stefan Ernst (sternst)
Datum: 25.04.2008 19:58

Ich hätte da mal eine Frage aus reinem Interesse:
Warum die etwas unorthodoxe Einblendung des externen Speichers in den
Adressraum des AVR (A0 vom externen Interface wird nicht verwendet)?
Hat das Vorteile beim Auslesen des RAM für den LCD-Datenstrom?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.04.2008 21:07

Sven wrote:
> Ok, danke. Dann würde dieser hier passen :

Ja, der sollte funktionieren.

Stefan Ernst wrote:
> Ich hätte da mal eine Frage aus reinem Interesse:
> Warum die etwas unorthodoxe Einblendung des externen Speichers in den
> Adressraum des AVR (A0 vom externen Interface wird nicht verwendet)?
> Hat das Vorteile beim Auslesen des RAM für den LCD-Datenstrom?

Ja. Damit das ganze schneller geht, teile ich den 16bit Adresspointer in
256 Zeilen und 256 Spalten auf, genau passend für das LCD.
Ich lese für das LCD 80 Bytes aus. Da das LCD nur 4bit hat, reicht ein
Speicherbyte für 2 Datenpakete zum LCD, daher der Multiplexer und daher
ist A0 nicht beschaltet.
Autor: Stefan Ernst (sternst)
Datum: 25.04.2008 21:46

Benedikt K. wrote:

> Ich lese für das LCD 80 Bytes aus. Da das LCD nur 4bit hat, reicht ein
> Speicherbyte für 2 Datenpakete zum LCD, daher der Multiplexer und daher
> ist A0 nicht beschaltet.

Ah, ich hatte übersehen, dass der Multiplexer am Ausgang durch das
RD-Signal getoggelt wird. ;-)
Danke!
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 10.05.2008 09:22
Angehängte Dateien:

Kleines Update:
Jetzt mit Routinen um einen (gefüllten) Kreis zu zeichnen.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 17.05.2008 18:48

@Benedikt K.

noch mal zu Deiner Schaltung:

von IC1/PD4 kommt FLM/ AC
von IC6A/Pin5 kommt M/Frame.

sonst war FLM=Frame
und M=AC

Frame wird ja wohl gebraucht, welcher Pin wäre denn richtig?

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 17.05.2008 19:47
Angehängte Dateien:

Du hast recht, da habe ich wohl beim Verschieben der Pins nur ein Teil
der Bezeichnung mitverschoben.
Hier iste die Beschreibung mit dem korrigierten Schaltplan.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 22.06.2008 14:44
Angehängte Dateien:

Hi Benedikt,

hab ein kleines Ausgabeproblem.

Anbei mal Dein "Titelbild"
Sieht so aus , als wenn der Text nicht aus der richtigen "Ablage"
"gemalt" wird.
Hab die Verdrahtung noch mal geprüft, laut DBL soll der mega 8515 nur
12 bis 22pF am Quarz haben, hab ich 15 statt deiner 27 drin.
Reset hat noch 10K an 5V+

Auf Befehle über RXD gehorcht die Schaltung Bedingungslos bei
19K2 .
als Speicher hab ich ein W24M257AK-15 ( hab ein paar ausprobiert) drin.

Fusebits des mega8515: CKOPT programmed(>8Mhz) rest unprogrammed.

habe beide Code (mit und ohne Kreis) ausprobiert.

Dank Dir mal schon.

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 22.06.2008 14:55

Hast du die Verdrahtung genauso wie im Schaltplan, oder hast du bei den
Datenleitungen etwas verändert ?
Wenn du Pin 1 vom HC157 an Q statt an Q\ anschließt, dann sollte es
passen.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 22.06.2008 15:51
Angehängte Dateien:

war wohl bisher der erste Nachbauer,
ansonsten:

ohne Worte.

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 22.06.2008 16:05

Habe ich da was im Schaltplan vertauscht, oder hattest du was falsch ?
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 22.06.2008 16:21

ich hab den Pin1 vom HC157 an Pin9(Q)des HC74 angeschlossen (geändert)
zw. Pin8 u.Pin12 habe ich die Brücke des HC74 gelassen.
Der Rest ist alles nach Deinem Schaltplan. Nur ISP-Buchse hab ich
zusätzlich drauf.

Wigbert
Autor: ChrisLiebig (Gast)
Datum: 22.06.2008 17:54

@ Wigbert Picht

Darf man fragen um welches Display es sich genau handelt? Eine genaue
Bezeichnung wäre echt Klasse!
Autor: Gerhard (Gast)
Datum: 22.06.2008 18:04

@ Wigbert

kannst du das Layout veröffentlichen?

Gerhard
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 22.06.2008 18:04

stimmt, ist nirgends erwähnt

von Pollin
Best.Nr. 120 471

Wigbert
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 22.06.2008 18:07
Angehängte Dateien:

Gerhard wird demnächst kommen,
muss nach ein paar Schönheitsfehler abändern
Autor: Jens (Gast)
Datum: 06.07.2008 13:31
Angehängte Dateien:

Hi

Die Schaltung im Beitrag bezieht sich ja auf die Displays von Pollin.
Best.-Nr.: 120 460 und 120 471
Ich habe das von Sharp (120 318). Kann ich das auch verwenden? Nur die
Spannungen für das Display müsste ich da selbst erzeugen. Liege ich da
richtig? Und müsste ich da im Programm etwas verändern?

Ich häng das Datenblatt gleich mit an!
Autor: Andreas K. (a-k)
Datum: 06.07.2008 13:46

Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.07.2008 14:16

Jens wrote:
> Ich habe das von Sharp (120 318). Kann ich das auch verwenden?

Ja.

> Nur die
> Spannungen für das Display müsste ich da selbst erzeugen. Liege ich da
> richtig?

Ja, ich mache das so wie bei dem Link den Andreas gepostet hat.

Und müsste ich da im Programm etwas verändern?

Nein.
Nur aufpassen, dass da das Display mit 3,3V läuft. Also den Pegelwandler
nicht vergessen.

> Ich häng das Datenblatt gleich mit an!

Datenblatt würde ich das nicht nennen. Irgendwo hier im Forum fliegt
auch das richtige Datenblatt von Sharp rum, ich habs jetzt gerade nicht
gefunden. Aber da es ein Standard 320x240 TFT ist, ist das Datenblatt
sowiso eher uninteressant (abgesehen von der Pinbelegung).
Autor: Andreas K. (a-k)
Datum: 06.07.2008 15:28

Das Datenblatt ist in dem Pollin-Downloadpaket auch drin (in "Daten").
Autor: Jens (Gast)
Datum: 06.07.2008 17:09

@Benedikt

Warum 3,3V für das Display? Laut Schaltplan von Pollin betreiben die das
LCD mit 5V und nur das FPGA mit 3,3V.
Autor: Andreas K. (a-k)
Datum: 06.07.2008 17:17

Wenn's geht - ok. Im Datasheet von dem Teil steht halt 3.0-3,6V drin.
Allerdings mit einem absoluten Maximum von immerhin doch 6V, also wohl
nicht im Sinne des Erfinders, aber vielleicht machbar.

Aber: Bloss weil Pollin das reinschreibt, wird da kein Naturgesetz
draus.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.07.2008 17:20

Jens wrote:
> Warum 3,3V für das Display?

Wie Andreas schrieb: Sharp garantiert nur 3,3V. Es mag bei 5V gehen, ist
aber außerhalb der Specs.

> Laut Schaltplan von Pollin betreiben die das LCD mit 5V und nur das FPGA mit
3,3V.

Wichtigste Merkregel bei Pollin: Nie deren Angaben vertrauen, da ist
einiges falsch. Immer das orginal Datenblatt verwenden.
Autor: ChrisLiebig (Gast)
Datum: 06.07.2008 17:24

Wo liegt eigentlich der Unterschied zwischen den Displays von Pollin mit
den Nummern 120 460 und 120 471??? Hat nur der Rahmen ne andere Farbe
oder wie?
Autor: Andreas K. (a-k)
Datum: 06.07.2008 17:25

Apropos Datasheet: Laut Sharp ist schon der kleinste Überschwinger am
Eingang jenseits der Spezifikation. Ist nämlich nur 80-100% Vdd
zulässig. ;-)
Autor: Andreas K. (a-k)
Datum: 06.07.2008 17:27

Hab das zweite noch nicht ausprobiert, aber von der Bezeichnung her
(NANYA hat da ein System drinne) ist das erste hell auf dunklem
Hintergrund, das zweite andersrum. Und das erste geht garnicht ohne
Hintergrundbeleuchtung (transmissive), das zweite kann sowohl mit wie
ohne (transflexive).
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.07.2008 17:34

ChrisLiebig wrote:
> Wo liegt eigentlich der Unterschied zwischen den Displays von Pollin mit
> den Nummern 120 460 und 120 471??? Hat nur der Rahmen ne andere Farbe
> oder wie?

120 460 ist das hier:
http://www.mikrocontroller.net/attachment/34396/32...

und 120 470 ist das:
http://www.mikrocontroller.net/attachment/36571/GLCD.JPG


Das erste hat meiner Meinung nach einen leicht besseren Kontrast, dafür
sieht man (wie Andreas schon wieder vor mir schrieb) garnichts ohne
Backlight. Das  zweite ist dagegen auch ohne Backlight bei ausreichend
vorhandenem Licht ablesbar.
Autor: ChrisLiebig (Gast)
Datum: 06.07.2008 17:50

Wie kann ich die 23V für die Hintergrundbeleuchtung erzeugen? Bin grade
auf der Suche nach der IC-Lösung möglichst ohne viel äußere Beschaltung.
Wieviel Strom benötigt denn das Backlight?
Autor: Andreas K. (a-k)
Datum: 06.07.2008 17:56

Autor: Andreas K. (a-k)
Datum: 06.07.2008 17:59

Und wenn du nicht nur 5V, sondern auch irgendwas ab 6-7V zur Verfügung
hast, darf ungeregelt sein, dann wird es etwas einfacher:
Beitrag "Grafik-LCD Controller mit AVR und VRAM". Die Drossel darin
gibt's übrigens netterweise auch bei Pollin.

Ob der Optokoppler zur Schaltung der Spannung wirklich nötig ist weiss
ich nicht. Laut Datasheet soll die Spannung erst später eingeschaltet
werden, zusammen mit DISP_OFF, also ist es sicherer so. Aber wenn
DISP_OFF die Spannung im LCD sowieso schaltet, wär's ja egal.

In Beitrag "Grafik-LCD Controller mit AVR und VRAM" habe ich den
Wandler mal auf 10mA minimiert und das Kontrastpoti aus dem Wandler
ausgelagert, ist aber so noch nicht getestet. Auch hier gibt's die Spule
bei Pollin.

Strom für Vee ist laut Datasheet von dem Typ mit dunklem Hintergrund
übrigens 3,4mA.
Autor: ChrisLiebig (Gast)
Datum: 06.07.2008 18:10

Danke für eure schnellen Antworten.

Leider habe ich nur die 5V zur Verfügung. Ich blicke in dem ganzen
riesen Topic nicht mehr so recht durch, kann mir einer mal die richtige
Schaltung zeigen, wie ich aus den 5V die -22V rauskriege?

Achso nochwas, was fürn SRAM kann ich da nehmen, ich brauche ja was mit
ca. 20ns Zugriffszeit. Hat da jemand nen Beispiel für nen 5V Typ?
Autor: Andreas K. (a-k)
Datum: 06.07.2008 18:17

ChrisLiebig wrote:

> Leider habe ich nur die 5V zur Verfügung.

Du solltest den CCFL Inverter für die Hintergrundbeleuchtung nicht
ausser Acht lassen. Es sei denn du willst die transflexive Version und
nur bei genug Fremdbeleuchtung verwenden.

Der Inverter von Pollin ist nämlich ein 12V Typ, zu finden als
Kaltlichtkathode für's PC Modding. Daher lag diese Variante der
Spannungserzeugung nahe. Benedikt musste etwas mehr Aufwand treiben, da
man mit dem MC34063A ohne Hilfstransistor aus 5V keine 23V zaubern kann.

> riesen Topic nicht mehr so recht durch, kann mir einer mal die richtige
> Schaltung zeigen, wie ich aus den 5V die -22V rauskriege?

Siehe Links oben, such in den Schaltbildern nach dem MC34063A.

> Achso nochwas, was fürn SRAM kann ich da nehmen, ich brauche ja was mit
> ca. 20ns Zugriffszeit. Hat da jemand nen Beispiel für nen 5V Typ?

Beispielsweise gesockelte Cache-RAMs aus alten PCs der 486- und der
ersten Pentium-Generation. Gibt's wohl auch bei Segor. Sind aber
ziemliche Schluckspechte, was zu heftigen Transienten auf der
Stromversorgung führen kann. Kondensator nicht vergessen, und kurze
saubere VCC/GND-Führung.
Autor: ChrisLiebig (Gast)
Datum: 06.07.2008 18:35

Ok, die Schaltung ist also nur für die Display-Spannung, oder? Ich werde
die jetzt so erzeugen wie in Benedikts Schaltung ganz oben. Und wie wir
die Spannung für die Hintergrungbeleuchtung erzeugt? Verstehe ich das
jetzt richtig, dass der Schaltregler in Benedikts Schaltung nur für die
Displayspannung ist?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.07.2008 18:41

ChrisLiebig wrote:
> Wie kann ich die 23V für die Hintergrundbeleuchtung erzeugen?

Die +23V von Pollin sind erstens keine +23V, sondern eher -18V (typisch
Pollin halt: Schnell was zusammengegoogelt, nichts verstanden und falsch
in die Beschreibung gepackt. Das ist genau das was ich hier geschrieben
habe: Beitrag "Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen"), und die sind
nicht für die Beleuchtung sondern für das Display selbst.

> Und wie wir
> die Spannung für die Hintergrungbeleuchtung erzeugt? Verstehe ich das
> jetzt richtig, dass der Schaltregler in Benedikts Schaltung nur für die
> Displayspannung ist?

Ja. Die Hintergrundbeleuchtung benötigt einen CCFL Inverter.
Autor: Andreas K. (a-k)
Datum: 06.07.2008 18:41

Ja, die -23V sind nur für's Display selbst.

Die Hintergrundbeleuchtung braucht so 400-800V, das baut man sich nicht
selbst sondern kauft fertige sogenannte Inverter. Sind im Umfeld vom
PC-Modding leicht erhältlich, arbeiten aber meist mit 12V.
Autor: Andreas K. (a-k)
Datum: 06.07.2008 18:49

Benedikt K. wrote:

> Die +23V von Pollin sind erstens keine +23V, sondern eher -18V

Aber arg temperaturabhängig. Bei -20°C sind es laut Datasheet -20V, bei
+50°C -16,5V. Weshalb die Spannungseinstellung im produktiven Einsatz
dem Anwender zugänglich sein sollte. Ein Poti direkt im Wandler ist
dafür u.U. ungeeignet, weil man das da nicht rausoperieren darf. Geht
also wie im Datasheet und meiner 10mA-Version gezeigt beispielsweise mit
separatem Poti+Transistor, oder wie bei dir per PWM (bloss: wie stellt
das dann der Anwender ein, wenn er doch nix sieht?).
Autor: Andreas K. (a-k)
Datum: 06.07.2008 18:58

Benedikt K. wrote:

> Die +23V von Pollin sind erstens keine +23V,

Wenn man das vom Hersteller vorgesehene Kontrastpoti mit dem Transistor
einrechnet, sind 0,6V weg, und nochmal ~1V wenn man den Kram per
Darlington-Optokoppler schaltet (nicht jeder hat sich rechtzeitig mit
Photo-MOS-Relais eingedeckt ;-). Sind zwar immer noch keine -23V, aber
ganz so dämlich ist der Wert dann auch wieder nicht. Im Datasheet vom
'159 Display sind es übrigens -22V.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.07.2008 19:04

Und selbst dann sind es immer noch -23V und keine +23V...
Autor: jens (Gast)
Datum: 09.07.2008 07:49

@Benedikt

Nochmal zu dem Sharp-LCD (obwohl ich weiß, das das nicht hier her
gehört)
In dem Beitrag sind folgende Signale auf den Stecker geführt:
LP, D0-D3, XCK, M, Yd, DISP, +Versorgung(das ist klar)

Was gehört denn da zusammen, wenn ich diese Schaltung hier verwenden
will. Die Signale sind hier anders benannt und das bringt mich etwas
durcheinander.

Danke für die Hilfe!
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 09.07.2008 08:59

DISP ist ONOFF, Yd ist Frame. Die restlichen Bezeichnungen passen zu
denen im Schaltplan.
Autor: CC (Gast)
Datum: 12.07.2008 13:11

Hallo,

kann mir jemand einen passenden CCFL Inverter empfehlen?
Autor: Andreas K. (a-k)
Datum: 12.07.2008 13:16

Beispielsweise Pollin 700 637 und 700 638. Sind für 12V Betrieb.
Autor: Frager (Gast)
Datum: 17.07.2008 18:58

Ich finde das Projekt sehr sehr interessant. Mal ne Frage: Wäre es
möglich, das Display irgendwie noch mit nem Touch-Panel nachzurüsten?
Autor: Michael S. (micha-s)
Datum: 18.07.2008 23:47

Wie siehts denn mit nem fertigen Layout aus? Hat da jemand schon was
fertiges?
Autor: Layout (Gast)
Datum: 19.07.2008 09:06

Autor: kay (Gast)
Datum: 28.09.2008 19:33

hallo,
habe mir den Grafik-controller nachgebaut, allerdings sind solche lücken
wie bei Wigbert zusehen
Pin1 vom HC157 an Pin9 des HC74
als sram habe ich den von reichelt 62256-80
vielleicht könnte mir jemand einen tipp geben

mfg
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.09.2008 20:21

und am HC74 Pin 8 an 12

Wigbert
Autor: kay (Gast)
Datum: 28.09.2008 21:20

ja am hc74 pin8 und pin12 sind verbunden

kay
Autor: Gast (Gast)
Datum: 28.09.2008 22:53

Mit welcher Bildwiederholfrequenz wird das eigentlich betrieben?


80(320/4) x 244 x 70Hz = 1,36MHZ bei max.16 MIPS = ca. 12 Befehle
zwischen den PixelClocks ???

Oder hab ich da falsch gerechnet?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 29.09.2008 06:56

Die Framerate ist in der param.h einstellbar. Momentan ist 85Hz
eingestellt. Pro 4 Pixel werden etwa 3 Takte benötig, daher bleibt noch
etwas Rechenleistung für andere Aufgaben übrig.
Autor: kay (Gast)
Datum: 29.09.2008 17:08
Angehängte Dateien:

hallo,
hier nochmal ein foto ,von der ausgabe
jedes ic hat ein 100nf abblock kondensator
alle lötpunkte sind verlötet
vielleicht hat einer noch ein tipp

mfg
kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 29.09.2008 17:14

Sieht nach einem Kurzschluss gegen Masse auf einer Datenleitung oder
einer unterbrochenen Datenleitung aus. Da der Abstand 8 Pixel beträgt,
muss der Fehler irgendwo im Bereich AVR, SRAM, Eingang Multiplexer
liegen.
Autor: kay (Gast)
Datum: 30.09.2008 17:48

hallo,
so es war eine kalte lötstelle am multiplexer,
danke für die hilfe.
nur der uart macht noch einpaar sorgenm der mc restet sich ab und zu und
die cts led blinkt manchmal auf

mfg
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 30.09.2008 21:35

kay wrote:

> nur der uart macht noch einpaar sorgenm der mc restet sich ab und zu und
> die cts led blinkt manchmal auf

Du sendest vermutlich zu schnell die Daten. Sobald der Empfangspuffer
überläuft kommt einiges durcheinander. Eigentlich sollten zwar die
meisten Fehler abgefangen werden, aber es kann dennoch sein, dass
irgendwo was durchkommt und dann Mist macht.
Autor: kay (Gast)
Datum: 01.10.2008 18:52

hallo,
wenn ich ein rechteck zeichnen will
dann bekomme ich nur wirre zeuchen angezeigt baudrate ist 19200

zb.
29;für rechteck
50;x1
50;y1
139;x2
139;y2
0; füllfarbe
255; rahmenfarbe
ist das denn so richtig

mfg
kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.10.2008 19:05

Nicht ganz:
Die X Koordinaten bestehen aus 2 Bytes, da die Breite mit 320 Pixeln
nicht in ein Byte passt.
Autor: kay (Gast)
Datum: 01.10.2008 19:15

wäre es so richtig,

29;für rechteck
50;
25;
139;
89;
0; füllfarbe
255; rahmenfarbe

oder wäre es möglich ein kleines beispiel wies richtig gemacht wird
zb ein rechteck

mfg
kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.10.2008 19:20

29
100
0
110
200
0
220
255
255

Zeichnet ein volles Rechteck mit den Eckkoordinaten (100,110),
(200,220).

29
0
1
10
1
16
50
0
255

Zeichnet ein leeres Rechteck mit den Eckkoordinaten (256,10), (272,50).
Autor: kay (Gast)
Datum: 01.10.2008 19:43

danke erstmal für die hilfe,
werd mich dann mal einarbeiten
danke
mfg
kay
Autor: Sven K. (Gast)
Datum: 01.10.2008 20:10

@Benedikt:

Müsste das nicht so heissen ? Also 1 und 16 vertauscht ?

29
0
1
10
16
1
50
0
255

Gruß Sven
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.10.2008 20:11

Ja, stimmt. Da hab ich die 2 Zeilen vertauscht.
Autor: Alexander Sewergin (agentbsik)
Datum: 02.10.2008 22:07

Ich hab die Schaltung von  Benedikt K. noch nicht nachgebaut, hätte aber
jetzt schon eine Frage:

Wieso gibt es zwei unterschiedliche Schaltplanvarianten (1mal nach
Benedikt und 1 mal nach  Wigbert ). Damit meine ich die Pins 9 Q und 8/Q
des Flipflops die auf zwei Arten an den Multiplexer angeschlossen
werden. Hängt doch sicherlich vom verwendeten Display ab, stimmts?
Eventuell kann man das kurz und knapp erklären und in die .ZIP Datei
aufnehmen?


Gruß Alex
Autor: kay (Gast)
Datum: 02.10.2008 22:43

hallo,
>Ich hab die Schaltung von  Benedikt K. noch nicht nachgebaut, hätte aber
>jetzt schon eine Frage:
>
>Wieso gibt es zwei unterschiedliche Schaltplanvarianten (1mal nach
>Benedikt und 1 mal nach  Wigbert ). Damit meine ich die Pins 9 Q und 8/Q
>des Flipflops die auf zwei Arten an den Multiplexer angeschlossen
>werden.

Pin1 vom HC157 an Pin9 des HC74
am hc74 pin8 und pin12 verbinden
so funktionierts
hatte Wigbert ja auch so geschrieben da sonst pixelfehler auftreten

>Hängt doch sicherlich vom verwendeten Display ab, stimmts?
>Eventuell kann man das kurz und knapp erklären und in die .ZIP Datei
>aufnehmen?

NEIN

ich habs mir auch mehrfach nachgebaut und funktioniert

mfg
kay
Autor: kay (Gast)
Datum: 03.10.2008 23:43

hallo,
um ein bild zuladen gibs ja den befehl 16
aber wie wird das korrekt eingegeben

16
0xAA
X=10
Y=50
XS
YS
255

mein bild liegt in einer tabelle,

für eine kurze erläuterung wäre ich sehr dankbar
mfg
kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.10.2008 06:38

16
0xAA
0
0
7
10
0
Bilddaten (70 Bytes)

Damit wird ein 56x10 Pixel großes Bild mit 1bpp an Position 0,0 geladen

16
0xAA
0
0
13
10
1
Bilddaten (130 Bytes)

Damit wird ein 52x10 Pixel großes Bild mit 2bpp an Position 0,0 geladen

Je nachdem in welchem Modus man die Bilder läd, müssen die X Werte
entweder durch 8 oder durch 4 geteilt angegeben werden.
Autor: kay (Gast)
Datum: 04.10.2008 15:54
Angehängte Dateien:

hallo,
so habs mal probiert aber das display wird nur mit wirren zeichen
gefüllt,
die bilddaten habe ich mal im anhang,auch das tool womit ich die
bilddaten umwandle,
das bild hat 60x60

16
0xaa
0
0
60
60
1

bild:


vielleicht hat ja einer von euch mal ein beispiel
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.10.2008 17:44

Du lädst da doch nicht etwa eine gif Datei ins Display? Du musst die
Bildaten unkomprimiert mit 1bpp bzw. 2bpp senden. 1 Byte enthält also 8
bzw. 4 Pixel.
Autor: Kay B. (newbie)
Datum: 04.10.2008 18:51

Benedikt K. wrote:
> Du lädst da doch nicht etwa eine gif Datei ins Display?

nein

das .gif bild wandle ich um mit diesem tool,das ergibt den
zb, diese tabelle wo das bild drin ist,
bild:
.db0x47,0x49,0x46,0x38,0x39,0x61,0xF0,0x00;
.db0x40,0x01,0x80,0x00,0x00,0xFF,0xFF,0xFF;
.db0x00...................
das lade ich in den controller der das dann ans display schickt

oder habe ich das ganze verkehrt verstanden

mfg
kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.10.2008 19:18

Das Bild hat 60x60 Pixel. Bei 1bpp wären das 450Byte. Bei 2bpp 900Byte.
Deine Daten haben etwa 1,5kByte. Irgendwas passt da also nicht.
Autor: Kay B. (newbie)
Datum: 04.10.2008 23:20
Angehängte Dateien:

hallo,
habe das gif bild mit paint gespeichert und zwar monochrom ,auflösung
60x60pixel,542Bytes,dann das gif bild umgewandelt mit winbin (hat
jetzt3.04Kb)damit ichs im avr(mega128) speichern kann der es dann zum
lcd überträgt.
hab die beiden bild daten im anhang.
wenn ichs zum lcd schicke dann entsehen nur wahllose pixel.
vielleicht könnte mir einer von euch ein wenig weiterhelfen,
oder ein beispiel zum testen.

mfg
kay
Autor: kay (Gast)
Datum: 22.10.2008 18:41

hallo,
kann mir denn niemand ein beispiel nennen oder ein tool womit ich die
bmp`s umwandeln kann oder ein beispiel dass wäre sehr net.

mfg kay
Autor: kay (Gast)
Datum: 11.11.2008 19:52

hallo,
guten nabend
die funktion ein bmp anzuzeigen funktioniert nicht,zumindest bei mir
nicht,es werden immer nur wirre zeichen dargestellt vielleicht wäre es
möglich mir ein kleines stück weiter zuhelfen

mfg kay
Autor: Tobias Hagemeier (hse)
Datum: 13.11.2008 18:56

Hi!
Erstmal großes Lob für Deine Arbeit, Benedikt. Ich habe damit allerdings
ein kleines Problem (naja, noch nicht ;)).
Ich will für ein Projekt deine Schaltung verwenden, muss aber mehr
Informationen auf dem Display unterbringen als mit 40 x 20 Zeichen
möglich ist (es geht dabei vor allem um die Zeichen pro Zeile, die
Anzahl der Zeilen ist absolut ausreichend).

Gibt es eine einfache Möglichkeit, die Größe der Zeichen von 8 x 12 auf
z.B. die bei anderen Display-Controllern (z.B. Epson) üblichen 5 x 7 zu
reduzieren? Die entsprechenden Definitionen der Zeichen könnte ich
Ändern, womit ich mehr ein Problem habe, ist das Auslesen durch die
Assembler-Routine und die Positionierung auf "ganzen Zeichen", die du ja
scheinbar vor dem Aufruf der lcd_writebyte-Routine vornimmst..
Ich vermute mal die 8 x 12 sind der "glatten" Ausrichtung an einer
Byte-Grenze geschuldet? Dann wäre es vermutlich nicht so leicht das
ganze hinzukriegen..

Gibts da eine einfache Methode das zu ändern bzw. irgendwo als Konstante
festzulegen?

Danke für deine Mühe,
- Tobi
Autor: rudi (Gast)
Datum: 14.11.2008 11:28

Hallo Benedikt, hallo liebe Community.

Ich habe eben mal das Projekt "trocken", ohne es testen zu können, unter
der aktuellen Winavr Version (20080610) mit einem Atmega128 als Ziel
erfolgreich compiliert, da ich leider keinen Atmega8515 zur Verfügung
habe.
Sollte gehn, oder?

Testen kann ichs im Moment leider noch nicht...

Würde mich über ein ja, jain, nein von euch freuen ;-)

Danke Rudi
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 14.11.2008 16:31

> Gibt es eine einfache Möglichkeit, die Größe der Zeichen von 8 x 12 auf
> z.B. die bei anderen Display-Controllern (z.B. Epson) üblichen 5 x 7 zu
> reduzieren?

Ja, das sollte kein Problem sein, da die gesamte Software im Grafikmodus
läuft. Die Textzeichen werden daher als Bild in den Bildspeicher
geschrieben.

> Ich vermute mal die 8 x 12 sind der "glatten" Ausrichtung an einer
> Byte-Grenze geschuldet?

Ja, da kann man ein ganzes Bytes einfach in den Speicher kopieren. Das
geht am schnellsten, erlaubt aber auch nur das Positionieren eines
Zeichens in 8 Pixel Schritten.
Da man für andere Textgrößen sowieso aus dem Bytraster fällt, kommt man
um das Pixelweise setzen und löschen nicht herum. Mit
lcd_setpixel(x,y,color) sollte eine Erweiterung auch ohne Eingriffe in
den Assembler Code kein Problem sein.

Sowas in der Richtung sollte funktionieren (ich habs jetzt aber nicht
ausprobiert):
void glcd_writechar(unsigned short xpos, unsigned char ypos, unsigned char c, unsigned char tcol, unsigned char bcol)
{  unsigned char i,j;
  for (i=0; i<8; i++)
  {  for (j=0; j<6; j++)
    {  if (pgm_read_byte(&font6x8[c][i])&(32>>j))
        lcd_setpixel(xpos+j,ypos+i,tcol);
      else
        lcd_clrpixel(xpos+j,ypos+i,bcol);
    }
  }
}

rudi wrote:
> Sollte gehn, oder?

Leider nicht.
Die Schaltung verwendet einen Adressbereich von 256x240Bytes=60kBytes,
der mega128 erlaubt aber nur 59,75kByte für das externe RAM. Daher muss
erstens das #define DDRAM 1024 auf 4096 erhöht werden, und zweitens
werden die erste und die letze Zeile des Displays vermutlich dasselbe
anzeigen, da eben zu wenig externer Speicher adressiert werden kann.
Autor: Tobias Hagemeier (hse)
Datum: 14.11.2008 16:48

Hi Benedikt!
Ich hatte mir den ASM-Quelltext gestern abend nochmal angeguckt. Das
Konzept der Bitmuster im Array kann man ja beibehalten, muss dann nur
gucken das man jeweils nur die ersten 6 Bit des Musters benutzt.
Natürlich muss das ganze dann bitweise adressiert werden, und mit einer
entsprechenden Maske gearbeitet werden.

Meine Ideen bis jetzt:

- Zeichen laden (entsprechende Pixel-Zeile)
- Maske erzeugen (gleiche Breite wie das Zeichen und an selber Stelle)
- Bit-Offset laden (zum Zeichenanfang)
- Speicherstelle berechnen

So lange Bit-Offset > 0:
 Maske verschieben (links oder rechts..?)
 Zeichen auch verschieben (genau wie Maske)

- Maske XOR 255
- Byte b aus dem Display-RAM laden
- b = b & Maske
- b = b | Zeichen
- Byte b in Display-RAM schreiben

- Externe RAM-Speicherstelle + 1

- Zeichen laden (entsprechende Pixel-Zeile)
- Maske erzeugen (gleiche Breite wie das Zeichen und an selber Stelle)
- Bit-Offset laden (zum Zeichenanfang)
- Neues Bit-Offset = 8 - Altes Offset
- Speicherstelle berechnen

So lange Bit-Offset > 0:
 Maske verschieben (rechts oder links, andersrum wie beim ersten
Schritt)
 Zeichen auch verschieben (genau wie Maske)

- Maske XOR 255
- Byte b aus dem Display-RAM laden
- b = b & Maske
- b = b | Zeichen
- Byte b in Display-RAM schreiben

- Externe RAM-Speicherstelle - 1 (damit ist der Zustand wie vorher und
kann wie in deiner ASM-Routine fortgesetzt werden)



Das ist mal ganz schnell formuliert der Pseudocode (ASM-nah) den ich
dafür umsetzen würde. Ich habe allerdings mit Assembler bis jetzt nicht
viel gemacht (okay, bis auf ein paar Änderungen in fremdem Code) und
weiß nicht genau ob ich dafür beliebige Register benutzen kann, da der
C-Code da ja noch mit zusammen arbeiten muss. Eigentlich dürfte es kein
Problem geben wenn ich mit push & pop die entsprechenden Register
sichere, oder?
Dieser Code dürfte (sofern ich jetzt keinen Denkfehler drin habe) auch
schneller arbeiten als jedes Bit per "setpixel" zu setzen..

Danke vielmals ;)

- Tobi

P.S: Mir fällt gerade auf, das es wenn ich aus dem externen RAM auch
lese eventuell zu Fehlern kommen könnte.. Spielt das eine Rolle? Ich
meine.. die Daten werden ja eigentlich beim Lesen auch ans Display
übertragen. So ganz hab ich das aber noch nicht durchschaut was in der
Schaltung abläuft ;)
Autor: Sachich Nich (dude) Benutzerseite
Datum: 14.11.2008 17:02

Welch ein Zufall dass genau dieses Display bei mir liegt und ich Montag
Platinen fertigen lasse. Ich werde mal eine SMD-Platine
zusammenstoepseln und das ganze aufbauen, vielen Dank Benedikt!
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 14.11.2008 17:12

Tobias Hagemeier wrote:

 Das ist mal ganz schnell formuliert der Pseudocode (ASM-nah) den ich
> dafür umsetzen würde.

Sollte soweit funktionieren. Dürfte auch auf jedenfall schneller sein
als die einzelnen Pixel zu setzen, vor allem da man mit einer Maske ja
direkt alle 8 Zeilen untereinander schreiben kann.

> weiß nicht genau ob ich dafür beliebige Register benutzen kann, da der
> C-Code da ja noch mit zusammen arbeiten muss.

http://www.nongnu.org/avr-libc/user-manual/FAQ.htm...

> P.S: Mir fällt gerade auf, das es wenn ich aus dem externen RAM auch
> lese eventuell zu Fehlern kommen könnte.. Spielt das eine Rolle?

Dafür habe ich extra das Signal an PD3 eingeführt. Damit wird das
Display quasi vom Datenbus getrennt, wenn keine Daten ausgegeben werden.
Nur im Interrupt wird dieses Signal aktiviert, eine Zeile ans Display
übertragen und anschließend das Signal wieder deaktiviert.
Autor: Alexander Sewergin (agentbsik)
Datum: 22.11.2008 18:48
Angehängte Dateien:
  • preview image for 1.png
    1.png
    295,1 KB, 1097 Downloads

Hallo,

ich hab auch mal ein 320x240 Display angeschlossen, jedoch treten bei
mir  senkrechte Schlieren/Linien auf.
Ich hoffe auf dem Bild kann man erkennen, was ich meine.

Könnte es daran liegen, dass ich das Display mit Lackdraht an die
Platine angeschlossen habe und die Drähte jetzt wie Sender/Empfänger
arbeiten und Influenzen in den benachbarten Drähten verursachen? Komisch
ist aber, dass es neben der Schrift " 320x240 LCD Controller By
Benedikt" keine Schlieren auftauchen.


Als Sram benutzte ich eins mit 15ns Zugriffszeit.
Die Platine ist gelayoutet und besitzt eine Massefläche.

Gruß Alex

PS: Hier mal ein kleies Video, auf dem ich die Kontrastspannung runter
und wieder hoch regele. Durch die Kontrastspannung kann ich den effekt
zwar abschwächen, bekomme ihn aber nicht weg.

http://mitglied.lycos.de/onrop/Alex/Elektronik/Fot...

(die Hintergrundgeräusche stammen von meinem Radio.... diese treten
jedoch nur dann auf, wenn das LCD im Betrieb ist. Dabei ist das Radio 2
m vom LCD entfernt.)
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 22.11.2008 19:10

Alexander Sewergin wrote:

> ich hab auch mal ein 320x240 Display angeschlossen, jedoch treten bei
> mir  senkrechte Schlieren/Linien auf.

Dieser Effekt nennt sich Übersprechen. Er tritt vor allem an großen
senkrechten oder waagrechten Linien auf, was hier der Fall ist.

Daran kann man leider recht wenig machen, das liegt am LCD. Vor allem
blau-weiße sind davon stark betroffen, da diese einen Knick in der
optischen Kennlinie haben: Zwischen blau und weiß kommt schwarz, was man
auch schön im Video sehen kann.
Das ist der Grund, wieso ich keine blau weißen LCDs verwende, obwohl
blau-weiß eigentlich gut lesbar ist.
Autor: Alexander Sewergin (agentbsik)
Datum: 22.11.2008 19:15

Kann man denn gegen das Übersprechen nichts machen?
Wieso tritt dieser Effekt eigentlich nur in der vertikalen Richtung auf?

Ich werde mal ein bischen mit den Frames per Seconde rumspielen oder
halt auf Linienzeichnungen verzichten.



Gruß Alex
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 22.11.2008 19:35

Man könnte die Ansteuerung etwas anpassen, eventuell mit passendem
n-line usw. aber das ist alles nicht so einfach und es verursacht andere
Störerscheinungen.

Das Phänomen tritt hauptsächlich vertikal auf, da die Einschaltdauer
einer Zeile konstant ist (nämlich 1/240). Die Einschaltdauer einer
Spalte dagegen variiert je nachdem wie viele Pixel in dieser Spalte
aktiv sind (nämlich 0 bis maximal 240). Insgesamt spielen da sehr viele
Faktoren eine Rolle (Widerstände der Leiterbahnen, Kapazitäten im LCD
usw.), hier ist das ganze einigermaßen beschrieben:
http://www.solomon-systech.com/pdf/Crosstalk%20Imp...
Autor: Alexander Sewergin (agentbsik)
Datum: 22.11.2008 23:53

Es scheint wirklich am LCD zu liegen. Ich habe das s/w LC-Display von
Pollin angeschlossen und man erkennt keine vertikalen Linien mehr.

So langsam verstehe ich auch, wieso viele passive Displays auf dem Markt
für wenig Geld verkauft werden. Die Bildqualität ist wohl nur mit viel
Mühe gut einstellbar.


Gruß Alex
Autor: Alexander Sewergin (agentbsik)
Datum: 25.11.2008 19:01
Angehängte Dateien:

Ich bekomme immer eine Fehlermeldung (AVRStudio4 + WinAVR20081118rc2)
wenn ich das Programm neu compilieren möchte. Eventuell liegt es einfach
an meinem Unvermögen mit dem GCC Compiler umzugehen. Auf dem Bild könnt
ihr sehen, welche Headers ich eingefügt habe. Was muss ich mit lcd.c und
uart.c machen? Die sind derzeit in dem selben Ordner, wo auch die main.c
ist. Muss ich diese c. Files irgendwo einbinden?


Gruß Alex
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.11.2008 19:41

Alexander Sewergin wrote:
> Muss ich diese c. Files irgendwo einbinden?

Ja und die .S auch.
Autor: Nils (Gast)
Datum: 02.12.2008 19:47
Angehängte Dateien:

Ich habe hier ein sp14q002 Display (Datenblatt im Anhang).
So wie ich das hier sehe kann ich dieses Display mit diesem
Selbstbaucontroller verwenden, nur wollte ich nochmal sicher gehen,
bevor ich alle Teile bestelle, die ich brauche, und daraus wird dann
doch nichts...
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 02.12.2008 20:10

Ja, die Ansteuerung ist möglich.
Autor: Nils (Gast)
Datum: 03.12.2008 10:50

Ok, vielen Dank!

Nun habe ich noch eine Frage, den Optomosfet kann ich ja, so wie ich das
sehe rauslassen, oder?
Wenn ja, dann muss ich doch VLCD einfach mit an die Anode von D1 und
ONOFF an PE0 (INT2) am Controller oder?
Im Schaltplan ist ONOFF nicht als invertiert beschriftet, in meinem
Datenblatt ist das DISP.OFF(Low-Aktiv). Dann muss ich doch noch das
Signal (am einfachsten mit einem Transistor, oder?) inververtieren??
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 03.12.2008 11:37

Nils wrote:

> Nun habe ich noch eine Frage, den Optomosfet kann ich ja, so wie ich das
> sehe rauslassen, oder?

Ja.

> Wenn ja, dann muss ich doch VLCD einfach mit an die Anode von D1 und
> ONOFF an PE0 (INT2) am Controller oder?

Ja.

> Im Schaltplan ist ONOFF nicht als invertiert beschriftet, in meinem
> Datenblatt ist das DISP.OFF(Low-Aktiv). Dann muss ich doch noch das
> Signal (am einfachsten mit einem Transistor, oder?) inververtieren??

Nein.
Onoff: High = On, Low = Off
DispOff\ ist Low aktiv, Low deaktiviert also das Display.
Direkt verbinden und das Display sollte funktionieren.
Autor: Kay B. (newbie)
Datum: 03.12.2008 18:49

hallo,
ich hab nochmal eine frage bezüglich eines bmp zu laden,
die anderen funktionen wie rechtecke,linien, kreise usw funktionieren
bestens aber wenn ich ein bild laden will werden nur wirre pixel
dargestellt.

vielleicht wäre es möglich mal drüber zuschauen
was ich verkehrt mache

mfg
kay


ldi ZL,LOW (bmp*2)                ; Adresse des Strings in den
ldi ZH,HIGH (bmp*2)               ; Z-Pointer laden

;macro
;bmp mit 60x60 pixel
picture 0xAA,0,0,60,60,1


bild0:
lpm                               ; Erstes Byte nach R0 lesen
tst R0                            ; R0 auf 0 testen
breq _end                         ; wenn 0 verzw. zu _end
rcall senden                      ; UP "ausgeben auf uart
adiw zl, 1                        ; Adresse des Z-Pointers um 1 erhöhen
rjmp bild0                        ; wieder zum Anfang



senden:
mov r17,r0                        ;r0 nach r17 kopieren



send:
sbis UCSR0A,UDRE0    ; Warten bis UDR für das Byte bereit ist
 rjmp send
 OUT UDR0, r17
ret




_end:




;bilddaten
bmp:
.db 0, 0, 0, 0, 0, 11, 240, 0,
.db 0, 0, 0, 0, 3, 112, 0, 0,
.db 0, 0, 0, 0, 180, 0, 0, 0,
.db 0, 0, 0, 30, 0, 0, 0, 0,
.db 0, 0, 7, 192, 0, 0, 0, 0,
.db 0, 0, 248, 0, 0, 0, 0, 0,
.db 0, 31, 1, 228, 128, 0, 0, 0,
.db 7, 224, 255, 248, 0, 0, 0, 1,
.db 124, 63, 255, 0, 0, 0, 0, 32,
.db 135, 253, 224, 0, 0, 0, 0, 33,
.db 255, 206, 0, 0, 0, 0, 92, 57,
.db 161, 192, 0, 0, 0, 6, 3, 16,
.db 56, 0, 0, 0, 0, 64, 112, 223,
.db 0, 0, 0, 0, 0, 15, 0, 224,
.db 0, 0, 0, 0, 0, 176, 112, 0,
.db 0, 0, 0, 0, 2, 63, 0, 0,
.db 1, 160, 0, 0, 96, 0, 0, 127,
.db 248, 64, 0, 0, 0, 0, 11, 231,
.db 136, 0, 0, 0, 0, 0, 185, 128,
.db 0, 0, 0, 0, 0, 15, 128, 251,
.db 128, 0, 0, 0, 0, 64, 127, 252,
.db 0, 0, 0, 0, 2, 127, 247, 96,
.db 0, 0, 0, 0, 31, 243, 210, 0,
.db 0, 0, 0, 0, 254, 22, 192, 0,
.db 0, 0, 0, 15, 208, 56, 0, 0,
.db 0, 0, 0, 251, 10, 0, 0, 0,
.db 0, 0, 0, 127, 0, 0, 0, 0,
.db 0, 0, 3, 192, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 2, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 6, 0, 0, 0, 0, 0, 0, 1,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 0, 0, 0, 0, 0, 0, 0,
.db 0, 16, 0, 0, 0, 0, 0, 0,
.db 7, 0, 0, 0, 0, 4, 0, 1,
.db 224, 0, 0, 0, 0, 0, 0, 126,
.db 0, 0, 0, 0, 0, 0, 127, 224,
.db 0, 0, 0, 0, 0, 127, 252, 0,
.db 0, 0, 0, 0, 11, 255, 192, 0,
.db 0, 0, 0, 0, 63, 248, 0, 0,
.db 0, 0, 3, 131, 255, 128, 0, 0,
.db 0, 1, 252, 127, 240, 0, 0, 0,
.db 0, 63, 255, 158, 0, 0, 0, 0,
.db 0, 255, 248, 224, 0, 0, 0, 0,
.db 7, 190, 28, 0, 0, 0, 0, 0,
.db 26, 7, 128, 0, 0, 0, 0, 0,
.db 251, 224, 0, 0, 0, 0, 0, 1,
.db 248, 0
.db 0,0
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 03.12.2008 19:30

Kay B. wrote:

>
> vielleicht wäre es möglich mal drüber zuschauen
> was ich verkehrt mache

> bild0:
> lpm                               ; Erstes Byte nach R0 lesen
> tst R0                            ; R0 auf 0 testen
> breq _end                         ; wenn 0 verzw. zu _end

Da dein erstes Datenbyte schon 0 ist, wird die Schleife direkt
abgebrochen und gar nichts gesendet.
Besser ist es mit einem Zähler eine feste Anzahl an Bytes zu senden, da
man nie weiß welche Bytes in den Bilddaten enthalten sind.
Autor: Kay B. (newbie)
Datum: 03.12.2008 19:41

könnte mann das so machen


ldi r18,7      ;zähler für daten = 8
bild0:

lpm                               ; Erstes Byte nach R0 lesen
dec r18                           ;zähler für daten
rcall senden                      ; UP "ausgeben auf uart
brne bild0                        ;alle 8bytes durch?
adiw zl, 1                        ; Adresse des Z-Pointers um 1 erhöhen
ldi r18,7                         ;zähler für daten = 8
rjmp bild0                        ; wieder zum Anfang

mfg kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 03.12.2008 20:00

Wieso lädst du den Zähler immer wieder neu innerhalb der Schleife?
Das brne und das dec stehen auch an komplett falschen Stellen.
Autor: Kay B. (newbie)
Datum: 03.12.2008 20:19

hallo,
so müsste es doch gehen
wenn der der befehl lpm alle 8byte gelesen hat dann wird der z-pointer
um eins erhöt oder bin ich da auf den holzweg?`


ldi r18,7                           ;zähler für daten = 8
bild0:
lpm r17,z+                         ; Erstes Byte lesen
rcall senden                       ; UP "ausgeben auf uart
dec    r18
brne   bild0
adiw zl, 1                         ; Adresse des Z-Pointers um 1 erhöhen
rjmp bild0                         ; wieder zum Anfang


senden:
sbis UCSR0A,UDRE0    ; Warten bis UDR für das Byte bereit ist
 rjmp senden
 OUT UDR0, r17
ret




_end:
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 03.12.2008 20:32

Kay B. wrote:
> hallo,
> so müsste es doch gehen
> wenn der der befehl lpm alle 8byte gelesen hat dann wird der z-pointer
> um eins erhöt oder bin ich da auf den holzweg?`

Ja, du machst das komplett falsch. Der z-pointer muss nach jedem Byte
erhöht werden.

Hier mal ein Ausschnitt mit dem ich Daten aus dem Flash in der RAM
kopiere. Er zeigt aber zumindest das Prinzip.
ldi ZL, low(2*BMP)
ldi ZH, high(2*BMP)

ldie XL, low(ramstart)
ldie XH, high(ramstart)

ldi r16, count

Loop:
  lpm temp, Z+
  st X+, temp
  dec r16
  brne Loop
Autor: Kay B. (newbie)
Datum: 03.12.2008 20:35

werd das morgen mal versuchen

danke nochmals
mfg
kay
Autor: Kay B. (newbie)
Datum: 04.12.2008 18:37
Angehängte Dateien:

hallo,
so habe die leseschleife etwas umgeändert,es werden nur wirre pixel
dargestellt.
ich weiss aber nicht ob die tabelle mit den bilddaten so überhaupt
richtig ist,das bild hab ich mal im anhang.

mfg kay



 ldi r18,7      ;zähler für daten = 8bytes pro tabellen zeile

 bild0:
 lpm r17,z+                        ; Erstes Byte  lesen
 rcall senden                      ; UP "ausgeben auf uart
 adiw zl, 1                        ;Adresse des Z-Pointers um 1 erhöhen
                                   ;nächste zeile lesen
 dec r18                           ;zähler für daten
 brne bild0                        ;alle 8bytes durch?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.12.2008 18:54

Kay B. wrote:

>  ldi r18,7      ;zähler für daten = 8bytes pro tabellen zeile

Wieso 8 Bytes? Das Bild ist 60x60 Pixel = 3600Bits = 450Bytes groß.

Das adiw ist auch überflüssig, da dies lpm z+ schon erledigt.
Autor: Kay B. (newbie)
Datum: 04.12.2008 19:48

egal wie ich die lese-schleife schreibe,es kommt wiegeseagt nur
pixelsalat raus

schade das das nicht funktioniert

mfg
kay
Autor: Kay B. (newbie)
Datum: 05.12.2008 17:00

hallo Benedikt,
habe mir mal den  beitrag"LCD Controller für 640x480 LCD mit mega8515"
angesehen und das logo was du da verwendest mal probiert und das
funktioniert,
also ist meine bild-tabelle nicht inordnung
aber wie wandelst du denn die bmp`s um?
vieleicht könntest du mir ein wenig weiterhelfen
mfg kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 05.12.2008 17:13

Ich speichere das Bild als BMP in Schwarzweis mit 1bit pro Pixel. Dann
entferne ich die ersten 62Bytes der Datei, der Rest sind die reinen
Bilddaten.
Einfacher geht es z.B. mit solchen Tools (davon gibt es etliche, das war
jetzt das nächstbeste das ich gefunden habe):
http://en.radzio.dxp.pl/bitmap_converter/
Autor: Kay B. (newbie)
Datum: 05.12.2008 19:10
Angehängte Dateien:

hallo,
so habe jetzt mal das programm probiert
egal welche auflösung das bild hat aber ich bekomme nur  zeichensalat
raus,habe die datei im anhang,das bild hat eine auflösung von 132x176
Pixel

vielleicht könntest du mir nochmal weiterhelfen
mfg
kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 05.12.2008 19:25
Angehängte Dateien:

Probier das mal
Autor: Kay B. (newbie)
Datum: 05.12.2008 20:01

habs grad mal ausproniert das haut sogar hin,aber warum haut das bei mir
nicht hin,132x176 = 23232byte´s/8 = 2904byte bei meinen convertierungen
komme ich nie ganz auf die byte`s

mfg
kay
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 05.12.2008 20:25

Die Datei habe ich mit dem Programm erstellt, Einstellung: horizontal
Dann nur noch das C Array passend für den Assembler angepasst (jeweils
ein .db am Anfang von jeder Zeile)
Autor: Nils (Gast)
Datum: 07.12.2008 14:04

Soo jetzt kamen meine Teile von Reichelt erst, doch statt einem Latch
war ein FlipFlop drin...

Ich habe hier noch den Bustreiber 74LS245 liegen.
http://www.ralfzimmermann.de/ttl_ic/0e34.html

In die Schaltung soll ein 74HC245.
http://www.ralfzimmermann.de/ttl_ic/0e39.html

Nun habe ich mir das angesehen und wenn ich DIR von 245er auf H lege und
dann G\ nochmal invertiere und dann an PE1 (ALE) von uC gehe, müsste das
doch eigentlich klappen?

Theorethisch, aber dann ist ja noch die Geschwindigkeitsfrage, muss es
unbedingt ein HC sein oder reicht der LS auch (wenn das überhaupt so
nutzbar ist.) ?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 07.12.2008 14:16

Nils wrote:

> Nun habe ich mir das angesehen und wenn ich DIR von 245er auf H lege und
> dann G\ nochmal invertiere und dann an PE1 (ALE) von uC gehe, müsste das
> doch eigentlich klappen?

Nein, der 245er ist ein Bustreiber, du brauchst aber ein Latch. Mit
einem 574 würde es eventuell auch noch gehen, aber mit einem 245 auf
keinen Fall.
Autor: Blitz Lampe (blitzlampe)
Datum: 02.01.2009 16:31
Angehängte Dateien:

Hallo,

ich habe mal eine Platine im Eagle zu dem Thema gemacht.

Die IC´s sind alles DIL Bausteine es kommen nur ein paar wenige SMD
Kondensatoren und Widerstände zum Einsatz. Habe die Bauform 1206 gewählt
weil sie sich von Hand noch sehr gut löten lassen.

Auf dem Bord ist eine 5V Spannungsversorgung und die -22V für das
Display enthalten.

Habe mich an das Orginal von Benedikt K. gehalten.

Für den Anschluss des Displays habe ich eine Stiftleiste vorgesehen
(Raster 2,5mm)

Die Belegung ist

1  -> Frame
2  -> LOAD
3  -> CP
4  -> VDD (5V)
5  -> GND
6  -> VSS (-22V) Diese müsste mit dem NAN YA LTBE9T372G1K überein stimen
7  -> D0         Nur bei M AC hab ich keine Angabe gefunden was es ist!
8  -> D1
9  -> D2
10 -> D3
11 -> Display Off
12 -> M AC

Eventuell besteht ja Interesse und man könnte eine Sammelbestellung von
Platinen loslassen.
Autor: Kay B. (newbie)
Datum: 02.01.2009 21:35

hallo,
 ich hätte Interresse

mfg
Autor: Max (Gast)
Datum: 03.01.2009 11:34

Hallo,

hat wer 2 von diesen Winbond S-Rams abzugeben??

Dann hätte ich auch interesse an einer Platine

MFG Max
Autor: Blitz Lampe (blitzlampe)
Datum: 03.01.2009 17:08
Angehängte Dateien:

Hallo,

Habe heute die Größe des Boards auf 100mm x 80mm geschrumpft.

hab mal die Preise bei Bilex im Kalkulator berechnen lassen und er sagt
mir das eine Leiterplatte, 2-lagig, mit Lötstoplack und Verzinnung ca.
7,5€ kostet.

Finde das einen guten Preis.

Die Berechnung gilt für 12 Eurokarten also 24 einzelne Leiterplatten.

Alle die Interesse haben einfach melden dann würde ich eine Bestellung
abschicken.

Können auch gern einen anderen LP Hersteller nehmen, war nur so die
erste Adresse wo ich geschaut habe.

Eventuell schaut auch einer nochmal über die Platine quer, um eventuell
Fehler die sich eingeschlichen haben noch zu ändern.
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 03.01.2009 17:18

@Blitzlampe: Warum sind die meisten Leiterbahnen auf den TOP Layer ( Rot
), das heisst du müsstest jede Fassung oder IC von oben festlöten, wäre
sehr umständlich. Da am besten man den Buttom (Blau ) Layer zum löten
verwendet wird entsprechend den Layer wechseln.

Sind die Platinen Durchkontaktiert und mal getestet worden ?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 03.01.2009 17:26

Avr Nix wrote:
> @Blitzlampe: Warum sind die meisten Leiterbahnen auf den TOP Layer ( Rot
> ), das heisst du müsstest jede Fassung oder IC von oben festlöten, wäre
> sehr umständlich. Da am besten man den Buttom (Blau ) Layer zum löten
> verwendet wird entsprechend den Layer wechseln.

???
Jede Bohrung ist gleichzeitig eine Durchkontaktierung und kann somit von
beiden Seiten gelötet werden.
Autor: Picht (Gast)
Datum: 03.01.2009 17:50

>Jede Bohrung ist gleichzeitig eine Durchkontaktierung und kann somit von
>beiden Seiten gelötet werden.

na, ja für Profis sei das Löten wohl kein Problem, ich hatte meine
Platine so geändert, das nur noch jede 2. Fassung von beiden Seiten
gelötet werden braucht. Oder anders gesagt, genügend Platz für den
Lötkolben da ist.

Wigbert
Autor: Blitz Lampe (blitzlampe)
Datum: 03.01.2009 18:04
Angehängte Dateien:

Natürlich sind die Platinen Durchkontaktiert,
Die meisten Leiterbahnen sind übriegens auf der Seite der Leiterplatte
wo nicht die IC´s sitzen. Es gehen nur wenige Leiterzüge unter den IC´s
lang (BOTTOM Layer)

Habe im Anhang noch mal das Layout gespiegelt wer damit besser
zurechtkommt ist aber die selbe Platine.
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 03.01.2009 20:16

Wollte nicht deine Platine nieder machen, aber wenn es eng wird und du
keine Präzisionfassung   benutzt wird man mit dem löten Schwierigkeiten
haben, da man nicht von oben Löten kann bzw kaum dran kommt.

Wenn man auf top Layer Leitungen weg gehen und auf den Bottom layer
gelötet wird  hast du keine Verbindung.
....aber wenn alle Durchkontaktiert (hülse) sind sollte das nicht
passieren

Ich nehmen auch mal eine Platine.

Wird der Spannungsregler nicht zu warm ?
Autor: Blitz Lampe (blitzlampe)
Datum: 04.01.2009 12:29
Angehängte Dateien:

Kritik ist immer gern willkommen solange sie hilfreich ist.

Kenne das Problem auch, wenn man Platinen bügelt muss man schon drauf
achten wie und wo man die Via´s setzt weil es schnell passiert das man
nicht mehr rankommt zum löten. Aber bei einer "richtigen" Platine sind
alle Bohrungen durchkontaktiert und somit reicht es wenn man eine Seite
verlötet.

Die Platine lässt sich ohne Akrobatik löten und bestücken, das Bild im
Anhang zeigt wo alles gelötet werden muss. Jeder grüne Punkt ist eine
Lötstelle + die SMD Bauteile.
Es muss nur diese Seite gelötet werden!

Das Bild zeigt übrigens die Unterseite und die IC's Sitzen auf der
anderen Seite.

Der 7805 wird bei 12V Eigangsspannung und einem Laststrom von 0,1A ca.
46°C + Umgebungstemp warm.

Wenn jemand, der die Schaltung schon aufgebaut hat, mal den Strom messen
könnte wäre das super. Somit könnte man abschätzen wie hitzig es wird
und ggf. noch gegensteuern.
Autor: Blitz Lampe (blitzlampe)
Datum: 04.01.2009 12:49
Angehängte Dateien:

Hier nochmal beide Seiten der Platine.
Autor: Picht (Gast)
Datum: 04.01.2009 13:58
Angehängte Dateien:

>Kritik ist immer gern willkommen solange sie hilfreich ist.

Stimmt.

Ich hatte damals die Sockelpins fürs Durchkontaktieren genutzt,
um Einzelstücke selbst fertigen zu können.

Industriell hergestellte Platinen haben natürlich Durchkontaktierungen.

Wenn es zu einer Sammelbestellung kommt, vielleicht kannst Du die
Stecker fürs Pollindisplay(wenn Bedarf) zulegen. Die gibt es nun mal
für ein paar Cent (zB.Farnell).

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.01.2009 14:19
Angehängte Dateien:

Ich habe mal die Schaltung und das Layout kontrolliert, passt alles
soweit, bis auf eine Kleinigkeit, die allerdings mein Fehler ist:
Der CLK Eingang des FlipFlops das M/AC erzeugt, muss an Frame/FLM und
nicht an LP/Load. Für die beiden Pollin LCDs ist das aber egal, denn die
erzeugen dieses Signal intern selbst. Daher ist es mir bisher nicht
aufgefallen, dass dies falsch war. Nur andere LCDs (wie z.B. Hitachi
SP14Q001 oder das Sharp LCD das es noch bei Pollin gibt), benötigen
dieses Signal.
Den korrigierten Schaltplan habe ich mal angehängt.

Ich würde den TXD Pin auch noch mit rausführen. Er wird zwar momentan
nicht benötigt, aber falls man doch mal irgendetwas erweitert, (z.B.
Zurücklesen der Daten), dann kann man ihn verwenden.

Das Optorelais ist leider bei Pollin nichtmehr erhältlich und daher nur
noch teuer/schwer zu bekommen. Das Pollin LCD besitzt einen ON/OFF Pin,
daher ist ein Schalten der VLCD nicht unbedingt notwendig. Ein
(Löt)Jumper um diesen zu überbrücken, wäre daher vielleicht sinnvoll.
Autor: Blitz Lampe (blitzlampe)
Datum: 04.01.2009 19:30
Angehängte Dateien:

So habe den CLK auf FLM FRAME gelegt und einen Jumper zum überbrücken
für das Optorelais hinzugefügt.

Die UART Schnittstelle habe ich jetzt neu gemacht. Jetzt ist eine 4
polige, 2,5mm Raster Stiftleiste vorgesehen, mit folgender Belegung.

Pin 1 -> RxD
Pin 2 -> TxD
Pin 3 -> GND
Pin 4 -> RTS (BUSY)

Habe die Displayschnittstelle jetzt auch mit 2,5mm Stiftleiste versehen,
da die andere schwierig zu bekommen ist. Desweiteren sind die Signale
jetzt beschriftet.

@  Picht
Die Displayschnittstelle habe ich extra mit der Stiftleiste gemacht,
damit ist die Platine universell für viele Display´s und man kann
Flachbandkabel direkt einlöten. Wer will kann sich immer noch eine
kleine Adapterplatte mit einer passenden Buchse machen und diese auf die
Stiftleiste Löten oder stecken.
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 04.01.2009 21:33

Wegen den RAM nicht alle sind sp breit es gibt auch die schmalen die wie
ein ATMega 8 aussehen. könntest du noch eine Leiste Paralle zu einer
Seite einbauen , sodas man beide Breiten einbauen kann, das wäre sehr
Universell.
Oder sonst müsste man extra eine Adapterplatine basteln, so könnte man
den schmalen 28poligen Fassung oder den Breiten 28poligen Fassung
nehmen.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.01.2009 22:12

Avr Nix wrote:
> Wegen den RAM nicht alle sind sp breit es gibt auch die schmalen die wie
> ein ATMega 8 aussehen. könntest du noch eine Leiste Paralle zu einer
> Seite einbauen , sodas man beide Breiten einbauen kann, das wäre sehr
> Universell.

Ja, das wäre sinnvoll. Die schnellen SRAMs sind nämlich alle nur in der
schmalen Ausführung erhältlich. Für die langsamen RAMs muss die Software
angepasst werden (lcd.c, Waitstates aktivieren).
Autor: Blitz Lampe (blitzlampe)
Datum: 04.01.2009 23:23
Angehängte Dateien:

Ok, habe es hinzugefügt.
Autor: Blitz Lampe (blitzlampe)
Datum: 05.01.2009 18:12

So war heut nochmal bei Bilex und hab jetzt einen Preis von 8€ für
folgende Platine
12 x LEITERPLATTEN   (ergibt 24 einzelne Platinen)
2-Lagig Durchkontaktiert
100x160 mm
Materialstärke: FR4 1.55mm;
Oberfläche: Chemisch Gold(RoHs konform)
Cu Außenlagen Enddicke: 70 µm;
Lötstop: doppelseitig grun
Positionsdruck: ohne
  
Netto:  147.39 €
MwSt:    29.48 €
Brutto: 176.87 € 
Versand  14.00 € 


Verzinnt oder vergoldet macht im Preis kein unterschied genauso wie die
Kupferstärke.
Also hab ich mich für Gold entschieden, das lässt sich auch noch nach
langer Zeit super löten.

Also melder wer eine will, bin erst bei 6 Eurokarten.
Autor: Kay B. (newbie)
Datum: 05.01.2009 19:27

hallo Blitz Lampe,
ich hätte gern 6 stück.
mfg kay
Autor: Blitz Lampe (blitzlampe)
Datum: 05.01.2009 22:02

Ok, es haben sich verschiedene Leute gemeldet und ihr Interesse
angemeldet.
Vielen dank erstmal!

Ich würde dann am WE, eventuell kommen bis dahin noch ein paar
Bestellungen hinzu, Platinen ordern.

Wenn es bei den 12 Platten bleibt wären es 8€ + Porto zu euch. Würde das
mit der Post im gepolsterten Umschlag verschicken. Versandkosten fallen
nur die von mir zu euch an.

Würde mich mal bis zum WE schlau machen (wegen Porto) und euch dann am
WE die Bankdaten und den Preis mailen. Will diese nicht unbedingt im
Netz veröffentlichen nicht das mir die anderen 6*10^9 Leute auf der Erde
auch noch Geld überweisen ;-) man weiß ja nie.
Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum: 06.01.2009 02:09

Ich wär auch mit 2 Platinen dabei (hab nur ein Display, aber man weiß ja
nie ;) )
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 06.01.2009 19:39

Ach so, habe jetzt nicht darauf geachtet, aber mache eine
Schriftmarkierung was oben und was unten ist auf den Platinen.
Autor: Blitz Lampe (blitzlampe)
Datum: 06.01.2009 21:35
Angehängte Dateien:

Habe heut noch die gewünschte Kennzeichnung der Seiten hinzugefügt.
Hoffe das es so gemeint war.
Ansonsten einfach anmeckern :-)
Autor: Blitz Lampe (blitzlampe)
Datum: 06.01.2009 21:43
Angehängte Dateien:

Hoffe man erkennt es hier etwas besser.

Im Top Layer steht "TOP + Bauteilseite" und im Bottom Layer habe ich
"Bottom + Lötseite" eingefügt.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.01.2009 21:47

Versuchs mal als png oder gif, das sollte besser lesbar sein, und
kleinere Dateien erzeugen.
Autor: Hugga Bugga (Gast)
Datum: 06.01.2009 21:58

>Versuchs mal als png oder gif, das sollte besser lesbar sein, und
>kleinere Dateien erzeugen.

Ist Falk im Urlaub ?
Autor: Blitz Lampe (blitzlampe)
Datum: 06.01.2009 22:58
Angehängte Dateien:

Habe es als Eagle Datei und als als Bild ins das ZIP File gepackt.
Autor: Florian K. (makrocontroller)
Datum: 08.01.2009 08:35

Ich bestelle drei Platinen (falls jetzt noch möglich).

Es wäre jedoch zu überlegen, ob man auf dem Board noch eine Schaltung
zur Erzeugung der HV Wechselspannung für die Hintergrundbeleuchtung
vorsieht (sicher, dann sollte man einen Berührschutz haben, z.B. Einbau
in ein Gehäuse). Und wer diese Schaltung nicht braucht, muss die
Bauteile ja nicht einlöten. Ich habe folgende Schaltung getestet:
http://www.elektronik-kompendium.de/forum/forum_en...
Sie zieht etwa 300 mA bei 5 V Versorgungsspannung und bei
angeschlossenem Display (nicht 12 V wie auf dem Bild). Ich habe die
Schaltung etwas modifiziet: Widerstände 1K, Transistoren 2N3055, mehr
"Rückkopplungswindungen", Kondensator überflüssig (ich verstehe
prinzipiell den Zweck des Kondensators, aber bei meinen Tests ergab sich
dadurch kein besserer Wirkungsgrad). Vielleicht könnte man den
Wirkungsgrad aber noch mit einer ZVS Schaltung verbessern, die ich
jedoch noch nicht getestet habe:
http://img236.imageshack.us/img236/5286/flybackdri...
Sie scheint zwar für einen Zeilentrafo konzipiert zu sein, dürfte sich
aber auch für ca. 500 V Ausgangsspannung anpassen lassen (geeigneter
Ferrtikerntrafo).

Noch eine Frage: Hat jemand eine Ahnung, wie stark sich die
Bildwiederholungsrate verringert, wenn man die 70 ns SRAMs von Reichelt
benutzt und das Programm entsprechend anpasst ?
Autor: Blitz Lampe (Gast)
Datum: 08.01.2009 13:47

Einen CCFL Inverter würde ich nicht auf die Platine machen.

1. Bekommt man diese günstiger gekauft, als man es selber bauen kann.
2. Es schwierig ist einen Trafo zu bekommen bzw selber zu wickeln.
3. Er die Verlustleistung am 7805 extrem in die Höhe treibt.
4. Weil der gekaufte Inverter oder ein ausgebauter sicher funktionieren.
5. Es nicht abzuschätzen ist ob die Störung des Wandlers die Funktion
der Schaltung beeinflussen.
6. Kein Platz mehr ist.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 08.01.2009 14:07

Florian K. wrote:

> Noch eine Frage: Hat jemand eine Ahnung, wie stark sich die
> Bildwiederholungsrate verringert, wenn man die 70 ns SRAMs von Reichelt
> benutzt und das Programm entsprechend anpasst ?

An sich garnicht, da sich der LCD Controller soviel Zeit nimmt wie er
braucht. Allerdings benötigt ein Speicherzugriff dann 3 statt 2 Takte,
was die CPU Auslastung auf >80% erhöht. Die Grafikbefehle werden dann
entsprechend langsamer ausgeführt.
Autor: Florian K. (makrocontroller)
Datum: 08.01.2009 15:54

Zum Thema fertige CCFL Inverter: Hier gibt es einen:
http://www.lc-design.de/shop/de/k006u005s001.htm
Allerdings kostet es erst wieder Versandkosten ...
Die bei Pollin
http://www.pollin.de/shop/detail.php?pg=NQ==&a=ODc...
oder
http://www.pollin.de/shop/suche_ergebnis.php?S_TEX...
wären wohl auch geeignet, allerdings stört mich, dass man dann extra
noch 12 V Versorgungsspannung braucht. Aber vielleicht kann man sie ja
umbauen (Windungszahlen, Widerstände, Kondensatoren), so dass sie auch
bei 5 V einen ausreichenden Output bringen ?

P.S: Ich bestelle trotzdem 3 Platinen, auch wenn der CCFL Inverter
darauf keinen Platz mehr hat.
Autor: nix (Gast)
Datum: 08.01.2009 16:09

Der CCFL Inverter braucht für das Display braucht nicht umbedingt 12V,
ich habe ein Inverter der für 12V ist für die Hindegrundbeleuchtung auf
7..8V laufen. Das sollte man ausprobieren.
Autor: Blitz Lampe (blitzlampe)
Datum: 10.01.2009 13:14

Hallo,

habe soeben die Bestellung abgeschickt.

Habe allen eine Mail geschrieben.
Sollte ich einen vergessen haben einfach mir noch ne Mail schreiben.

Laut Bilex sollen die Platten bis zum 20. gefertigt werden und dann
müssten sie 3-4 Tage später bei mir eintreffen.

Werde Sie dann umgehend an euch weiter leiten.


!!!! Habe auch noch ein paar Platten über also wer noch eine will kann
sich immer noch melden!!!!!
Autor: Rainer Deutsch (dl1auz)
Datum: 11.01.2009 01:02

Hallo
falls noch verfügbar, würde ich  2 Platinen nehmen
Rainer
Autor: Adalbert (Gast)
Datum: 19.01.2009 22:12

Hallo
falls noch verfügbar, würde ich auch 2 Platinen nehmen
Adalbert
Autor: Blitz Lampe (blitzlampe)
Datum: 23.01.2009 18:07

Hallo,

habe heut eine Mail bekommen, die Platinen sollen am 26-27.01 bei mir
einschlagen, werde sie dann umgehend an euch verschicken.
Autor: Blitz Lampe (blitzlampe)
Datum: 28.01.2009 20:01
Angehängte Dateien:

Hallo,

gestern sind die Platinen an euch raus. Hoffe das ihr sie bald bekommt.
Habe eine mal fix aufgebaut um zu schauen ob alles soweit passt.

Es sind noch 2 Stück über also wer noch eine oder beide will kann sich
melden.

Im Anhang ist der Funktionstest zu sehen.
Autor: Johannes M. (johannesm)
Datum: 29.01.2009 18:15

Ich hätte gerne die beiden Platinen. Habe dir eine Nachricht geschickt.
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 30.01.2009 17:14

@Blitzlampe: Danke, die Platinen sind angekommen.

AVRNix
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 14.02.2009 15:46

Hallo,
Welche Häkchen müssen in PonyProg gesetzt werden für die
Schaltung/Platine von Blitzlampe?

Danke für die Hilfe.
Autor: Blitzlampe (Gast)
Datum: 15.02.2009 12:02

Du musst den Atmega auf alle fälle auf 16MHz ext. Quarz stellen

Schau dir mal die Seita an da findest du auch die Einstellungen für
PonyProg.

http://www.engbedded.com/cgi-bin/fc.cgi/?P_PREV=AT...
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 19.02.2009 12:42
Angehängte Dateien:

Hallo zusammen,

auf dem Display ist nur auf der rechten Seite ein Streifen Muster drauf.
Woran kann das liegen, ich habe alle Lötstellen 3x neu verlötet?

Was könnte das Problkem sein das nur die linke Hälfte OK Angezeigt wird
und rechts streifen auftauchen?

Danke
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 19.02.2009 16:19

Avr Nix wrote:
> Was könnte das Problkem sein das nur die linke Hälfte OK Angezeigt wird
> und rechts streifen auftauchen?

Ich habe ehrlich gesagt nicht die geringste Vermutung woran das liegen
könnte.
Der Text sieht OK aus, auch auf der rechten Seite.
Da es weder Software noch Hardware mäßig irgendwelche Unterschiede
zwischen beiden Seiten gibt, ist das ganze sehr seltsam.
Dazu kommt noch, dass jeder 2. Pixel anscheinend betroffen ist, aber die
Pixel liegen ja gemeinsam zusammen mit den funktionierenden Pixel in
einem Byte.
Autor: A. K. (prx)
Datum: 19.02.2009 16:30

Fängt die Störung bei einer Zweierpotenz (Bits/Bytes in der Zeile) an
und wiederholt sich alle 8 Bits? Dann könnte eine irgendwie geartete
Kopplung zwischen einem Adress- und einem Datenpin vom RAM bestehen.

Adress/Datenpins untereinander und gegeneinander durchklingeln.
Speichertestprogramm basteln. Korrekte Funktion vom Adresslatch testen.
RAM und Adresslatch tauschen.

Stützkondensatoren sind ja wohl überall drin? Wie sieht der Aufbau aus?
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 19.02.2009 17:37

Also ich habe die Platine von Blitzlampe und mehre RAM wie den
W24M257AK-15 und dem Em51M256A-15P getestet alles das gleiche Ergebnis.

Jetzt darf ich mal das Datenblatt suchen und schauen ob die überhaupt
passen, was ich gedacht habe.

Ich habe hier noch ein HM62256ALP-70G der passt doch ?

Ich meine mich erinneren zu können das die von der PINs her stimmig
sind.
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 19.02.2009 17:47

Mh anscheinend ist die PIN Belegung gleich.

Em51M256 datenblatt:
http://www.datasheetarchive.com/pdf-download/Datas...
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 19.02.2009 17:59

Der SRAM sollte eigentlich funktionieren.
Aktivier mal testweise in der lcd.c in der void lcd_init(void) die
Waitstates um ein Timingproblem auszuschließen.
Autor: Blitzlampe (Gast)
Datum: 19.02.2009 18:19

Hallo,

Verändert sich die Störung, wenn du mit dem Finger an den Rahmen des
Displays fast oder diesen mit Masse verbindest?

Ich frage deshalb, weil bei mir ein Inverter wo solche Störungen auf der
Spannungsversorgung erzeugt hatte, das ich auch Streifen im Display
gesehen habe. Diese haben sich aber verändert wenn ich den Finger an den
Rahmen gehalten oder mit Masse verbunden habe.
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 19.02.2009 18:20

Hallo Benedikt,
Noch eine andere Frage welche Zahl ist bei dir Grau und Hellgrau?
Und könntest du mal ein Beispiel in deiner PDF aufnehmen wie man ein
Rechteck und Kreis in den 4 Graustufen etc. zeichnet?

Und -
Wo soll ich Waitstates erhöhen? bzw. könntest du nicht eine passende HEX
posten? Da ich nicht mit C arbeite, Danke

void lcd_init(void)
{  cli();
  wdt_disable();
  MCUCR=(1<<SRE)|(0<<SRW10);          // Enable XMEM    !!! Die Null vor
dem SRW Bit durch eine 1 ersetzen, !!!
                        //          !!! wenn der verwendete SRAM mehr
als 35ns hat     !!!
  OCR1A=10;
  OCR1B=128;
  TCCR1A=(1<<COM1B1)|(1<<COM1B0)|(1<<WGM10);  // Enable PWM (Kontrast)
  TCCR1B=1;                  // 8bit PWM

  OCR0=RELOAD;
  TCCR0=(1<<WGM01)|2;              // 2MHz Timer Takt, CTC
  TIMSK=(1<<OCIE0);

  sei();
  lcd_clear();

  lcd_block(50,10,269,79,0,255);
  lcd_block(60,20,109,69,64,255);
  lcd_block(150,15,189,45,64,64);
  lcd_block(180,40,219,75,128,128);
  lcd_block(200,20,239,50,255,255);
  lcd_string(10,120,PSTR("320x240 LCD Controller"),255,0);
  lcd_string(15,140,PSTR("\xB8"" by Benedikt"),255,0);

  wdt_enable(WDTO_250MS);
  ENABLE_VLCD=1;
}
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 19.02.2009 18:51
Angehängte Dateien:

Avr Nix wrote:
> Noch eine andere Frage welche Zahl ist bei dir Grau und Hellgrau?

Die Farben sind 8bit Werte, man kann jeden Wert senden, es werden aber
nur die 2 MSB verwendet:
0, 64, 128, 192 sind also eine Möglichkeit für die 4 Graustufen.

> könntest du nicht eine passende HEX posten?

Ist im Anhang.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 19.02.2009 19:18
Angehängte Dateien:

Avr Nix wrote:
> Und könntest du mal ein Beispiel in deiner PDF aufnehmen wie man ein
> Rechteck und Kreis in den 4 Graustufen etc. zeichnet?

Hab ein paar Beispiele eingebaut.
Autor: Avr Nix (avrnix) Benutzerseite
Datum: 19.02.2009 19:55

Danke benedikt,

aber hat nicht genutzt mit der Erweitung der Waitstate. und habe alle
Lötreste beseitigt, bei Blitzlampe tat es doch auch die Platine.

der HM62256ALP-70G würde auch mit deiner neuen HEX Funktionieren?

Danke
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 19.02.2009 20:04

Ja, der sollte gehen. Allerdings ist die Software dann etwas langsamer.
Autor: Sikipaa (Gast)
Datum: 19.02.2009 23:43

Hallo
gibts irgendwann nochmal eine bestell aktion ?
würde mitmachen die displays gibts ja noch
Autor: karl (Gast)
Datum: 21.02.2009 13:21

@Benedikt:

Es ist dir möglich einen kleinern Zeichensatz zu Integrieren?

Gruss
karl
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 21.02.2009 13:51

Möglich ist alles.
Autor: karl (Gast)
Datum: 21.02.2009 16:10

machts du das auch ?

gruss
Karl
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 22.02.2009 09:34

Momentan habe ich dazu leider keine Zeit. Und ehrlich gesagt habe ich da
auch wenig Bedarf daran, da das Display doch ziemlich groß ist.
Die Software war eigentlich auch mehr als Basis für eigene Erweiterungen
gedacht, so dass jeder selbst eigene Befehle implementieren kann. Dazu
gibt es die ganzen Schnittstellen Funktionen wie lcd_setpixel(). Damit
sollte sich eine eigene Schriftart schnell einbauen lassen.
Autor: Johannes M. (johannesm)
Datum: 01.03.2009 15:34
Angehängte Dateien:

Hallo,
bin heute auch dazu gekommen den Controller in Betrieb zu nehmen.
An dieser Stelle nochmal vielen Dank an Benedikt für Schaltung und
Software sowie Blitzlampe für die Platinen-Aktion.
Autor: Maximilian Keller (langerhans)
Datum: 16.03.2009 10:42

Hallo!
Hat evtl. jemand noch so eine Platine für mich übrig?
Ich habe nämlich das Gefühl, dass ich das mangels Schaltplanlesekünsten
nicht so schnell auf Lochraster realisieren könnte... ;)

Ich würde sie sowohl neu, als auch fertig bestückt nehmen, natürlich
gegen entsprechende Bezahlung!

Reciht eigentlich ein alter Inverter aus einem Notebook oder brauche ich
da nochwas neues?

Und ausserdem frage ich mich ob es eine komplette Bauteilliste gibt??

MfG
Autor: Blitz Lampe (blitzlampe)
Datum: 16.03.2009 17:28

Platine zum Abgeben hab ich leider keine mehr über. Auf Lochraster würd
ich das ganze nicht Aufbauen wollen wäre mir zuviel Drahtverhau.

Der Inverter aus dem Notebook sollte das Display zum leuchten bringen.

Bauteil Wert       Device          Package      Description                                                    
C1      100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C2      100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C3      100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C4      100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C5      100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C6      100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C7      100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C8      27p        C-EUC1206       C1206        CAPACITOR, European symbol                                     
C9      27p        C-EUC1206       C1206        CAPACITOR, European symbol                                     
C10     100n       C-EUC1206       C1206        CAPACITOR, European symbol                                     
C11     100µ       CPOL-EUE5-5     E5-5         POLARIZED CAPACITOR, European symbol                           
C12     47µ        CPOL-EUE5-5     E5-5         POLARIZED CAPACITOR, European symbol                           
C13     100µ       CPOL-EUE5-5     E5-5         POLARIZED CAPACITOR, European symbol                           
C14     1n         C-EUC1206       C1206        CAPACITOR, European symbol                                     
C15     10µ        CPOL-EUE5-5     E5-5         POLARIZED CAPACITOR, European symbol                           
C16                CPOL-EUE5-5     E5-5         POLARIZED CAPACITOR, European symbol                           
D1      1N4148     1N4148          DO35-10      DIODE                                                          
D2      1N4148     1N4148          DO35-10      DIODE                                                          
D3      1N4148     1N4148          DO35-10      DIODE                                                          
IC1     MEGA8515-P MEGA8515-P      DIL40        MICROCONTROLLER                                                
IC2     74AC02N    74AC02N         DIL14        Quad 2-input NOR gate                                          
IC3     74HC74N    74HC74N         DIL14        Dual D type positive edge triggered FLIP FLOP, preset and clear
IC4     74HC157N   74HC157N        DIL16        Quadruple 2-line to 1-line data SELECTOR/MULTIPLEXER           
IC5     74AC573N   74AC573N        DIL20        8-bit D latch BUS DRIVER                                       
IC6                62256P          DIL28-6      MEMORY                                                         
IC7                78XXS           78XXS        VOLTAGE REGULATOR                                              
IC8     MC34063AP  MC34063AP  DIL08                                                                       
JP1                JP1E            JP1          JUMPER                                                         
JP2                PINHD-1X4       1X04         PIN HEADER                                                     
JP3                PINHD-1X12      1X12         PIN HEADER                                                     
K1      AQV21SMD   AQV21SMD        DIL06SMD     PhotoMOS Relay NAiS                                            
L1      470µ       L-EU0204/7      0204/7       INDUCTOR, European symbol                                      
LED1               LEDCHIPLED_1206 CHIPLED_1206 LED                                                            
Q1                 CRYSTALHC49U-V  HC49U-V      CRYSTAL                                                        
Q2      BC327      BC327           TO92         PNP Transistor                                                 
R1      2,2k       R-EU_M1206      M1206        RESISTOR, European symbol                                      
R2      47k        R-EU_M1206      M1206        RESISTOR, European symbol                                      
R3      1          R-EU_M1206      M1206        RESISTOR, European symbol                                      
R4      47k        R-EU_M1206      M1206        RESISTOR, European symbol                                      
R5      3,3k       R-EU_M1206      M1206        RESISTOR, European symbol                                      
R6      330        R-EU_M1206      M1206        RESISTOR, European symbol                                      
R7      330        R-EU_M1206      M1206        RESISTOR, European symbol                                      
R8      100        R-EU_M1206      M1206        RESISTOR, European symbol                                      
R9      0          R-EU_0207/10    0207/10      RESISTOR, European symbol                                      
R10     0          R-EU_0207/10    0207/10      RESISTOR, European symbol                                      
R11     560        R-EU_M1206      M1206        RESISTOR, European symbol                                                                                                             
X2                 W237-102        W237-102     WAGO SCREW CLAMP 
Autor: Maximilian Keller (langerhans)
Datum: 16.03.2009 19:54

Hallo!
Schonmal vielen Dank für die Bauteilliste! Hat es was zu bedeuten, dass
manchmal der Wert fehlt?

Vielleicht findet sich ja noch jemand, der mir eine Platine schicken
kann.
Leider wäre eine einzelne oer 2 viel zu teuer...

MfG
Autor: Blitz Lampe (blitzlampe)
Datum: 18.03.2009 18:10

Naja der Kondi C16 ist irgendwas zwischen 10µ und 47µ ich hab 22µ
genommen.
Der Speicher( IC6 ) muss Pinkompatibel zum Layout sein, ich hab den von
Reichelt genommen. (steht weiter oben welcher das ist)
Der IC7 ist ein 7805 im TO220.
Q1 ist ein 16MHz Quarz.
Led jenachdem was für eine Farbe man will. Ich hab sie gar nicht erst
bestückt, weil sieht man nach dem Einbau sowieso nicht.

JP1...JP3 sind Lötpads, die haben keinen Wert. Die Anbschlussklemme X2
auch nicht.

http://www.platinenbelichter.de/ macht dir die Platte zum guten Preis
allerdings ohne Lötstopp und keine Durchkontaktierung. Ist halt bissel
mehr gelöte nötig dürfte aber gehen.
Autor: Vul Kain (Gast)
Datum: 31.03.2009 16:36

Hallo!

Wo bekommt man dieses AQV21?
Ich versuche gerade alle Bauteile bei Pollin + Reichelt zusammen zu
suchen, aber ein AQV21 gibt es dort nicht?

Gruß,
Kain
Autor: Wigbert (Gast)
Datum: 31.03.2009 16:58

Conrad,
AQV212

Wigbert
Autor: Vul Kain (Gast)
Datum: 31.03.2009 17:13

gibt es keine alternativen von reichelt oder pollin?
wegen einem IC extra bei conrad zu bestellen scheint mir recht
schwachsinnig^^
Autor: Blitz Lampe (blitzlampe)
Datum: 31.03.2009 19:11

Das Teil kannst du auch weglassen oder ersetzt es durch einen Jumper. Es
dient nur dazu das man die Kontrastspannung ein- ausschalten kann.
Autor: Vul Kain (Gast)
Datum: 02.04.2009 16:05

Hallo nochmal,

Wenn ich es ersetze fallen K1 und R8 weg oder? (Ich beziehe mich auf den
Schaltplan im angehängten PDF)
Was ist R6? 1 Ohm? Wenn ja wieso?
Reichen überall 1/4 Watt Widerstände und 16V Kondensatoren?

Danke für eure Hilfe,
Kain
Autor: Vul Kain (Gast)
Datum: 02.04.2009 16:07
Angehängte Dateien:

sry...der Anhang...
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 02.04.2009 17:41

Vul Kain wrote:
> Wenn ich es ersetze fallen K1 und R8 weg oder?

Ja.

> Was ist R6? 1 Ohm?

Ja.

> Wenn ja wieso?

Strombegrenzung für den 34063

> Reichen überall 1/4 Watt Widerstände und 16V Kondensatoren?

Ja, solange nicht anders angegeben.
Autor: Sebastian (Gast)
Datum: 07.04.2009 16:27

Wollte mir den Controller jetzt auch mal nachbauen. Hab aber noch ne
Frage zum Zuschalten von der Displayspannung.
Irgendwo hieß es mal, man könne bei manchen Displays auf den OptoMosFet
(bzw. aufs schalten überhaupt) verzichten.

Muss ich jetzt bei diesen beiden Displays
Pollin 120471
Pollin 120460
einen Schalter einbauen, oder kann ich ihn weglassen, weil die Displays
ja einen DISPOFF eingang haben?

Gruß, Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 07.04.2009 16:46

Den Optomosfet kannst du bei den Displays weglassen.
Autor: Sebastian (Gast)
Datum: 07.04.2009 17:10

Sehr gut. Dankeschön.
Autor: Sebastian (Gast)
Datum: 10.04.2009 03:49

Jetzt hab ich doch noch ein Problem:

Hab die Schaltung nach deinem Plan aufgebaut und auch alles nochmal
überprüft, aber wenn ich einschalte ist bei mir das ganze Display nur
gelb. Hab jetzt das weiß-auf-schwarz Display von Pollin.
Das einzige was ich bisher festgestellt hab ist, dass die
Kontrastspannung von -17V im Leerlauf auf -11 bei angeschlossenem
Display zusammenbricht. Ist das normal? Hab die Schaltung für die
Kontrastspannung so wie im ersten Plan aufgebaut. Nur halt den Mosfet
hab ich nicht drin.

Sebastian
Autor: Sebastian (Gast)
Datum: 10.04.2009 14:11

Hallo nochmal,

ich komm jetzt zwar auf -17 bis -18 Volt Kontrastspannung (auf Masse
bezogen), aber das Display ist immernoch einfach nur gelb. Im Datenblatt
steht doch -22V bezogen auf die 5V Versorgungsspannung, also -17 Volt
bezogen auf Ground.
Sind gute 200mA auf der 5V-Versorgung für die gesamte Schaltung +
Display normal?

Für alle die's interessiert: Ich hatte die Versorgungsspannung am
Spannungswandler nicht ausreichend gepuffert und zusätzlich auf meinen
Versorgungsleitungen so viel Spannungsabfall, dass die ganze Schaltung
nur noch mit gut 4 Volt lief.

Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 10.04.2009 15:40

Sebastian wrote:
> aber das Display ist immernoch einfach nur gelb.

Prüf mal nach ob die Signale vom AVR zum LCD wirklich richtig verdrahtet
sind oder ob da irgendwo was vertauscht ist, oder ein Kurzschluss ist.

> Sind gute 200mA auf der 5V-Versorgung für die gesamte Schaltung +
> Display normal?

Kommt auf den Stromverbrauch  vom Speicher, den Wirkungsgrad des
Spannungswandler usw. an. Ich komme auf 100-150mA, grob passt es also.
Autor: Sebastian (Gast)
Datum: 10.04.2009 16:41

Hab jetzt nochmal nachgemessen. Konnte aber weder Vertauschungen noch
Kurzschlüsse finden. Mich irritiert auch das satte Gelb des Displays.
Woher könnte das kommen?

Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 10.04.2009 17:42

Sebastian wrote:

> Woher könnte das kommen?

Das kommt daher, dass das Display nicht richtig angesteuert wird und
daher dauerhaft die volle Spannung sieht, anstelle von 1/240tel der
Zeit.
Autor: Sebastian (Gast)
Datum: 10.04.2009 19:47

Werde die schaltung morgen mit zu meinen Eltern nehmen, da hab ich ein
Oszi. Ich denke damit komm ich schneller auf den Fehler.

Danke schonmal soweit.
Sebastian
Autor: Sebastian (Gast)
Datum: 16.04.2009 20:55

Oszi ist leider kaputt :-( Hab das Display aber trotzdem zum laufen
gebraucht. Hatte nach dem alten Plan gelötet in dem zwei Signalnamen
verdreht waren.
Vielen Dank an Benedikt für dieses Tolle Projekt.

Sebastian
Autor: gast (Gast)
Datum: 25.04.2009 22:14

hallo,
wäre es möglich das glcd über akkus zuversorgen.

mfg
Autor: Christian J. (Gast)
Datum: 27.04.2009 00:19

Hallo,

da ich von AVR keine Ahnung habe, diesen nicht programmieren kann etc
(ich mache nur noch ARM7), wäre es möglich eine Platine mit fertig
programmiertem AVR zu bekommen, so dass ich diese als Black Box mit der
Uart meines ARM7 System verbinden kann?

Gruss,
Christian
Autor: Christian J. (elektroniker1968)
Datum: 27.04.2009 00:35
Angehängte Dateien:

Biete dafür auch 640x480 (2-Halbbilder) LCD Displays monochrom (ablesbar
ohne Hintergrundbeleuchtung) an. Interface standard.
Autor: Sebastian (Gast)
Datum: 27.04.2009 20:49

>wäre es möglich das glcd über akkus zuversorgen.

wieso nicht? Wo siehst du das Problem? Du brauchst 5 Volt für die
Schaltung und etwas 150mA wenn du die Kontrastspannung aus dem Akku
erzeugst. Hintergrundbeleuchtung nicht mitgerechnet. Sollte halt nicht
grade ne Knopfzellen-reihenschaltung sein. Aber im Prinzip seh ich
nichts, was dagegen spricht.

Sebastian
Autor: Christian J. (elektroniker1968)
Datum: 27.04.2009 23:44

Hallo,

ich werde diese Leiterplatten nachmachen lassen in blau. Natürlich
mehrere, damit der Preis stimmt.

Er wird 10€/Platte + 1€ Versand liegen für ca 20 Stück. Billiger wirds
erst wieder ab 100.

auf den Cent genau weiss ich das noch nicht, habe nur grob für 10
kalkukiert (1,0mm FR4, doppelseitig, durchkontaktiert, blau beidseitig,
geschnitten, 5 AT) incl. Ritzen des Nutzens. Lieferzeit ca 10 Tage ab
Bestellung.

Falls jemand welche haben will möge er bitte eine e-mail an
admin@der-scirocco.de senden die NUR folgenden Inhalt hat:

Name
Anschrift
Telefon
Anzahl !

Ich antworte mit meinen Kontodaten + Anschrift. Versand per Brief 1€.
Nur Vorkasse.

PS: Ich habe schon vor einem Jahr mal eine Sammelbestellung (HF Booster)
gemacht, diejenigen (zB Benedikt) wissen, dass die Ware auch ankommt.

Einsendeschluss ist der 1.5., dann geht die Bestellung raus, ich werde
trotzdem ein paar mehr machen lassen als Reserve. Grafikdisplay wollen
sicherlich viele haben zumal es einfach bedienbar ist. Vielleicht findet
sich ja auch noch jemand, der die "wesentlichen" Bauteile (zb ICs,
Quartz, Stecker) als Sammelpacks bestellt, damit nicht jeder sich die
zusammensuchen muss.

Benedikt.... kann bis dahin vielleicht die Software noch etwas
verfeinert werden? zb "Zeichne Koordinatensystem" Funktion (Achsen,
Teilstriche), Scrolling um eine Zeile für fortlaufenden Text?


Gruss,
Christian
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 07:31

Hallo,

ich werde die Platine noch um einen FPC Stecker erweitern für die Pollin
Displays. Kann mir jemand sagen welcher der Eagle 5.0 Lib da passt
(genauer Name und welcher Pitch)? Ich habe das Display nicht hier.
Benedikt, stimmt die Reihenfolge der Pins für das Pollin? Nicht dass die
nachher genau seitenverkehrt sind oder überkreuzt....
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 28.04.2009 09:51
Angehängte Dateien:

Christian J. wrote:

> ich werde die Platine noch um einen FPC Stecker erweitern für die Pollin
> Displays. Kann mir jemand sagen welcher der Eagle 5.0 Lib da passt
> (genauer Name und welcher Pitch)? Ich habe das Display nicht hier.

In Eagle 4.x gibt es zumindest keinen passenden Stecker, keine Ahnung ob
das mittlerweile drin ist.

Ich habe mal ein Foto von dem Display angehängt.
Die Kabel gehen auf der linken Seite vom Display raus, Pin 1 vom
Anschlusskabel ist oben. Die Kontakte von dem Folienkabel liegen auf der
Seite, auf der die Beschriftung auf dem Folienkabel ist (wenn man das
Kabel also ausklappt nach links, dann auf der Vorderseite). Das Kabel
hat ein Pitch von 1mm.

Hier gibt es das Datenblatt von einem sehr ähnlichen Display:
http://www.mark-products.com/pdf/g320x240/159/159%20spec.pdf
Die Belegung passt, die Spannungen passen, nur scheint da ein Stecker
anstelle des Folienkabels drauf zu sein.

Ich würde auf die Platine noch einen ISP Anschluss für den mega8515
machen. Dann kann man leicht die Software an eigene Bedürfnisse
anpassen. Die ganzen Schnittstellenfunktionen zum LCD Controller sind im
Programm ja enthalten.
Autor: Christian J. (elektroniker68)
Datum: 28.04.2009 10:09

Hallo Benedikt,

leider versthe ich Deinen Text nicht ganz. Um ganz sicher zu gehen
zeichne vielleicht die Belegung auf einem Foto des Kabels ein. Ich habe
das Display grad hier in der Firma. Auf der platine sieht man eine
kleine 2 neben dem Lötfeld. Bitte für Dumme mal erklären, ich möchte
keine Fehler machen. Eagle 5 hat hunderte dieser Stecker mit dabei. Ein
ISP Stecker würde den Rahmen sprengen, die Platte ist ja schon sehr
dicht. Ich möchte die Größe nicht wesentlich verändern. Da ich keine
Ahnung vopm Avr habe würde ich auch nicht wissen wo anschliessen.

Bisher 3 Bestellungen.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 28.04.2009 10:21

Christian J. wrote:
> Auf der platine sieht man eine kleine 2 neben dem Lötfeld.

Das ist der Rest der teilweise verdeckten 12. Oben ist Pin 1, unten Pin
12. Es stimmt also mit dem Datenblatt überein.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 10:48

Hi,
also mit Hardware könnte ich aushelfen
den Stecker hatte ich von Farnell,
Rest sollte kein Problem sein.
Ich wickle eigentlich alles ganz professinell ab.
Beitrag "[S] Leute die einen Logic Analyzer (MiniLA) bauen wollen"
Ich hatte mal ein Adapter gebaut
Beitrag "Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen"
Ich such die LIB des Steckers noch raus

Wigbert
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 11:09

@Christian J. (elektroniker68)
ich hab noch mal wegen der LIB nachgeschaut, habe das nur mit der
Hand geroutet, eine LIB ist aber schnell gemacht
ISP sollte schon rauf, muss ja nicht , so wie bei mir, eine
Pfostenbuchse
sein

@Benedikt
wie schnell müssen die S-Rams nun wirklich sein , um den AVR nicht
auszubremsen

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 28.04.2009 11:58

Wigbert Picht-dl1atw wrote:

> wie schnell müssen die S-Rams nun wirklich sein , um den AVR nicht
> auszubremsen

Das hängt hauptsächlich von der "OE\ Access Time" des SRAMs ab:

Im Datenblatt vom mega8515, Seite 202, Tabelle 98, Punkt 10:
Read Low to Data valid: max 1.0*tclcl-50ns. Bei 16MHz ist tclcl=62,5ns.
Das SRAM darf daher maximal 12,5ns brauchen zwischen dem Anlegen des RD
Impulses bis die Daten stabil sein müssen.
Das von mir gerne verwendete IS61C256 Cache SRAM hat in der langsamsten
25ns Ausführung hier nur 9ns. Es ist also ausreichend schnell.
Bei der Low Power Variante IS62C256 dagegen, hat selbst die 45ns
Variante hier 25ns. Dies kann funktionieren, da die Werte jeweils die
garantierten Maximalwerte sind, muss aber nicht.
Es gibt Aussagen hier im Forum, dass selbst 70ns SRAMs ohne waitstates
funktionieren. Ausprobiert habe ich bis 35ns (nur Cache SRAMs).

Zusätzlich ist natürlich noch die Zugriffszeit wichtig:
Das wäre Punkt 5 im Datenblatt: Address valid to RD Low: 1.0*tctc-10ns.
Insgesamt ergibt sich dadurch eine Zeit von 2.0*tctc-20ns, also 105ns
zwischen Adresse gültig bis Daten stabil, was eigentlich alle SRAMs die
obige Bedingung erfüllen, auch erfüllen.

Das Latch ist da meiner Meinung nach absolut unkritisch, da die
Zugriffszeit ja im vergleich zu der OE Zeit des Speichers extrem groß
ist. Ich verstehe bis heute nicht, warum Atmel da ein AHC573 empfiehlt.
Autor: Christian J. (elektroniker68)
Datum: 28.04.2009 12:37

Hallo Wigbert,

12 Pins mit Pitch 1,0 reichen mir schon, die Lib gibt es. Senkrechter
Stecker wohl am besten.

Das ISP..... wer würde die Platine übernehmen, wenn ich das FPC drin
habe? Müsste nochmal aufgerippelt werden dann. 4 Befestigungsösen wären
schon sehr schön, dann kann man sie auf ein Demobrett schrauben.  Oder
sag mir einfach mal einer an welche Pins das ISP kommt und in welcher
Reihenfolge. Ein paar Pfostenstecker dürften reichen. Dann wäre eine smd
Variante für den Avr ja auch wohl besser denke ich.

Also Tabelle:

Pin xyz ---- ISP Pin 1
Pin ....

usw.

(Status: 4 Bestellungen)
Autor: Christian J. (elektroniker68)
Datum: 28.04.2009 13:37

Vcc
MOSI
MISO
SCK
Reset
GND


Ist das so richtig?

Kommt Leute, ich will gleich routen..... je schneller kriegt ihr die
Platinen.
Autor: Blitzlampe (Gast)
Datum: 28.04.2009 13:55

Stimmt schon was du aufgeschrieben hast.

Der Standard ISP Stecker ist ein 10 poliger Wannenstecker mit folgender
Belegung.

Wannenstecker   ISP Signal

Pin 1            MOSI
Pin 2            VCC
Pin 3            NC
Pin 4, 6, 8 ,10  Gnd
Pin 5            Reset
Pin 7            SCK
Pin 9            MISO
Autor: Blitzlampe (Gast)
Datum: 28.04.2009 13:58

Ach was ich noch sagen wollte, warum macht ihr keinen Bootloader auf den
Atmega dann könnte man das Teil in der Platte neu bespielen und man
könnte gleich die RX und TX Leitung der seriellen Schnittstelle nutzen.
Wäre doch die einfachste Lösung oder?
Autor: Christian J. (elektroniker68)
Datum: 28.04.2009 14:09

Nein, dann müsste noch ein Pegelwandler mit rein. Ich möchte da nicht
zuviel rumdoktorn.

Ich mache eine Pfostenleiste, Wannenstecker ist schon wieder zun gross
und ich denke mal die meisten haben diese Programmierdapater auch selbst
gebaut mit diesen kleinen Steckern.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 15:35

@Christian J. (elektroniker68)
die Molex- Stecker, falls Du das Routen noch mal vergleichen willst

http://de.farnell.com/molex/52271-1279/socket-ffc-...

Wigbert
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 16:48

Hi,

also ich könnte so auf die Schnelle mit S-Rams

IS61C256AL-12 oder
AS7C256A-12

aufwarten

@Benedikt
wären die schnell genug, bin mir mit dem DBL nicht so sicher

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 28.04.2009 16:56

Ja, die sind mehr als ausreichend schnell (12ns Zugriffszeit und 5 bzw,
3ns Output Enable).
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 17:03

@Benedikt
Dank Dir

gut 0,80 Euro(Brutto) das Stück, allerdings in SOJ oder TSOP

Ich glaub es gibt DIP/SOJ Adapter

Wigbert
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 17:25

Wigbert,

ist leider nicht dabei und ich habe keinen Nerv den zu zeichnen, weil
ich ewig nicht mehr mit dem Eagle Designs gemacht habe. Hast Du da eine
Lib zu.?
Ich wollte auch einen stehenden verwenden, habe Hirose in der Lib aber
die gibts leider nicht bei Farnell mit dem Footprint.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 17:54

Christian J. (elektroniker1968)
na, ja
schlag ein von Digikey vor. Den kriege ich dann auch her


Wigbert
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 18:12

Bei Digikey sind keine Bilder dabei. Es gibt hunderte davon. Leider
ebenso in der Eagle Lib.

Du, ich habe das letzte Mal vor 4 Jahren mit Eagle gearbeitet V3.xx.
V5.xx habe ich aber da ist zu viel Neues drin. Am Routen würde ich 3
Tage sitzen. Kann ich Dir das Board schicken und Du änderst das ab? Ich
kann mir keine Fehler leisten.

Zu ändern wären:

- Alle ICs durch smd Bauteile ersetzen, spart viel Platz. Schnelles Ram
gibts wohl auch nur als SO Gehäuseform, die DIPs sind aus der Mode.
  (den AVR gibts als PLCC glaube ich)
- ISP Interface einfügen
- FPC Stecker
- smd LED vielleicht durch 3mm ersetzen, die hat jeder rumliegen.
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 18:43

Folgendes, ich habe einen stehenden mit DIP Footprint:

Hirose: FH21-12S-1DSA

kannste den besorgen?
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 18:58
Angehängte Dateien:

Sähe dann so aus, also beide Stecker.... mal eben auf die Schnelle
gemacht.
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 19:34

So,

ich habe die Änderungen drin, also ISP und FPC Stecker. Alles andere
bleibt so. Bitte an blitzlampe er möge sich mal melden, da sind ein paar
Sachen im Board die wohl versionsbedingt nicht "fassbar" sind. Ausserdem
bin ich eine Null im Routen.

Die Sache steht und fällt allerdings mit der Beschaffbarkeit des obigen
FPC Steckers.

(5 Bestellungen)
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 20:20

Hirose: FH21-12S-1DSA

Digikey:
http://search.digikey.com/scripts/DkSearch/dksus.d...

ist aber nicht senkrecht, seltsam?

Ware wird nur auftragsbezogen beschafft, da erstmal nicht bezahlbar

Wigbert
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 20:42

Doch, der ist senkrecht :-) Die Pins hinten sind verdeckt. ist aber
osolet, müsste man einen Ersatz für finden:

http://search.digikey.com/scripts/DkSearch/dksus.d...

Passt auch vom Footprint her

Warten wir erstmal ab wie viele Bestellungen kommen. Die 10 müssen schon
voll werden.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 28.04.2009 20:45

achja , wird durchkontaktiert, ich war auf SMD aus

Wigbert
Autor: Kh Loeter (loeter)
Datum: 28.04.2009 22:18

Hallo Christian,

@ Christian J.

> Warten wir erstmal ab wie viele Bestellungen kommen. Die 10 müssen schon
> voll werden.

Von mir wird auch noch ne Bestellung kommen, und ich hab ein paar Leute,
die sich auch dafür interessieren. Ich hab aber noch nicht von allen
eine Antwort bekommen. Momentan sind 4 Platinen sicher, es könnten aber
noch 4 weitere hinzu kommen. Sobald ich die genaue Anzahl habe, schicke
ich Dir ne Mail mit der offiziellen Bestellung und Anzahl.

Im übrigen würde ich es bevorzugen, die ICs auf der Platine im DIL zu
lassen. Denn das macht doch gerade den Charme der Platine aus. Die
meisten dürften noch nen 8515 in der Bastelkiste haben, und ein altes
Cache RAM findet sich auch ganz leicht. Also kann man die Schaltung mit
minimalem Kostenaufwand aufbauen. In SMD würde für mich bedeuten, dass
ich alles bestellen müsste, obwohl die meisten Teile schon da sind. Ich
wär froh, wenn ich die mal verbrauchen könnte. Ausserdem lassen sich DIL
ICs sockeln, was bei Modifikationen und weiteren Verbastelungen einfach
viel mehr Spaß macht.

Die ISP Signale noch rauszuführen wäre Spitzenklasse. Dabei würde es mir
reichen, wenn einfach die Pins 1-8, Reset, Vcc und GND direkt neben dem
DIL40 1:1 auf ein einreihiges Pfostenfeld gehen. Das braucht kaum Platz
im Layout.

Gruß und schonmal Danke für Deine Mühe

 Kai
Autor: Christian J. (elektroniker1968)
Datum: 28.04.2009 23:12

Hallo,

ich habe alles auf DIL gelassen, nur kam neben dem Pfostenstecker noch
ein FPC hinzu und eben der ISP. Bzgl Routen warte ich noch auf eine
Rückmeldung vonn blitzlampe, weil das jemand machen soll der mehr
Erfahrung hat als ich, es ist viele Jahre her bei mir.

Einer generellen smd Lösung stehe ich aber offen gegenüber, vor allem
wegen des Platzes, die Platine ist doch recht gross. Mal schauen,
vielleicht gibts ja auch zwei Varianten.

Ich halte das aber noch für ausbaufähig, da ich selbst mit Avr nichts am
Hut habe und dafür auch keinerlei Werkzeuge habe müssten das aber andere
machen. Die Doku ist noch verbesserungsfähig, vor allem das Laden von
Grafiken sollte verbildlicht werden, vielleicht mit Beispiel dazu. Was
mir noch nicht klar ist, wie das Uart Protokoll Befehlsende erkennt,
wenn zB die Daten abreissen oder aus dem Takt kommen.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 28.04.2009 23:27

Christian J. wrote:
> Was
> mir noch nicht klar ist, wie das Uart Protokoll Befehlsende erkennt,
> wenn zB die Daten abreissen oder aus dem Takt kommen.

Garnicht. Die Software erwartet exakt xs*ys Bytes an Bilddaten.

Das ganze war eigentlich als Embedded LCD Controller gedacht, der
parallel zur eigentlichen Software auf dem selben AVR läuft.
Die UART Ansteuerung war mehr ein Beispiel um von extern Grafik auf das
Display zu bekommen, daher ist das Protokoll sehr einfach gehalten.
Autor: Christian J. (elektroniker1968)
Datum: 29.04.2009 00:09

Meinste, Du kriegst da noch einen Timeout hin? Wenn das Host System zB
resettet wird muss der Grafikcopntroller da ja irgendwie mitkriegen. Was
ganz einfaches halt, zb wenn 100ms kein Byte zur Uart kam wird
rückgesetzt.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 29.04.2009 00:26

Das halte ich für keine gute Lösung, denn dann muss man andauernd
sinnlose Daten schicken.
Ich würde dann eher die Resetleitung an den Master klemmen und so den
LCD Controller neustarten wenn der Master neustartet.
Autor: Christian J. (elektroniker1968)
Datum: 29.04.2009 01:10

Also spendieren wir noch einen Reset Pin am Uart Stecker....
(PS: Der Arm7 hat ein Flag, wenn in der Uart nichts mehr ankommt :-)
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 29.04.2009 07:39

Hi,
Ich hätte folgenden Vorschlag:
ich könnte bis Ende der nächsten Woche eine Digikey Bestellung
rauszögern. Dann würden die FFC-Stecker Versandkostenfrei nach DL
kommen. Das Beste wäre wohl, alle nach Christian J. zu schicken,
und Christian legt sie bei Bedarf den Platinen bei.
Ahnlich könnte man es, bei Bedarf mit S-Rams machen.

Wigbert
Autor: Blitz Lampe (blitzlampe)
Datum: 29.04.2009 08:30

So, hab mir das mal angeschaut, kannst du eventuell mir mal das Bord
zuschicken?

Wenn du Bilder vom Layout hochlädst würde ich den TStop und BStop Layer
ausblenden.

Das AQV21 könnte man ja mal gegen einen Typ ersetzen welchen man noch
bekommt bei Reichelt oder Conrad. Viele hatten mich nach Quellen für das
Teil gefragt.

Die Bohrung bei der Spule L1 ist von mir etwas ungünstig gesetzt wurden.
bedingt duch das Gehäuse läst sich dort nur schwer ne schraube
durchquetschen.

Die Bohrung für die Alternativen Spulen Pads sind auch etwas klein
ausgefallen.
Autor: Christian J. (elektroniker68)
Datum: 29.04.2009 09:54

Hallo Lampe,

ich sende Dir heute abend das Design zu wenn ich wieder zu Hause bin.
Schaus Dir bitte nochmal an und route es. Eine Resetmöglichkeit muss
aber unbedingt vorhanden sein als Synchronisationsmarke. Vielleicht
lässt sich in der Software ja doch was machen, vielleicht mit dem Busy
Pin, wenn der zB ab und zu mal als Eingang geschaltet wird. Dann kann
der Host einen Reset mit Low Pegel erzwingen, ich denke nicht dass der
Pin Schaden nimmt, wenn er ein paar Mikosekunden "gegen gepolt" ist.

Ich würde allerdings nur ungern als Bauteillieferant agieren, da das
dann ein Durcheinander gibt, oder aber der Stecker wird per se auf den
Platinenpreis aufgeschlagen, die 1,90 sind ja nicht die Welt und ohne
den ist es eine Frickelei. Ich denke aber, dass diese Projekt das
Potential hat als kompletter Bausatz angeboten zu werden, das ist mit
Abstand die günstigste Grafikdisplay Variante die ich je gesehen habe
und wenn keine Kinderkrankheiten mehr auftauchen kann das ein
Dauerbrenner werden. smd wäre natürlich noch schöner :-)
Autor: Christian J. (elektroniker68)
Datum: 29.04.2009 10:54

Blitzlampe.,... schick mir bitte eine e-mail, damit ich Deine
Mailadresse habe für das Layout!
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 29.04.2009 12:20

Wenn der Link stimmt sind so ein Stecker ca o,54 Euro Netto
soll wegen den paar Kröten jeder noch eine Briefmarke von mir bezahlen?
Aber macht wie Ihr denkt, wie gesagt, mein Angebot steht ....
Ein Bausatz zusammenzustellen ist vom Gesamtwert und der Menge wenig
attraktiv.

Wigbert
Autor: Christian J. (elektroniker68)
Datum: 29.04.2009 12:46

Wigbert,

dann bestell doch einfach mal 25 und sende sie an mich. Geld übeweise
ich Dir dann, lege jeder Platine einen solchen bei.

Ok?
Autor: Christian J. (elektroniker1968)
Datum: 30.04.2009 01:35

Hallo,

da ich leider ein 3 tage altes Backup zurückspielen musste und
idiotischweise vergessen haben die Outlook Datendatei zu sichern, bitte
ich alle, die sich gemeldet hatten für Platinen ihre Mail nochmal
abzusenden.

Tut mir leid, war aber nicht beabsichtigt.

(Layout ist fertig zum Review!)
Autor: Christian J. (elektroniker1968)
Datum: 30.04.2009 01:37
Angehängte Dateien:

Hier die Dateien für Eagle zum Durchschauen.
Autor: Christian J. (elektroniker1968)
Datum: 30.04.2009 17:14

Bitte um Rückmeldung, die Platine ist fertig !!! Wer kann ein Review
machen ???

Bitte dringende Bitte an jene, die noch welche haben wollen ihre Mail
nochmal zu senden, ich verschicke die Platine am Montag aber solange
keine 10 voll sind lohnt sich das nicht.
Autor: Kh Loeter (loeter)
Datum: 30.04.2009 22:35
Angehängte Dateien:

Hi,

Ich hab grad Eagle installiert, und schau mir das Layout mal an. Bei mir
ist es allerdings auch schon ein paar Jahre her, seit ich das letzte mal
was mit Eagle gemacht habe. Deshalb möchte ich erst mal nicht zu viel
versprechen.

Eine Sache ist mir aber auf den ersten Blick schon aufgefallen. Auf den
Top-Layer und auf dem Bottom Layer befindet sich eine gestricheltes
Rechteck, das einmal rund um die Platine läuft und teilweise mit
Leiterbahnen in Berührung kommt.
Da ich alle Lagen, die nichts mit Kupfer zu tun haben, ausgeschaltet
habe, fürchte ich dass das auch auf der Platine so sein wird. Diese
Strichellinie müsste man noch löschen, weil sie an manchen Stellen
Beinahe-Kürzschlüsse provoziert.

Gruß
         Kai
Autor: Kh Loeter (loeter)
Datum: 01.05.2009 01:09
Angehängte Dateien:

Soo,

Jetzt habe ich mich auch daran erinnert, wozu die gestrichelte Linie
war. Vergesst das letzte Posting, war Blödsinn. Wie gesagt Eagle ist
schon etwas länger her. Das sind natürlich die Masseflächen.

Ich hab mich nun ein wenig mit dem Layout beschäftigt und noch ein
bischen Kosmetik betrieben. Folgendes ist mir aufgefallen bzw. habe ich
geändert.

- Der Beschriftungsdruck von SV3 war vertauscht.
- Verschieben einiger Leiterbahnen, um ein paar Unterbrechungen der
Masse-Flächen zu beseitigen.
- Einfügen einer 8-Poligen Pfostenleiste an den Pins 1-8. Dann sind
diese ungenutzten Pins für Basteleien zugänglich. Wers nicht braucht,
muss es nicht einlöten.

Die Änderungen habe ich diesem Posting angehängt. Wär nicht schlecht,
wenn sich noch wer anders findet und nochmal drüber schaut.

Gruß

         Kai
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 09:15
Angehängte Dateien:

Hallo,

muss Dich leider enttäuschen, die DRC Schablone von Bilex findet da 26
Fehler (1 Kurzschluss), was Distanzen etc angeht. Ich habe die
Platinenumrand absichtlich etwas erweitert, da muss Luft sein zum Rand
zum Ritzen und Schneiden. Lade Dir bitte die .dru Datei von Bilex
herunter oder nimm diese im Anhang und lass den DRC drüber laufen. Bilex
nimmt nur fehlerfreie Platinen an.

Lade dann Dein Board nochmal hoch.
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 09:29

Hallo,

wir haben fast 20 Platinen zusammen...... bitte alle nmochmal melden,
die mir in den ersten beiden Tagen geschrieben haben und nicht auf der
Liste stehen.

Bisherige Besteller:

O.Hagendorf (2)
k. Hingst (8P + 10 Buchsen)
M. Prader (1)
L. Jentsch (1)
W.Friedl-Grimm (1)

zu jeder Platine kommt die FPC Buchse hinzu.

Bitte die FPC Buchsen dann mal bestellen, mich kontaktieren wegen der
Rechnung und mir diese dann bitte zusenden.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 01.05.2009 09:44

Hi,

>wir haben fast 20 Platinen zusammen

ist doch schön

der Link aus
Beitrag "Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen"
sind wirklich die gewünschten FFC-Stecker?
ich warte noch das Wochenende, wenn die Platinen bestellt werden,
ist ja die genaue Stückzahl bekannt

Wigbert
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 10:20

Bestell den mal, wenn er nicht passt geht das auf meine Kappe.
Schick mir mal ne Mail, damit die lieferadresse auf mich geht.
Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum: 01.05.2009 10:51

führ mal ratsnest aus, dann wird aus dem rechteck eine lückenfüllende
fläche ;)
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 01.05.2009 11:12
Angehängte Dateien:

>Bestell den mal, wenn er nicht passt geht das auf meine Kappe

und dann?

ob mal jemand, der die brd.Datei geladen hat, den Stecker mit dem
gerouteten Stecker vergleichen kann.

stimmen sollte das schon.

Wigbert
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 01.05.2009 11:15
Angehängte Dateien:

der Gerade,
falsche Seite erwischt

Wigbert
Autor: Kh Loeter (loeter)
Datum: 01.05.2009 11:47

@ Christian J.
Mein DRC hatte keine Fehler gezeigt. Danke für den Tipp. Aber kein
Problem, die meisten Fehler sind schon raus. Knifflig wirds mit den
Abständen an den Platinenrändern.

@ Hauke Radtki
Ratsnest habe ich dann auch entdeckt. Musste mich erst wieder an das
Eagle Look&Feel gewöhnen. Aber langsam kommt das verstaubte Wissen
wieder ans Tageslicht.

Mir ist aufgefallen, dass die Elkos alle 5mm Raster haben. Die Elkos die
ich hier von Reichelt rumliegen habe, sind meistens im 2,5-er Raster.
Bei den nicht allzu großen Werten auch verständlich. Ich versuch mal
noch den Elkos ein zweites Rastermaß als Alternativbestückung
beizubringen.

Was haltet ihr davon der Schaltung noch einen Reset Taster zu verpassen?

Könnte derweil schonmal jemand den Stecker mit dem gerouteten Stecker
vergleichen?

Ich schick nachher nochmal einen aktualisierten Stand.

Gruß
      Kai
Autor: Kh Loeter (loeter)
Datum: 01.05.2009 15:08
Angehängte Dateien:

Hi,

wie versprochen hier nun der aktuelle Stand.
Ich hab jetzt noch nen Reset Taster dazu gefummelt, und an den Elkos
sowie der Spule zusätzliche Pads für ein alternatives Rastermaß
eingefügt. Der DRC lief bei eben Fehlerfrei.

Da ich sicher auch Fehler mache, wers nett, wenn jetzt nochmal jemand
drüber schauen könnte.

Gruß
           Kai
Autor: Christian J. (Gast)
Datum: 01.05.2009 15:10

Hallo,

nimm bei der Drossel bitte auch 5mm Abstand. Ich habe hunderte davon
hier und kann die beilegen, meine haben einen sehr kleinen
Innenwiderstand, sind auf Ferrit gewickelt. Elkos ruhig alle auf 2,5mm,
notfalls nimmt man eben Tantals. 5mm würde ich weglassen.

Bitte das Layout dann heute noch schicken. Reset Taste braucht es wohl
eher nicht, der Platz wird langsam eng.
Autor: Kh Loeter (loeter)
Datum: 01.05.2009 15:17

Kann eigentlih einer erklären, warum sich auf dieser Platine in der
Freeware Version von Eagle manche Bauteile nicht verschieben lassen.
Eagle hat mir jetzt ziemlich oft eine Meldung gegeben, dass diese
Operation mit der Freeware-Version nicht möglich sei. Setzt man das
Bauteil dann woanders hin, dann geht es. Die Platine ist doch nur 80x100
groß, dann müsste doch alles gehen?
Autor: Kh Loeter (loeter)
Datum: 01.05.2009 15:20

Ich war wohl einen Tick schneller.

- Reset Taster ist drin.
- Raster 2,5 bei Elkos auch.
- Raster 5mm bei Drossel auch.

Schau mal bitte ob es so passt, mir laufen grad die Augen über.
Aktueller Stand ist als DIP3.zip im obigen Posting.

Die Raster 2,5 und 5 mm könnten evtl. nicht ganz exakt stimmen, weil ich
die Lötaugen von Hand platziert habe, und die Bauteile sich alle an
einem unterschiedlichen Raster orientieren. Das war wohl nicht von
Anfang an richtig eingestellt, oder ist geändert worden. 0,1mm hin oder
her dürften aber bei den bedrahteten Bauelementen kein Problem sein.

Gruß
          Kai
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 15:20

Hallo,

der Reset Taster ist zwar wegen der Äthetik nicht mein Fall aber man
muss ihn ja nicht einbauen, Ich würde sagen wir lassen es jetzt so, wenn
die Steckerfrage geklärt ist. Gefällt mir gut.

PS: Vielleicht mal eine Eagle 5.x Vollversion besorgen :-) Ich habe bis
heute noch nicht kapiert wie man Innenlagen routet, geschweige denn wie
man das einstellt.
Autor: Kh Loeter (loeter)
Datum: 01.05.2009 15:30

Mit der Freeware-Version gehen soweit ich weiss Innenlagen gar nicht.
Die Vollversion ist sicher nicht schlecht, aber für die wenigen Layouts
zu denen ich privat noch Zeit finde, lohnt sich die Anschaffung nicht.

Ich wollte mir eigentlich mal KiCAD genauer ansehen. Das ist OpenSource
und somit ohne Einschränkungen und Eagle sehr ähnlich. Denn manchmal
will man auch ne grössere Platine machen, auch wenn die Schaltung
einfach ist. z.B. um Befestigungslöcher zu irgendwas passend zu setzen.

Das wäre auch bei dieser Platine interessant gewesen. Dann hätte man die
Platine so dimensionieren können, dass sie genau auf die Langlöcher des
Displays passt.

Bzgl. dem Taster: Ich hab halt den genommen, den ich schon da hab.
Ausserdem ist er bei Pollin und Reichelt billig und leicht zu
beschaffen. Ich werd ihn wahrscheinlich auch erst dann drauflöten, wenn
ich vor habe an der Software rum zu stricken.

Gruß
         Kai
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 17:59

Hallo,

ich weiss nicht, ob mein ARM7 stark genug ist um den reset Pull Up
herunter zu ziehen, der Arm kann nur ~0,8mA pro Pin. Es wäre auf jeden
Fall noch wichtig eine Synchronisation zu schaffen, damit das Protokoll
nicht durcheinander kommt. Sowas hat jede gute Statemachine drin.

Kann da jemand was per Software bauen? Ggf. ziehe ich dann statt dem
Reset Pin einen anderen Pin zur Uart leiste, der intern zurücksetzt,
wenn er low gezogen wird. Oder zB resettet die Uart wenn sie 100 Mal
0x00 bekommt oder irgendetwas anderes. Evtl ist ja noch ein Timer frei,
der ~50ms nach dem letzten zeichen die Statemachine zurücksetzt.

Warum? es muss vermieden werden, dass sich der Avr in einem
undefinierten Zustand befindet, wenn nicht alle Zeichen kommen. Das ist
zb immer der Fall, wenn jemand am Host System auf Reset drückt. Es gibt
dann keine Chance mehr den Avr dazu zuu bewegen, dass er wieder auf
Befehle wartet.

Wie gesagt, das MUSS ein richtiges System drin haben, das gehört zu
Statemachines dazu.

1. Timer überwacht Uart, kommt x ms kein zeichen mehr leert er Puffer
etc und setzt zurück. Hat ARM automatisch, komt 3 Perioden kein Zeichen
wird ein Flag gesetzt.

2. Ein Pin wird abgefragt, ist sehr zeitsparend.

3. Eine Befehlsfolge wird vereinbart, zB ein Kommando 0xff wird oft
gesendet bis AVR mit 0xnn antwortet. Da wäre aber nicht so gut, weil ein
TX Pin für den Host ausreichen soll, ein Display antwortet normalerweise
gar nicht, bzw muss es nicht.

meine bevorzugte Lösung: 1

Wenn eben möglich sollte uart auf 56700 hochgedreht werden.
Autor: Sebastian (Gast)
Datum: 01.05.2009 18:06

Wie wärs einfach den Tx-Pin mit rauszuführen? Dann kann man je nach
bedürfnissen beliebig komplexe Bestätigungen zurücksenden bzw. über
diesen Pin synchronisieren.

Weils oben mal angesprochen wurde: Ich hab den Reichelt-Ram den Benedikt
ziemlich am anfang mal genannt hat (hat glaub ich 70ns). Der läuft bei
mir problemlos ohne Waitstates. Wie das bei einem anderen Exemplar ist
kann ich natürlich nicht sagen.

Sebastian
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 18:09

Hallo,

es gibt auch Leute die keinen Avr haben (zB ich :-) und es soll ja bei
mir als ARM, PIC user auch laufen. Ein biriktionales Protokoll ist immer
aufwendig, das mit der Busy leitung ist schon super,  ein Tx, ein GND
und eine Busyabfrage. Über die Busyabfrage könnte auch was laufen, wenn
sie zB 10us auf Input geschaltet und gesampled wird, damit der Host dort
resetten kann.

Ich hoffe nur jemand kann das für mich irgendwann machen, da ich uzwar
jemanden habe, der Avr bespielen kann aber mehr auch nicht.

Wenn der reichelt läuft ist es doch gut.

PS: Ich habe inzwischen auch eine smd Version (AVR als TQFP) fast
fertig, die ist nur halb so gross. Nur die schwer zu beschaffenden
Bauteile als bedrahtet belassen bzw nur dann smd wenn Platz gespart
wird.
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 18:13
Angehängte Dateien:

Hier mal ein Entwurf, 80 x65mm
Autor: Christian J. (elektroniker1968)
Datum: 01.05.2009 22:04

Hallo,

ich bitte alle Besteller eine Mail an admin@der-scirocco.de zu senden,
die NUR folgende Angaben enthält:

Betreff: Grafikcontroller
Name; Vorname
Lieferadresse
Telnr (für Komplikationen)
Anzahl Platinen.

Ich bestelle erst wenn ich alle Daten habe und schicke die Kontodaten
dann per Sammelmail raus. Die FPC Stecker sind fester Berstandteil der
Lieferung, kosten 70c glaube ich. Gratis gibts die Spule mit dabei.

Ich kann mit e-mails über kryptische Accounts ohne Name, ohne Adresse
wirklich nichts anfangen.

Gruss,
Christian

O.Hagendorf (2)
k. Hingst (8P + 10 Buchsen)
M. Prader (1)
L. Jentsch (1)
W.Friedl-Grimm (1)
T.Kalbe (2)
Autor: Christian J. (elektroniker1968)
Datum: 02.05.2009 15:13

Bestellung von 20 Platinen ist gerade abgeschickt worden. Bitte jetzt
auch die FPC Stecker bestellen.
Autor: Christian J. (elektroniker1968)
Datum: 02.05.2009 23:31

Habe auf 30 Platinen aufgestockt, da noch weitere Bestellungen kamen....
bitte 30 FPC Stecker bestellen, Ende nächster Woche sind die Platinen
da!
Autor: Kh Loeter (loeter)
Datum: 02.05.2009 23:35

Bitte 32 FPC Stecker bestellen. Sonst geht es mit den Platinen nicht
auf. Ich hab Christian gebeten bei meiner Bestellung noch zwei mehr dazu
zu legen.

Kai
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 03.05.2009 10:32

>Bitte 32 FPC Stecker

bis heut Abend kann die Steckeranzahl ja noch korrigiert werden

Wigbert
Autor: Christian J. (Gast)
Datum: 03.05.2009 22:26

Hallo,

funzt der Inverter von Pollin an deren Displays? Die haben derzeit nur
einen einzigen im Angebot für 4,95€ mit Lampe.

Wird ja mal Zeit zu bestellen, nech? ;-)
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.05.2009 00:47

Ja, der Inverter sollte gehen. Eventuell muss man die Betriebsspannung
etwas reduzieren, da der Inverter für längere Röhren (=mehr Spannung)
ausgelegt ist.
Ich betreibe die Displays immer mit der niedrigst möglichen Spannung, ab
der die CCFL sauber zündet.
Autor: Christian J. (Gast)
Datum: 04.05.2009 07:27

Benedikt,

danke für die Info. Schwingst Du Dich nochmal an den Code Deines
Erfolgsprojektes wegen der notwendigen Synchronisation? Busy Pin etc?
Bei mir gehts leider nicht, weil ohne Arme keine Kekse, AVR ist für mich
kein Thema.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.05.2009 08:54

Christian J. schrieb:
> Schwingst Du Dich nochmal an den Code Deines
> Erfolgsprojektes wegen der notwendigen Synchronisation? Busy Pin etc?

Wenn du mir genau sagst was ich machen soll, kann ich es versuchen.
Autor: Christian J. (elektroniker68)
Datum: 04.05.2009 09:59

Hi,

irgendeine Möglichkeit, den Controller in den Idle State zu kriegen,
d.h. wenn nach dem x.ten Byte der Strom abreisst aber y Bytes erwartet
werden muss er raus wieder in den Empfang. Der Busy Pin liesse sich doch
10us auf Input schalten und auswerten, der kurze Kurzschluss macht es ja
auch nicht.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.05.2009 10:01

Wie weiter oben erwähnt: Etwas besseres als den Reset Pin rauszuführen
fällt mir nicht ein.
Eine weitere Möglichkeit wäre zwischen Daten und Befehlen zu
unterscheiden (z.B. über ein bestimmtes Byte das vor einem Befehl
gesendet wird. Allerdings muss man dieses dann, falls es zufällig ein
Datenbyte ist, auch wieder extra kennzeichnen, was die Ansteuerung
wiederum aufwendiger macht.)

Bzw. eine Möglichkeit gibt es momentan schon: Worst case erwartet der
Controller 255x255=65025 Bytes.
Der Befehl 0 ist nop. Wenn man also 65025x 0 sendet, dann sollte der
Controller wieder bereit sein für neue Befehle.
Ich könnte das ganze noch auf 80x240=19200Byte begrenzen, dauert bei
57600Baud aber trotzdem noch 3,3s.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 04.05.2009 10:05

Hi,

mal für Dumme, war da nicht schon ein Busy Pin vorhanden,
der den Datenfluss stoppt und was soll synchronisiert werden?
Ok es gibt wohl keine Check Rückantwort,
das alles richtig angekommen ist, wäre bei Einsatz eines Abgesetzten
Displays vielleicht notwendig.

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.05.2009 10:08

Wigbert Picht-dl1atw schrieb:
> mal für Dumme, war da nicht schon ein Busy Pin vorhanden,
> der den Datenfluss stoppt und was soll synchronisiert werden?

Ja, den gibt es. Der stoppt die Datenübertragung wenn der Empfangspuffer
überläuft.
Autor: Christian J. (elektroniker68)
Datum: 04.05.2009 12:39

Leute,

nicht so schwerfällig. Jedes Protokoll MUSS eine Möglichkeit bieten,
dass es aus einemm fernen State zurück in den Idle State kommt. Die
ganze Sache ist ja nichts anderws als eine Statemachine.

Meinetwegen kann man das auch mit dem WDT machen, dass er aus einer
Empfangsschleife rausgeht, wenn keine neuen Bytes mehr kommen, jedoch
müssen natürlich die Inhalte des Sram unverändert bleiben.

Timeout ca 100ms. Derzeit hängt der Avr unrettbar fest, wenn das
Protokoll unterbrochen wird oder man sendet dermassen viel Müll rüber,
dass selbst die Bitmap Funktion überläuft.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.05.2009 12:54

Christian J. schrieb:
> Meinetwegen kann man das auch mit dem WDT machen, dass er aus einer
> Empfangsschleife rausgeht, wenn keine neuen Bytes mehr kommen, jedoch
> müssen natürlich die Inhalte des Sram unverändert bleiben.

Kann ich gerne einbauen, ist eine Sache von ein paar Sekunden. Aber wie
gesagt: Ich finde die Lösung nicht gut, denn dann resettet der AVR
ununterbrochen wenn keine Daten gesendet werden.

> Derzeit hängt der Avr unrettbar fest, wenn das
> Protokoll unterbrochen wird oder man sendet dermassen viel Müll rüber,
> dass selbst die Bitmap Funktion überläuft.

Das stimmt nicht: Wie oben geschrieben: Man muss einfach nur Daten
senden, damit die Funktion die erwartete Anzahl bekommt. Wenn man nicht
weiß wieviele, dann einfach 0en senden, denn die werden als Befehl
ignoriert.
Autor: Michael Prd (praderbz)
Datum: 04.05.2009 16:59

Vielleicht ist es eine bescheuerte Idee, aber wie wäre die Anwendung des
SLIP-Protokolls?

Lg
Michael
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.05.2009 17:42

Das geht in die oben erwähnte Richtung, dass es feste Werte gibt die
einen neuen Befehl ankündigen, ähnlich STX/ETX.
Soll ich das ganze auf solch ein Protokoll umbauen (ähnlich dem das ich
bei meinem 640x480 Controller verwendet habe)? Also alle Daten die
ankommen sind Bild oder Textdaten, erst wenn ein bestimmtes Zeichen
erkannt wird (z.B. der Escape Code 27), dann wird der darauffolgende
Wert als Befehl interpretiert.
Um den Datenwert 27 zu senden ist dieser 2x hintereinander zu
übertragen.

Das ganze hat dann den Nachteil, dass man nicht dumm die Bilddaten
übertragen kann, sondern alle Bytes auf den Wert 27 prüfen muss, und
diesen dann doppelt einfügen muss. Dies empfand ich als ziemlich nervig.
Autor: O. Hagendorf (ohagendorf)
Datum: 04.05.2009 19:13

>Christian J. schrieb:
>> Meinetwegen kann man das auch mit dem WDT machen, dass er aus einer
>> Empfangsschleife rausgeht, wenn keine neuen Bytes mehr kommen, jedoch
>> müssen natürlich die Inhalte des Sram unverändert bleiben.

Benedikt K. schrieb:
>Kann ich gerne einbauen, ist eine Sache von ein paar Sekunden. Aber wie
>gesagt: Ich finde die Lösung nicht gut, denn dann resettet der AVR
>ununterbrochen wenn keine Daten gesendet werden.

Ohne jetzt die Sourcen bzw. das Protokoll genau zu kennen, aber was
spricht dagegen den WDT erst dann zu aktivieren, nachdem das erste Byte
empfangen wurde und wieder zu deaktivieren, wenn alle Kommandos
abgearbeitet wurden?
Dann is ein einfacher Neueinstieg möglich, sollte ein Kommando
abgebrochen werden und der ständige Reset wird vermieden, wenn der Host
gerade keine Kommandos sendet.
Autor: Christian J. (Gast)
Datum: 04.05.2009 19:23

Ohne jetzt die Sourcen bzw. das Protokoll genau zu kennen, aber was
spricht dagegen den WDT erst dann zu aktivieren, nachdem das erste Byte
empfangen wurde und wieder zu deaktivieren, wenn alle Kommandos
abgearbeitet wurden?

---

Wenn der Avr einen solchen WDT hat, der sich abschalten lässt wäre das
eine gute Lösung. Das Protokoll sollte einfach bleiben, so dass jeder
damit umgehen kann.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 04.05.2009 21:11
Angehängte Dateien:

Ich habe mal den besagten Timeout eingebaut. Allerdings nicht global
über den WDT, sondern nur lokal in der Schleife die die Bilddaten
empfängt.
Bei allen anderen Befehlen hängt das ganze also weiterhin, was meiner
Meinung nach nicht schlimm ist, denn für die restlichen Befehle reichen
worst case 8 nops. Notfalls kann ich das aber noch einfügen, es macht
den Code halt etwas unleserlich und bläht diesen etwas auf.
Im LCD Interrupt wird eine Variable runtergezählt, und sobald diese 0
erreicht wird die Empfangsschleife für Bilddaten verlassen und mit den
normalen Befehlen/Daten weitergemacht. Dies hat den Vorteil, dass sich
auf dem Display nichts verändert, da der Controller ja weiterläuft und
nicht neu startet.
Das Timeout ist momentan auf 1s eingestellt, kann aber zwischen etwa
1/100 bis 3s verändert werden.

Die nächste Frage wäre dann noch die Baudrate:
57600 bei 16MHz ist grenzwertig (2,1% Fehler). Im 2x Modus reduziert
sich der Fehler auf 0,8%, allerdings gefällt mir der 2x Modus aufgrund
der 1x Abtastung nicht sonderlich, da hierdurch alles fehleranfälliger
wird.

Hier gibt es nun mehrere Alternativen:
- andere (höhere?) Baudrate, wie 62,5kBaud, 125kBaud, 250kBaud, 500kBaud
usw.
- 18,432MHz Quarz für etwas mehr Rechenleistung und alle
Standardbaudraten, dafür aber etwas außerhalb der Specs.
- 2x Modus nehmen und fertig.
Autor: Christian J. (Gast)
Datum: 04.05.2009 21:32

Hallo,

lass mal die Baudrate so, die anderen kann ich nicht einstellen.

Mist, habe mein LPC2368 Board grad geschossen, der Proz ging in einer
Rauchwolke auf ;-(((((((( Wird wohl dauern ein neues aus China zu
kriegen.
Autor: Christian J. (Gast)
Datum: 04.05.2009 21:33

Das Verückte ist, dass er noch auf der Uart seinen Text ausgibt aber
binnen 1s so heiss wird, dass man ihn nicht mehr anfassen kann.
Autor: Christian J. (elektroniker68)
Datum: 05.05.2009 14:09

Info: Der LP Hersteller hat noch bis morgen Urlaub und daher noch nicht
geantwortet. Es sind bisher 4 Zahlungen eingegangen. Danke dafür.
Autor: Christian J. (elektroniker68)
Datum: 07.05.2009 13:47

Zwischenstand:

Das Geld ist von allen bis auf einen eingetroffen. Leider habe ich
bisher kein Feedback von Bilex-lp.com erhalten, auch auf Nachfrage
nicht. Die Firma habe ich mir empfehlen lassen aber ich denke, dass es
manchmal besser ist ein paar Euro mehr zu bezahlen und in Deutschland
fertigen zu lassen statt in Rumänien. Die haben nicht mal eine
Telefonnummer. Ok, das Geld habe Sie natürlich auch noch nicht. Erst
Ware dann Kohle.

Ich habe denen Frist gesetzt, danach werde ich woanders fertigen lassen.
Ob es bei den 11,50€ dann bleibt weiss ich jedoch nicht.
Autor: Christian J. (elektroniker1968)
Datum: 07.05.2009 21:51

Es fehlen noch die Überweisungen von

Michael Prader
Wolfgang Friedl-Grimm

Bitte nachholen.

Bilex hat sich gemeldet, Platinen werden morgen eingestielt. Es werden
10 Stück Überhang werden, sind also noch welche zu haben.

Wie steht es mit den Steckern?

Benedikt, wärest Du vielleicht so nett und würdest mit einen
programmierten AVR senden mit der neuen Software? Ich überweise Dir die
Kosten dann sofort.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 08.05.2009 09:08

Christian J. schrieb:

> Benedikt, wärest Du vielleicht so nett und würdest mit einen
> programmierten AVR senden mit der neuen Software?

Kann ich machen, sag mir mal die genauen Parameter für Baudrate usw. die
du haben möchtest.
Vermutlich wäre es aber besser wenn du dir einen einfachen Programmer
baust (die einfachen bestehen im Prinzip nur aus nem Stecker für den
LPT), da ich davon ausgehe, dass es doch mal noch die ein oder andere
Softwareänderung geben wird.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 08.05.2009 09:36

Hi,
ich hab 33 Stecker bei Digikey bestellt, da sie auch schon bezahlt
sind, kann ich die Stückzahl nicht mehr erhöhen.
Müsste Anfang der Woche in DL eintreffen.

Wigbert
Autor: Christian J. (elektroniker68)
Datum: 08.05.2009 10:55

Benedikt,

bauen wollte ich gar nichts, fertig kaufen ist besser. Gibt es sowas wie
Flashmagic + Programmierstecker fertig zu kaufen, also ohne grossen
Aufwand die Dinger bespielen?
Autor: Christian J. (elektroniker68)
Datum: 08.05.2009 11:01

Hallo,

leider gibt es mit Bilex Probleme. Die verlangen Vorkasse und dazu bin
ich nicht bereit, da diese Firma nicht in Deutschland ist und das auch
sehr unüblich ist. Bezahlung erst wenn Ware geprüft wurde, das ist meine
Vorstellung aus dem Geschäftsleben. Sollte ich mit denen nicht
übereinkommen werde ich einen anderen Hersteller suchen, etwas
beta-layout weil ich mit denen schon vor 15 Jahre gute Erfahrungen
gemacht habe.
Autor: Juergen G. (Gast)
Datum: 08.05.2009 12:40

Hallo Christian,

besteht noch die Möglichkeit an Platinen und LCD-Stecker ranzukommen ?

Gruß Jürgen
Autor: Christian J. (elektroniker1968)
Datum: 08.05.2009 16:11

Update: Mit Bilex nach Rümänien telefoniert und den Deal klar gemacht.
Kohle ist überwiesen.

Ja, es sind noch 10 Stück übrig. Bitte so verfahren, wie oben
beschrieben.
Autor: Kh Loeter (loeter)
Datum: 08.05.2009 16:14
Angehängte Dateien:

@Christian

> Sollte ich mit denen nicht übereinkommen werde ich einen anderen
> Hersteller suchen, etwas beta-layout weil ich mit denen schon vor 15 Jahre >
gute Erfahrungen gemacht habe.

Hallo Christian,

Solltest Du den Hersteller wechseln, dann möchte ich die Gelegenheit
nutzen und noch ne kleine Layout-Änderung einbringen. Mein Kollege, der
Layouter ist, meinte: Es könnte evtl. mit den 10mil-Abständen Probleme
geben. Um ungewollte Brücken zu vermeiden habe ich deshalb die
Design-Rules mal auf 15mil verschärft, und die sich daraus ergebenden
Fehler beseitigt.

Die geänderten DRC-Rules habe auch beigelegt. Vor dem Ausführen der
Ratsnest Funktion sollten diese geladen werden.

Hier der neue Platinenstand. DRC ist jetzt wieder fehlerfrei.

Gruß
Autor: Kh Loeter (loeter)
Datum: 08.05.2009 16:23

> Update: Mit Bilex nach Rümänien telefoniert und den Deal klar gemacht.
> Kohle ist überwiesen.

Kann man denen die neue BRD-Datei trotzdem noch geben?
Autor: Christian J. (elektroniker1968)
Datum: 08.05.2009 20:53

Habe sie hingeschickt aber keine Ahnung, ob das noch geht. Ist ein
bisschen spät und ob das jetzt den Unterschied macht? Die Platine wäre
ok sagten die.

8 Platinen sind noch übrig, zwei weitere Besteller kamen hinzu.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 09.05.2009 08:07

Christian J. schrieb:
> bauen wollte ich gar nichts, fertig kaufen ist besser. Gibt es sowas wie
> Flashmagic + Programmierstecker fertig zu kaufen, also ohne grossen
> Aufwand die Dinger bespielen?

Es gibt so ziemlich alles zwischen schnell und selbstgebaut bis hin zur
teuren, industrietauglichen Lösung:
http://www.mikrocontroller.net/articles/AVR_In_Sys...


Ob 10mil oder 15mil sollte eigentlich egal sein.
Wenn die mit 10mil Probleme haben, dann wäre der Laden schon lange
pleite. 8mil sollte heutzutage jeder Platinenhersteller können.
Autor: Christian J. (elektroniker1968)
Datum: 09.05.2009 14:35

Kannst Du mir einen Link zu einer Fertigplatine geben die ich bestellen
kann, RS232 oder so? Software gleich dabei. Klingt doof aber icb will
mich damit nicht befassen, aufbauen etc, es nur benutzen für diesen
einen Zweck.
Autor: Bernd Schröter (drchip)
Datum: 09.05.2009 17:22

Christian J. schrieb:
> Kannst Du mir einen Link zu einer Fertigplatine geben die ich bestellen
> kann, RS232 oder so? Software gleich dabei. Klingt doof aber icb will
> mich damit nicht befassen, aufbauen etc, es nur benutzen für diesen
> einen Zweck.

Hier mal ein Link, ist genau für das 320x240.

http://www.bue.de/produkte-und-dienstleistungen/mt-gr.html

Das MT/GR S Board

Bernd
Autor: Christian J. (elektroniker1968)
Datum: 09.05.2009 20:30

Hallo Bernd,

die kenne ich, die gibts auch von Electronic Assembly, kosten so runde
180€ und beliefern auch keine Privatleute. Es gibt ohnehin nichts, was
es nicht gibt, wenn man bereit ist das zu bezahlen. Ob es das Hobby wert
ist sei dahingestellt. Das von Benedikt ist schon korrekt und vor allem
Open Source.

Ich meinte nur den Programmer für den AVR.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 17.05.2009 10:44

@Christian J. (elektroniker1968)
>Die Stecker sind leider auch noch nicht hier

kein Problem, Proformarechnung hast Du, nach Zahlungseingang
verschicke ich die Ware

Wigbert
Autor: Christian J. (elektroniker1968)
Datum: 17.05.2009 11:12

Habe ich da was verpasst? Ich habe keine e-mail hier mit einer Rechnung.
Bitte sende diese nochmal an admin@der-scirocco.de.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 17.05.2009 11:33

@Christian J. (elektroniker1968)
schon geschehen.

Wigbert
Autor: Nichtbezahler (Gast)
Datum: 17.05.2009 11:49

> Mit Ausnahme eines Nichtbezahlers haben alle bezahlt,
> Der Nichtbezahler hat dann leider Pech gehabt.
Das Geld ging letzte Woche Mittwoch raus. Also gib mal den Banken noch
etwas Zeit, es eilt ja nicht da du offensichtlich auch noch keine Ware
bekommen hast.

Bitte den Namen oben editieren und unkenntlich machen.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 17.05.2009 12:01

Da der Beitrag nicht mehr editiert werden kann, habe ich diesen mal
gelöscht, hier ist der Inhalt mit dem Namen unkenntlich gemacht:

Christian J. schrieb:
> Update:
>
> Mit Ausnahme eines xxx haben alle bezahlt, xxx hat dann leider
> Pech gehabt.
>
> Die Platinen sind leider noch nicht da, finde ich schon etwas heftig, da
> die 5 AT garantieren. Die Stecker sind leider auch noch nicht hier
> angekommen, Adresse hatte ich aber geschickt.
Autor: Christian J. (elektroniker1968)
Datum: 17.05.2009 17:09

Hallo,

Überweisung des Nichtbezahlers ist jetzt da, kam gestern wohl noch rein.
Ich werde denen mal Druck machen, dass die liefern.
Autor: Gassst (Gast)
Datum: 17.05.2009 20:32

ob das alles was wird???????????????
Autor: Sebastian (Gast)
Datum: 17.05.2009 20:43

Hallo,

hab dem Code ne Erweiterung zum entprellen einer Tastenmatrix
hinzugefügt.
Ich denke zum Debuggen ist das dann super. Display und Taster mal
schnell an ein Projekt unkompliziert über die UART anschließen - dürfte
einiges vereinfachen.
Ist für eine 2*4 Matrix, also 8 Taster. Der entprellte Zustand wird bei
jedem Wechsel über UART ausgegeben. 2*4 Tasten, weil ich die anderen 2
Pins wahrscheinlich noch brauch, 8 Taster für mich reichen und der
Aufwand für eine neunte Taste bei 3*3 unverhältnismäßig hoch gewesen
wäre. Außerdem müsste man sich bei mehr als 8 Tastern schon wieder
gedanken über das Interface machen.

Ich würde das gerne hier online stellen. Hatte aber etwas probleme
Benedikts Sourcen im AVR Studio (mit gcc) als Projekt zu öffnen.
Dementsprechend schaut das ganze momentan sehr wild aus.
Wenn mir jemand erklärt, wie das zueg sauber öffnen kann stell ich meine
Sourcen gerne hier rein.

Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 18.05.2009 09:47
Angehängte Dateien:

Ich musste gerade feststellen, dass die neueren Versionen von WinAVR
12Bytes mehr Stack verschlingen als die 2007er Versionen. Somit lag der
komplette worst case SRAM Verbrauch bei 518 Bytes was in ungünstigen
Situationen (der Timer Interrupt tritt auf, während eine Box gezeichnet
wird und er befindet sich gerade in der Set Pixel Routine) zu Problemen
führt.
Daher habe ich int main(void) __attribute__((OS_main)); dem Code
hinzugefügt, um das Sichern der Register vor dem Aufruf von main zu
unterdrücken. Damit werden 15 Bytes eingespart, so dass nun wieder ein
klein wenig mehr Platz im SRAM ist.

Die älteren Versionen von WinAVR können damit nichts anfangen, daher
wird dieses Attribut mit einer Warning ignoriert. Dies macht aber
nichts, denn bei denen reicht der RAM auch so.

Im Zweifelsfall kann man den Stack hiermit prüfen:
Beitrag "StackViewer (RAM Rechner) für WinAVR"
Damit sollte mit der 20090313 Version ein Wert von 503 Bytes rauskommen.
Autor: Sebastian (Gast)
Datum: 18.05.2009 09:53

/** Size of the circular receive buffer, must be power of 2 */
#define UART_RX_BUFFER_SIZE 250

Passt doch nicht ganz zam, oder? Power of 2 heißt doch 2-er Potenz,
demnach wäre 128 und 256 möglich. Nachdem 256 zu groß ist also 128. Oder
sind hier tatsächlich vielfache von 2 gemeint?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 18.05.2009 10:09

Die Kommentare passen nicht mehr ganz. Das ganze war mal die UART Lib
von Peter Fleury, mittlerweile ist allerdings nicht mehr viel von dem
eigentlichen Grundgerüst davon übrig geblieben, da ich alles etwas an
meine Bedürfnisse angepasst habe (so wie z.B. das Hardware Handshaking
wenn der Puffer voll wird). Jetzt sind damit auch beliebige UART
Puffergrößen möglich.
Autor: Gast (Gast)
Datum: 18.05.2009 10:11

In uart.h (62)heißt es:
/** Size of the circular receive buffer, must be power of 2 */
#define UART_RX_BUFFER_SIZE 256

Wo steht denn diese 250?

http://en.wikipedia.org/wiki/Power_of_two
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 18.05.2009 10:18

Das war eine Version die ich wieder gelöscht habe, da mir kurz darauf
eingefallen ist, dass ich diesen Trick mit den Registern vor main machen
kann, und so nicht den UART Empfangspuffer zu verkleinern brauche.
Autor: Sebastian (Gast)
Datum: 18.05.2009 10:21

In der aktuellen Version (die von heute) steht genau an der Stelle ein
Puffer von 250 Byte. Aber Benedikt hat das ja schon geklärt.

Aber nochwas: Wenn ich die aktuelle Version durch StackView schicke
bekomm ich immer 483 Byte Ramverbrauch. Sowohl mit der Comilierten
version von Benedikt als auch wenn ich es selbst mit Version 20090313
compiliere.

Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 18.05.2009 10:31

Was für eine Optimierung hast du eingestellt?
-0: geht nicht, da zu wenig Flash
-1: 513
-2: 503
-3: 484
-S: 469

Der Stackverbrauch alleine schwankt also zwischen 75 und 119 Bytes. Das
finde ich schon recht heftig.
Ich verwende meinst -2 da die -S ab und zu dazu tendiert anstelle von
Inline lieber eine Bibliotheksfunktion aufzurufen, auch wenn dies sehr
viel langsamer ist.
Autor: Sebastian (Gast)
Datum: 18.05.2009 10:42

Hab das Makefile benutzt, das im zip dabei ist, also O2. Aber auch wenn
ich die ELF aus dem zip durch StackViewer schicke komme ich auf 483
Byte.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 18.05.2009 11:34

Zeigt das Programm zufällig irgendwelche Errors oder Warnings an?
Falls nein, poste mal bitte die erzeugte calltree.txt.
Eigentlich müsste nämlich das selbe rauskommen.

Ich habe mal die verschiedenen Optimierungsstufen verglichen:
-0 ist eindeutig das schlechteste, ist klar.
-1 ist etwas besser aber auch noch suboptimal.
-s, -2 und -3 sind geschwindigkeitsmäßig ähnlich. Die lcd_init (die auch
das Begrüßungsbild erzeugt) benötigt bei allen Varianten 207,8 +/-0,1ms.
Dies dürfte vor allem daran liegen, dass die häufig verwendeten
Funktionen in Assembler geschrieben sind, und daher bei allen Varianten
identisch sind.
Der Geschwindigkeitsvorteil der -2 Version wird ziemlich durch das
vermehrte sichern der Register kompensiert, so dass die -s Version
aufgrund des geringeren Stack Verbrauchs die beste sein dürfte.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 18.05.2009 12:59

@ Christian J. (elektroniker1968)
Dank Dir, die Stecker sind per DHL zu Dir unterwegs.

Wigbert
Autor: Sebastian (Gast)
Datum: 18.05.2009 16:35

Ich denke es hat sich erledigt. Ich hatte die version mit 250 Byte UART
Fifo runtergeladen. Hab mir die Zip also genau zum falschen Zeitpunkt
gezogen. Dass du das zip nochmal aktualisiert hast ist mir erst jetzt
aufgefallen. Kann jetzt nicht sagen, was ich mit der neuen Version an
Ram-Verbrauch bekomme, weil ich hier kein Studio/gcc hab, aber ich denke
mal es sollte dann passen.

Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 18.05.2009 17:00

Trotzdem ist es seltsam. Diese Version hatte ich auf exakt 511 Bytes
getrimmt. Bei 483 Bytes wären die 12 Bytes zusätzlich nämlich egal.
Autor: Sebastian (Gast)
Datum: 18.05.2009 18:49
Angehängte Dateien:

Fehlermeldungen gibts keine. Hab jetzt mal das Projekt wie ichs im
Studio compiliert hab angehängt. Ist die version mit 250 Byte UART FIFO.
Im Zip sind außerdem die Calltree und die StackView-version mit der ich
das erzeugt habe, damit man auch alles nachvollziehen kann.

Ich denke aber, das register-sichern vor der Main zu unterdrücken
schadet keinesfalls. Erst recht wenn jemand erweiterungen schreiben will
und nicht wirklich über den Ram nachdenkt.

Was mir grad noch auffällt: Kann es sein, dass du deine Version vom
StackViewer noch nicht online gestellt hast? Bekomme nämlich auch bei
der aktuellen LCD-Version mit 256Byte UART FIFO nur 475 Byte
Ram-Verbrauch.

Sebastian
Autor: Christian J. (elektroniker1968)
Datum: 19.05.2009 01:23

Könnte mal jemand die letzte Version der Software online stellen? Ich
weiss immer noch nicht wie ich einen programmierten Chip kriege :-(

Ach ja: Die Platinen sind seit dem 13.5. unterwegs nach Auskunft von
Bilex. Kann sich ja nur noch um Tage handeln, bis die eintrudeln.
Erfreulichweise sind auch alle Zahlungen da.

Es sind noch 4 Platinen übrig.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 19.05.2009 08:08

Die Software ist hier:
http://www.mikrocontroller.net/attachment/51086/lc...

Den Chip schicke ich heute weg, ich musste erstmal passende
Luftpolsterumschläge besorgen, da ich mit normalen Briefumschlägen bei
so dicke Sachen schlechte Erfahrungen gemacht habe.
Autor: Christian J. (elektroniker1968)
Datum: 19.05.2009 20:32

Hi,

dann sende mir auch Deine Kontodaten per e-mail. Die Stecker sind heute
schon angekommen, danke für den schnellen versand.  Leider passen sie
nicht auf das Kabel...... :-(

Quark.... Die Schuhe passen wie angegossen :-)

Versand geht los, sobald ich die Platinchen endlich habe.
Autor: Christian J. (elektroniker1968)
Datum: 20.05.2009 18:41
Angehängte Dateien:

Tata...... die Post war da !
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 02:16
Angehängte Dateien:

Es wächst und gedeiht, leider noch nicht alle Bauteile zusammen....

Der Elko rechts verdeckt leider etwas das Bohr-Loch, denke ich werde die
Platinen nochmal einstampfen und neue machen lassen, sowas geht ja gar
nicht ;-)

PS: Es sind noch 3 Platinen zu haben, jedoch ohne FCP Stecker. Die
sind alle.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 21.05.2009 07:56

Ich würde die Platine so nicht in Betrieb nehmen:
Der mega8515 steckt falsch rum drin.
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 11:49

Das war nur fürs Foto. Inbetriebnahme natürlich wie immer ohne ICs,
durchmessen der Spannungen und dann erst die ICs rein.

Für welche RAM Zeit sind die Delays denn eingestllt? Ich habe nur noch
uralte SRAM hier, vermutlich so 8 Jahre alt. Keine Ahnung ob die
funktionieren.

Ach ja, es gibt noch einige Punkte:

- R8 hat 1 Ohm?
- Ein Kondensator in der Liste hat keinen Wert
- Kann der Ladekondesator der Spg.pumpe 100uF sein? Grössere passen
leider nicht rein.
- Kann ich auch eine 180uH Spule nehmen? 470uH scheint mir etwas viel zu
sein. Von den 180uH habe ich hunderte, die kann ich beilegen.
- Kann der 100 Ohm Widerstand am BC327 auch 150 Ohm sein? Warum sind die
Werte an der Basis so klein? Bei mir liegen die immer im Kiloohm
Bereich.
Glaube der ist auch überflüssig, bei den kleinen Strömen hätte man den
internen Transistor nehmen können.

Mich wundert nur, dass kein Poti frü Kontrast da ist, lässt der sich
einstellen?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 21.05.2009 13:46

Christian J. schrieb:
> Für welche RAM Zeit sind die Delays denn eingestllt? Ich habe nur noch
> uralte SRAM hier, vermutlich so 8 Jahre alt. Keine Ahnung ob die
> funktionieren.

Die Delays sind für die schnellen RAMs, die ich auch empfehlen würde.
Dein RAM scheint 120ns zu haben, das dürfte etwas zu langsam sein.
Abgesehen vom Bildinhalt sollte die Schaltung aber dennoch
funktionieren.

> - R8 hat 1 Ohm?
> - Ein Kondensator in der Liste hat keinen Wert
> - Kann der Ladekondesator der Spg.pumpe 100uF sein? Grössere passen
> leider nicht rein.

Auf welchen Schaltplan bezieht sich das?

> - Kann ich auch eine 180uH Spule nehmen? 470uH scheint mir etwas viel zu
> sein. Von den 180uH habe ich hunderte, die kann ich beilegen.

Ja, sollte gehen.

> - Kann der 100 Ohm Widerstand am BC327 auch 150 Ohm sein?

Ja. Die Werte sind alle eher unkritisch. Nur der Spannungsteiler der die
Ausgangsspannung des 34063 einstellt sollte in etwa das gleiche
Verhältnis haben wie die angegebenen Werte.

> Warum sind die
> Werte an der Basis so klein? Bei mir liegen die immer im Kiloohm
> Bereich.

Weil der Transistor schnell schalten soll um einen hohen Wirkungsgrad zu
erzielen. Desweiteren fließen bei 330 Ohm gerade mal etwa 13mA
Basisstrom.
Bei ein paar 100mA Spitzenstrom sind die auch notwendig.

> Glaube der ist auch überflüssig, bei den kleinen Strömen hätte man den
> internen Transistor nehmen können.

Der interne Transistor ist ein NPN Darlington. Der hat also >1V
Spannungsabfall. Das sind alleine >20% bei 5V die hier verloren gehen.
Der externe PNP hat dagegen wenige 100mV Spannungsabfall.

> Mich wundert nur, dass kein Poti frü Kontrast da ist, lässt der sich
> einstellen?

Per Software (Befehl 15).
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 22:04

Hallo,

danke. Es gibt aber ein problem: Der DC/DC Wandler arbeitet nicht. Ich
habe alle ICs draussen und nur den Wandler Chip Drin. Ausgang: 0V.
Feedback Eingang auch 0V. Transistor hat an der Basis 5V.

Muss der AVR drin sein, damit der arbeitet?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 21.05.2009 22:14

Christian J. schrieb:
> danke. Es gibt aber ein problem: Der DC/DC Wandler arbeitet nicht. Ich
> habe alle ICs draussen und nur den Wandler Chip Drin. Ausgang: 0V.
> Feedback Eingang auch 0V. Transistor hat an der Basis 5V.

Mess mal die Spannung an Pin 4 vom 34063.
Der Ausgangselko dient wenn er leer ist als Brücke zu GND um den 34063
zu Starten. Wenn der Elko zu klein ist (<10µF) dann startet der 34063
nicht.

> Muss der AVR drin sein, damit der arbeitet?

Ja. Ohne den ist der Feedback Eingang offen und die Spannung schießt
nach oben. Testweise kann man C7 in diesem Schaltplan kurzschließen um
das zu umgehen.
http://www.mikrocontroller.net/attachment/44475/lc...
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 22:16

Pin 4 ist -1.25V gegen Eingangs-Masse. Der Elko hat 100uF

C7 habe ich entfernt, da ich den für überflüssig hielt, hatte nicht
gesehen, dass der nicht parallel zu amdern war. Da scheint auch der
Fehler zu liegen. Tja, nicht so gut. Hoffentlich verlange die Leute
jetzt nicht ihr Geld zurück, denn der muss nun per Hand eingefügt
werden. Kann aber direkt auf zwei smd Pads gesetzt werden, mechanisch
sehr einfach.
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 22:34
Angehängte Dateien:

Also, hier das Bild, wo der 10uF hinmuss. Direkt auf die smd
Widerstandspads löten, zwischen dem 47k und +5V.

Starten tut er leider immer noch nicht. Mist!
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 21.05.2009 22:53

Christian J. schrieb:
> Pin 4 ist -1.25V gegen Eingangs-Masse. Der Elko hat 100uF

Wenn -1,25V anliegen, dann läuft die Schaltung doch.

Das hier ist die richtige Version, oder?
http://www.mikrocontroller.net/attachment/50561/DIP4.zip

Prüf mal R5. Wenn der fehlt, dann kommen nur -1,25V raus.

> C7 habe ich entfernt, da ich den für überflüssig hielt, hatte nicht
> gesehen, dass der nicht parallel zu amdern war. Da scheint auch der
> Fehler zu liegen.

Der ist nur für die PWM notwendig: Der glättet das PWM Signal mit R1 und
erzeugt so eine Spannung mit etwa 0-5V (bzw. etwas darunter). Um diesen
Wert lässt sich die Ausgangsspannung verschieben.
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 23:13
Angehängte Dateien:

Hallo,

ich habe DIP3 machen lassen, da DIP4 zu spät nachgereicht worden ist.
Der hat nur 15mil statt 10mil Abstände. Macht aber nichts.

So, wir haben jetzt ein problem und Du kannst verstehen, dass ich nervös
werde, da die Leute funktionierende Platinen erwarten. Der Chip läuft,
den brauche ich nur in meine Lochraster zu stecken, wo er herkam aber da
ist er ein Aufwätswandler.

Widerstände etc sind drin, alle auch richtige Werte. Transistor
testweise getauscht. Den 10uF habe ich nachgefügt, war kein Thema.

Und er läuft eben nicht. Es stehen -1.25V an statt der -20 o.ä.. Da ich
mich blind auf eine richtige Schaltung verlassen habe stelle ich die
hier nochmal ein, damit jeder nachschauen kann, ob da was nicht richtig
ist ausser dem 10uF. Die Platinen sind einwandfrei.
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 23:17
Angehängte Dateien:

Hier mal das erste Foto....
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 23:20
Angehängte Dateien:

Und hier von gegenüber.... mit dem 10uF auf den beiden Pads.

Ich finde da kein Problem. Auf dem Oszi ist auch deutlich zu sehen, dass
der Schaltet, ebensoo die Spulenschwingung, der Duty Cycle ist sehr
klein.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 21.05.2009 23:24

Christian J. schrieb:


> Und er läuft eben nicht. Da ich mich blind auf eine richtige Schaltung
> verlassen habe stelle ich die hier nochmal ein, damit jeder nachschauen
> kann, ob da was nicht richtig ist ausser dem 10uF. Die Platinen sind
> einwandfrei.

Es sollte eigentlich funktionieren, und es tut es ja auch teilweise.
Wenn 0V oder irgendwas positives an Pin 4 anliegen würde, würde die
Schaltung nicht gehen, aber du hast ja -1,25V gemessen.

Wenn an Pin 4 -1,25V anliegen, müssen an Pin 5 0V anliegen: Der 34063
regelt auf +1,25V an FB gegen seinen Massepin.
Wenn das alles passt, dann muss es an R5 liegen:
Liegen an R4 0V oder +5V an, dann bildet dieser einen Spannungsteiler
mit R5, so dass die Spannung an Pin 5 kleiner wird und der 34063 daher
die Spannung hochdreht, also negativer macht.
Autor: Christian J. (elektroniker1968)
Datum: 21.05.2009 23:39

Du bist schon genial :-) Pin 5 hat vollen Masseschluss. Auf den unbest.
Platinen aber nicht. Ich suche grad noch.....
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 22.05.2009 00:18

Funktionierts jetzt?
Autor: Christian J. (elektroniker1968)
Datum: 22.05.2009 00:26

Hallo,

also, meine Platine war nicht mehr zu retten, ich habe den Masseschluss
nicht gefunden und die Leiterbahn N$48 Stück für Stück aufgeschnitten.
Er war dann am IC Fuss aber nicht zu sehen und ich habe eine Stereolupe
hier. Ich werde das morgen mit Fädeldraht verdrahten, heute keine Lust
mehr.

Ich habe die anderen Platinen auch untersucht, sie haben alle keinen
Masseschluss dort. Jedoch sollte jeder seine genau unter der Lupe
anschauen oder auch durchpiepsen. Das geht sehr schnell. Diese grosse
Masseflächen haben auch ihre Nachteile.

Ich rede nochmal mit Bilex, ob die mit 10min nicht überfordert waren. Er
hat das Layout ja, da kann er notfalls auch 15 Mil einstellen, Eahle
wird er wohl haben.
Autor: Christian J. (elektroniker1968)
Datum: 22.05.2009 00:55

-30 V sind es jetzt im Leerlauf. Dürfte passen.

Gute Nacht.
Autor: Christian J. (elektroniker1968)
Datum: 22.05.2009 01:46

Nachwort:

Ich habe alle Platten nochmal durchgepiepst an dieser Stelle und eine
weitere mit Kurzschluss gefunden. Ich habe durch Zufall ausgerechnet
eine der beiden erwischt. Optisch nicht zu sehen, freikratzen half auch
nicht. Es ist absolut unmöglich zu sagen, ob weitere zur Masse hin
existieren. Ich möchte auch das Risiko nicht eingehen, dass mir die
Platten wieder zugeschickt werden und das Geld verständlicherweise
eingefordert wird.
Es ist sehr schwer so etwas später zu finden, besonders wenn sie
bestückt sind. Perfekte Lösungen sind leider nicht möglich, ich bin
keine Firma, die sowas vorher ausführlich testen kann.

Ich habe daher Bilex gebeten auf deren Kosten neue Platten zu machen mit
15mil Abstand und wenn sie das nicht hinkriegen ohne Masseflächen. Da
sie im Ausland sitzen kann man eh nichts machen von hier aus.

Ich hätte lieber 20€ bei Beta zahlen sollen und eine elektrische Prüfung
mit dazu, diese Billiglohnländer haben immer ihre Tücken.

Sollte Bilex das ablehnen kann ich nur hoffen und bitte jeden, die
Platten vorher Punkt für Punkt gegen Masse durchzupiepsen. Ich habe noch
2 Überhangplatten extra. Bis auf den Elko, der wie oben gezeigt
eingelötet wird sind sie soweit ok.

Mir tut das sehr leid aber das konnte ich nicht vorher wissen.

mfg
Christian
Autor: Sebastian ... (zahlenfreak)
Datum: 23.05.2009 18:42
Angehängte Dateien:

So, habs jetzt selbst hinbekommen, die Sourcen halbwegs sauber als
Projekt zu öffnen, daher jetzt auch die versprochene Version mit
Tastenmatrix.

Ich verwende das ganze als Ein-Ausgabe-einheit für ein Gerät, könnte mir
das aber auch zum debuggen recht praktisch vorstellen.

Der Code ist für eine 2*4 Tastenmatrix. 3*3 bräuchte zwar nicht mehr
pins, der Aufwand in Software wäre aber deutlich größer. Die anderen
zwei Pins die noch frei sind werde ich wohl auch noch brauchen, daher
nur 2*4.

Die 4 Spalten müssen an PB0-PB3, die 2 Zeilen kommen an PB4 und PB5.
Pullups sind nicht nötig, da die internen aktiviert sind. Gleichzeitig
kann man 2 Tasten drücken. Wer mehr will muss noch Dioden in die Matrix
einfügen.

Der Debuggte Tastenzustand wird bei jeder Änderung über die UART
gesendet. Also z.B. Taste 0 Drücken --> 0x01 über UART, Taste 0 wieder
loslassen --> 0x00 über UART

Der komplette von mir zugefügte Code ist über define herausnehmbar. Wenn
er drin ist, braucht er 3 Byte im Ram. Sollte also noch reinpassen.

Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 23.05.2009 19:05
Angehängte Dateien:

Hier mal eine neue Version mit einer modifizierten Graustufenerzeugung
(abschaltbar in der param.h).
In dieser Version wird das Flimmern von großen Graustufenflächen stark
reduziert. Dafür wird der Kontrast der Graustufen ein wenig schlechter.
Durch das geringere Flimmern kann man die Framerate auf 70-75Hz
reduzieren was mehr Rechenleistung für die Grafikfunktionen zur
Verfügung stellt.
Autor: Christian J. (Gast)
Datum: 23.05.2009 19:30

Kannst Du den USBProg für den Avr empfehlen, damit ich mir das künfti
selbst brennen kann? Ich komme ja wohl nicht drumherum.
Autor: Sebastian ... (zahlenfreak)
Datum: 23.05.2009 20:17
Angehängte Dateien:

Sag mal Benedikt, magst du mich nicht? Wenn du die neue Version ne halbe
Stunde ehr veröffentlicht hättest, hätt ichs mir sparen können, meine
Sourcen nochmal zu kopieren.

Naja, hab jetzt meine Tastenmatrix in die neueste Version eingebaut.
Also sowohl der GrayMod als auch Tastenmatrix, beides natürlich in der
param.h abschaltbar.


Zum USBProg: Ich verwend ihn schon die ganze Zeit und bin soweit ganz
zufrieden. Gibt aber teilweise schon Probleme, bis das ding mal läuft.
Da du ja sowieso nicht viel mit AVRs machen willst, sondern nur dieses
Projekt flashen willst (oder?) ist der USBProg wohl übertrieben. Ich
würd einen Programmer für den Parallelport empfehlen. Kommt mit einem
Bustreiber aus und war zumindest bei mir problemlos inbetrieb zu nehmen.
Und die Kosten sind auch vernachlässigbar.

Sebastian
Autor: Christian J. (elektroniker1968)
Datum: 23.05.2009 21:07
Angehängte Dateien:

Nee, Avr ist nicht meine Welt, nur hex File oder elf brennen was ihr
bastelt und gut ist es :-)

Fügt sich aber harmonisch in die Landschaft ein, Benedikts kleines
Kunstwerk :-)
Autor: Sebastian ... (zahlenfreak)
Datum: 23.05.2009 21:53

Um hin und wieder ein fertiges Projekt zu flashen reicht ein
Parallelprogrammer allemal. Brauchst halt einen Parallelport dafür, den
hat ja heute auch nicht mehr jeder.

Schau dir mal das hier an:
http://www.mikrocontroller.net/articles/STK200

Sebastian
Autor: Christian J. (elektroniker1968)
Datum: 24.05.2009 23:12

Benedikt?

Was muss in die Uart rein, damit ich einen String ausgeben kann? Deine
Doku ist da etwas unklar?

Also "Hallo Welt ausgeben"? geht das buchstabenweise oder gibt es einen
Befehl für den ganzen String?

Das verstehe ich nicht ganz in der Doku:

30 Ziel
Wert
Zeichen aus erweitertem Zeichensatz schreiben.
Ziel = 0: Benutzerdefiniertes Zeichen 0-15 schreiben
Ziel > 0: ASCII Zeichen 0-255 schreiben

32-255 Buchstaben an Cursorposition zeichnen, Cursor erhöhen

Wie schnell zieht die Busy Leitung rauf oder runter? Kann ich die sofort
nach dem Sendebefehl abfragen? Ach ja, geht die auf Low oder High?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 24.05.2009 23:19

Der 30 Befehl wird eigentlich nur benötigt um Sonderzeichen mit einem
ASCII Code <32 zu schreiben. Normalen Text kann man ganz normal senden,
denn alles >=32 wird als Text betrachtet.

Busy wird bei jedem empfangenen Byte neu ausgewertet. Wenn Busy aktiv
wird sind noch 32 Bytes im Puffer. Busy ist high aktiv. Solange es Low
ist kann man also gefahrlos mindestens 32 Bytes schreiben.
Dies dient dazu, dass man z.B. nur einmal vor jedem Befehl prüfen muss.
Autor: kay (Gast)
Datum: 24.05.2009 23:29

hallo,
schau doch einmal etwas weiter oben da ist doch alles zielich genau
beschrieben
zb. einen string ausgeben
befehl ist "17" Textcursor auf (x,y) setzen
X zählt in 8 Pixel Schritten, Y in Zeilenschritten
17  X0  Y0  ;zeile 0 , spalte 0

einfach eine tabelle anlegen zb.
zeile_1:  .db"hallo welt",0
diese tabelle auslesen (wie man eine tabelle ausliest weist du
hoffentlicht) vorher natürlich 17 senden dann 0 dann nochmal 0

um diesen text oben links anzeigen zulassen
die befehle sind gut in der doku beschrieben

ich mache die nur mit Makros
Autor: Christian J. (elektroniker1968)
Datum: 24.05.2009 23:33

Hi,

alles klar, ich frickel grad mit dem Arm7 herum... nach einer Dose Faxe
Pils vielleicht nicht mehr ganz so sinnvoll :-)
void GDisplay_Init()
{
  uint8_t i;

  // Den Busy Pin einstellen:

  PINMODE4 &= ~(0x03 << (2*BUSY_PIN));  // Pull Ups auf Busy Pin P2.2 einschalten
  PINSEL4 &= ~(0x3 << (2*BUSY_PIN));  // Busy Pin als GPIO definieren
  // Busy Pin P2.2 auf Eingang (=0) stellen (PINSEL4: Bits 4:5 = 00
  FIO2DIRL &= (0x01 << BUSY_PIN);

  // UART einschalten
  uart1_init (28800);
  uart1_put (12);    // Display löschen
  uart1_put (1);    // Cursor auf 0,0
  //while (BUSY_GET_IN()==0);

  sprintf(gdisp_buf,"Hallo Welt");
  GDisplay_Print();

}

void GDisplay_Print()
{
......
Autor: Christian J. (elektroniker1968)
Datum: 25.05.2009 01:15

Hallo,

ich stelle grad fest, dass sich die Rectangles gegenseitig
überschreiben, auch wenn die Füllfarbe 0 ist. Gibt es eine "transparent"
Farbe, so dass sich gegenseitig schneidende Rectangles machbar sind?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.05.2009 07:44

Nein, bisher zumindest nicht.
Autor: Christian J. (elektroniker1968)
Datum: 25.05.2009 07:59

Hallo,

habe es jedenfalls ausführlich mit dem Arm7 System getestet und werde
heute abend mal anfangen eine TextScoll Funtion zu programmieren, wie
auf einem Terminal. Dann Koordinatensysteme, wobei ich noch nicht weiss,
wie ich da eine Art Smooth Scroll realisieren soll. Jedenfalls sind die
Möglichkeiten schier unbegrenzt. Klasse Sache Benedikt! Du solltest das
mit in den Shop nehmen als Bausatz.
Autor: Christian J. (elektroniker1968)
Datum: 25.05.2009 21:46

Hi,

könntest Du diesen Befehl vielleicht mit etwas erklärendem Leben füllen?
Ich rätsel da immer noch herum.

Ich habe ein s/w Bild (1bpp) mit einer Auflösung von 211x144 Pixeln.
Abgelegt in 8Bit Datenbytes in einem Array mit der Grösse 3798 Bytes
(211x144 / 8 = 3798)

16 0xAA = Befehlswort
X,Y = Startkoordinaten Bildecke oben links?
XS,YS  = da verliessen sie mich. 211x144?


Textzitat:

X
Y
XS
YS
Modus
Daten…

Bild an Position (x,y) mit Auflösung (xs,ys) laden. Auf diesen Befehl
folgen xs*ys (*2) Bytes mit Bilddaten. x und xs zählen Bytes (Nibbels).
x hat daher den Bereich 0-79 (0-159), xs den Bereich 1-80 (1-160). y und
ys zählen Zeilen. y hat daher den Bereich 0-239, ys den Bereich 1-240.
Modus schaltet zwischen 1bpp (0) und 2bpp (1) um.
0xAA dient nur als Sicherheitsbyte, damit nicht versehentlich dieser
Befehl (z.B.
aufgrund eines Übertragungsfehlers) ausgeführt wird.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.05.2009 21:50

Christian J. schrieb:

> Ich habe ein s/w Bild mit einer Auflösung von 211x144 Pixeln. Abgelegt
> in 8Bit Datenbytes in einem Array mit der Grösse 3798 Bytes (211x144 / 8
> = 3798)

Nicht ganz. Da in X Richtung immer ganze Bytes übertragen werden, ist
dein Bild 27x144 Bytes = 3888 Bytes groß.

> D.h. ein Bild kann nicht grösser sein als 255 Pixel?

Doch, du überträgst Byte Anzahlen. Maximal könnte ein Bild 255*255 Byte,
also 2040x255 Pixel groß sein.

> 16 0xAA = Befehlswort
> X,Y = Startkoordinaten Bildecke oben links?

Ja, wenn das Bild z.B. an 0,0 soll dann 0,0.
Wenn es an 16,20 soll, dann 2,20 (da Bytes=8Pixel) in x Richtung.

> XS,YS  = da verliessen sie mich. 211x144?

27, 144 da 27 Bytes pro Zeile und 144 Zeilen.

Das Vielfache von 8 Pixeln in x Richtung ist eine Einschränkung aber mit
der kann man leben, denke ich.
Im 4 Farbmodus sind es immer 4 statt 8 Pixel.

Ich habe das ganze bewusst etwas "merkwürdig" gewählt, aber das hat den
Vorteil dass die xs und ys Werte direkt die Anzahl an Bytes
repräsentieren. Somit kann man weniger beim Umrechnen falsch machen.
Autor: Christian J. (elektroniker1968)
Datum: 25.05.2009 22:17
Angehängte Dateien:

Hmmm..... mein VW Käfer sieht noch etwas abgeschnitten aus. So ganz
einfach ist das nicht. Habe auf 208x144 verkleinert. Scheint alles
richtig und doch ist er verschoben.

Die Datenbytezahl ist übrigens vom sizeof Befehl, sie war oben richtig.
Soviel Bytes waren im Array drin für 211x144.
uart1_put(16);            // Kommando
  uart1_put(0xaa);
  uart1_put(0); uart1_put(0);      // Position
  uart1_put(26); uart1_put(144);    // Position
  uart1_put(0);

  for (i=0;i<size;i++)
  {
    while BUSY_GET_IN();
    uart1_put(*(ptr++));
  }

// Füllbytes zur Vorsicht

  for (i=0;i<300;i++)
  {
    while BUSY_GET_IN();
    uart1_put(0);
  }

Autor: Christian J. (elektroniker1968)
Datum: 25.05.2009 22:34
Angehängte Dateien:

Also, da ist noch was strubbelig, wenn ich keine 1000 NOPs vorher und
nachher sende macht er mir das Bild schwarz und verschoben.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 25.05.2009 22:34

Was mir seltsam vorkommt ist, dass der Versatz mitten im Bild anfängt.
Das sieht so aus, als wenn da irgendwie ein paar Bytes verloren gehen,
warum auch immer.
Autor: Christian J. (elektroniker1968)
Datum: 25.05.2009 22:43

Verloren geht da nichts, ich frage Busy ab und benutze einen ausreichend
grossen Fifo Puffer für die Uart.

Die erwarteten Bytes stimmen aber exakt, danach geht er in die
Hauptschleife, der nächste Befehl der Text ausgeben soll wird sofort
erkannt.

Ich arbeite dran......
Autor: Christian J. (elektroniker1968)
Datum: 25.05.2009 23:00

Ok, Entwarnung..... der Arm7 war beim Aufstarten wohl etwas schnell
dabei und hat dem Display keine Zeit gelassen zu initialisieren. Passt
jetzt alles, ohne Füllbytes.
Autor: Kh Loeter (loeter)
Datum: 26.05.2009 00:17
Angehängte Dateien:

Hi,

Ich seh grad, dass auf den Platinen der Bestückungsdruck auf der
Unterseite fehlt, und auf der Oberseite nur die Bauteilwerte, aber nicht
die Referenzierungsnummer, enthält. Um bei der Bestückung, insbesondere
der SMD-Bauteile, die Identifizierung der Bauteile zu erleichtern, habe
ich nochmal zwei zusätzliche Ansichten aus Eagle exportiert. Darin ist
die Referenzierungsnummer der Bauteile in rot gehalten.

Hier die erste Datei ...

Gruß
Autor: Kh Loeter (loeter)
Datum: 26.05.2009 00:18
Angehängte Dateien:

... und hier die zweite Datei
Autor: Kh Loeter (loeter)
Datum: 26.05.2009 00:31
Angehängte Dateien:

... und hier ist nochmal ein Schaltplan ohne die lästigen Kringel um die
Pins :-)
Autor: Christian J. (elektroniker1968)
Datum: 26.05.2009 02:02

Kai H. schrieb:
> Hi,
>
> Ich seh grad, dass auf den Platinen der Bestückungsdruck auf der
> Unterseite fehlt, und auf der Oberseite nur die Bauteilwerte, aber nicht

Aus Kostengründen, das Kleinzeugs war es nicht wert.

> die Referenzierungsnummer, enthält. Um bei der Bestückung, insbesondere

Weil Eagle bei 2 Platinen auf einer Seite neue Namen vergibt, die
fortlaufend gezählt werden.

In dem Schaltplan fehlt auch der 10uF Elko am DC/DC Wandler, den ich
verschludert habe, er aber unbedingt rein muss.

Habe schon die nächste Generation fertig, ganz ohne smd und eine nur smd
:-) Letztere ist noch wesentlich kleiner, fast die Hälfte. Ok, BF 0602
habe ich mal ausgelassen, die kriege ich nicht mal mehr mit einer
Pinzette zu fassen.
Autor: Christian J. (elektroniker1968)
Datum: 26.05.2009 02:08
Angehängte Dateien:

Hier nochmal die Stelle, wo der 10uF Tantal reinkommt, + zur LED hin.
Autor: Christian J. (elektroniker1968)
Datum: 26.05.2009 23:07

Benedikt?

habe Deinen neuen Code mit 56700 baud gebrannt und stelle fest, dass die
Grafik verzerrt wird. Um das zu beheben muss ich ein 150us delay
einbauen. Die Abfrage des Busy funktioniert technisch aber wirkt hier
irgendwie nicht. Ich glaube 56700 sind doch etwas überdreht ;-) Das
Flimmern ist aber schön weg.
while BUSY_GET_IN();
uart1_put(16);      // Kommando Bitmap schreiben
uart1_put(0xaa);

  // Position festlegen
  uart1_put((uint8_t)x_pos /8);
  uart1_put((uint8_t)y_pos);
  // Bildgrösse festlegen
  uart1_put(29);//(uint8_t)(x_pixel/8));
  uart1_put(238);//(uint8_t)y_pixel);
  // SW Grafik 1 BPP
  uart1_put(0);

  for (i=0;i<size;i++)
  {
    while BUSY_GET_IN();
    uart1_put(*(ptr++));
    delay_us(1,150);
  }

  uart1_put(0);
  uart1_put(0);
    uart1_put(0);
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 27.05.2009 00:48
Angehängte Dateien:

Probier mal diese Version aus.
Wenn die funktioniert, dann wars die Pause beim Einschalten.
Falls nicht, dann baue mal vor dem Senden des Bildes eine Pause von z.B.
100ms ein. Falls es immer noch nicht geht, ist der Fehler bei 57600 Baud
doch zu hoch (58824Baud -> 2,1%).
Ich habe schon Bilder mit 250kBaud ohne Busycheck gesendet, da sollte
der Controller also 57600Baud spielend schaffen.
Autor: Christian J. (elektroniker1968)
Datum: 27.05.2009 01:03

Hallo,

ich habe da noch andere Probleme geefunden bei der Textausgabe, die auch
"abgeschnitten" wurden, chaotische Zeichen usw (Fehler?). Es fehlten
auch einfach Zeichen zwischendrin. Seit ich den 28800er Chip wieder drin
habe läuft alles wieder.

Kannste vielleicht die Doku mal erweitern? Da fehlt auch noch der Kreis.

Ach ja, bei meiner Version lassen sich Rechtecke nicht ausfüllen, die
bleiben immer weiss innen und überschreiben andere Pixel auch nicht,
egal welche Farben ich einstelle.

Flashen ist derzwei schwierig, mein Arbeitskollege hat den Brenner
unterm Schreibtisch versteckt :-)
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 27.05.2009 08:45

Christian J. schrieb:

> Kannste vielleicht die Doku mal erweitern? Da fehlt auch noch der Kreis.

Ist schon lange drin:
http://www.mikrocontroller.net/attachment/35222/32...

> Ach ja, bei meiner Version lassen sich Rechtecke nicht ausfüllen, die
> bleiben immer weiss innen und überschreiben andere Pixel auch nicht,
> egal welche Farben ich einstelle.

Kann nicht sein, denn auf dem Startbild funktioniert es auch und das
sind die selben Funktionen.
Autor: Winfried (Gast)
Datum: 29.05.2009 19:39

Hallo Benedikt,

ich verfolge den Thread schon eine ganze Weile und bin begeistert, was
Du da auf die Beine gestellt hast. Da ich jetzt Verwendung dafür hätte,
habe ich mir ein Display besorgt. Der Aufbau erfolgte ohne Probleme.
Allerdings habe ich nur einen SRAM mit 128x8 (25nS) von Samsung im DIP
Gehäuse.
Jetzt das Problem. Nach einem Neustart wird alles normal dargestellt.
Nach ca. 15-20 Sekunden gibt es dann mehr und mehr Pixelfehler. Die
Adressen 15 und 16 habe ich unbeschaltet gelassen. (Ich war mir auch
nicht sicher ob ich sie auf GND oder Vcc legen soll) Weiterhin habe ich
noch einen nicht negierten Chip Enable, den ich auf Vcc gelegt habe. Was
könnte die Ursache sein ?
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 29.05.2009 19:43

Häng die ungenutzten Adressen an GND oder Vcc, dann sollte das Problem
gelöst sein.
Autor: Winfried (Gast)
Datum: 29.05.2009 20:58

Danke,
werde ich morgen ausprobieren.
Autor: Christian J. (elektroniker1968)
Datum: 31.05.2009 17:26

Benedikt,

wenn ich das richtig sehe ist noch viel Platz im Ram. Wäre es möglich
dieses in Codepages zu unterteilen, so dass eine neue Grafik im
Hintergrund aufgebaut  und dann übergeblendet wird? Ich stelle mir so
einen Befehl Codepage-Select(1..n) vor.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 31.05.2009 17:31

Theoretisch ja. Ein Bild benötigt 9600Byte. Zur Vereinfachung der
Software verwende ich aber 16kByte für ein Bild. Durch die Graustufen
verdoppelt sich dieser Wert und füllt somit das ganze SRAM.
Wenn man also die Graustufen rausnehmen würde, würde es reichen.
Autor: Christian J. (elektroniker1968)
Datum: 31.05.2009 17:43

Hi, tja, Graustufen geht bei mir leider nicht :-( Die Rechtecke bleiben
weiss. Der Rahmen lässt sich aber in der Farbe einstellen.

Bastle grad an einem Scolling des Textpuffers, weiss nur nicht ob das
ruckelfrei abgeht, wenn ich 800 Zeichen neu schreibe und das Scrolling
in einem internen Puffer vornehme. meine Write Befehle greifen auf
diesen zu und ich sende immer nur das veränderte Bild an das Display,
wenn sich die Quersumme einer zeile geänder hat.

Aufruf:

GDisplay_Draw_Filled_Rectangle(10,10,GD_X_MAX-10,GD_Y_MAX-10,100,255);

Routine
char GDisplay_Draw_Filled_Rectangle(uint16_t x1,   // Ecke unten links
               uint16_t y1,       // Ecke unten links
               uint16_t x2,       // Ecke oben rechts
               uint16_t y2,       // Ecke oben rechts
               uint8_t fill_color,   // Füllfarbe 0..255
               uint8_t frame_color)  // Rahmenfarbe 0..255
{

  // Bei Bereichsüberschreitung aussteigen
  if ((x2 > GD_X_MAX) || (y2 > GD_Y_MAX))
    return 0;

  uart1_put (GDCMD_DRAW_RECTANGLE);    // Kommando Rechteck zeichnen

  uart1_put (x1);              // Untere linke Ecke
  uart1_put (x1>>8);
    uart1_put (GD_Y_MAX - y1);

  uart1_put (x2);              // Obere rechte Ecke
  uart1_put (x2>>8);
    uart1_put (GD_Y_MAX - y2);

    uart1_put (fill_color);
  uart1_put (frame_color);
Autor: Sebastian (Gast)
Datum: 31.05.2009 20:03

Hallo Christian,

hab auch schon über so eine erweiterung nachgedacht. Ich hatte mir
überlegt, einen größeren Ram zu nehmen und Adressleitungen der höchsten
Adressen dann über GPIO-Pins des Displaycontrollers zu steuern. Man
hätte dann einen Befehl mit dem man den Teil festlegt, in den
geschrieben wird, und einen, mit dem man sagt, wo gelesen wird.
Genau dafür hab ich auch die 2 Pins bei meiner Tastenmatrix
freigehalten. Dadurch, dass ich das 4-fache an Speicher verbauen würde,
könnten sogar auch die davon profitieren, die jetzt schon ne fertige
Platine haben: Mit Chip-Stacking werden zwei 32k-Rams gestapelt und die
CS-leitungen kommen (über Freiluftverdrahtung) an die Portpins. Man
hätte dann zwar nur 2 Bilder, aber immerhin.

Um die Vorfreude jetzt wieder etwas zu dämpfen: Ich brauch die
erweiterung momentan nicht. Ich weiß auch nicht, ob ich sie überhaupt
brauche oder ob mir die Performance so reicht. Bis ich das brauche ist
es sicher noch ein paar Wochen oder Monate hin. Wenn vorher was draus
wird war's reiner ehrgeiz. Momentan hab ich noch nichtmal den Ram.

Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 31.05.2009 20:28
Angehängte Dateien:

Die Idee mit den mehreren Speicherseiten hatte ich vor kurzem auch mal,
hatte diese aber nicht weiter verfolgt. Da aber anscheinend Bedarf daran
besteht, wieso also nicht.

Hier mal eine erweiterte Version:
Man kann in der param.h zwischen 4 Graustufen und 2 Farben, also SW
umschalten.

Weiterhin kann nun nahezu der gesamte Speicher genutzt werden
(128x240Bytes=30kByte). Bei Graustufen bringt das nicht allzu viel, da
steht dann eine virtuelle Bildgröße von 512x240 zur Verfügung.
Bei 2 Farben dagegen, kann ein Bild mit bis zu 1024x240 Pixel
dargestellt werden (angezeigt wird natürlich nur ein 320x240 Ausschnitt
davon).
Wofür man das verwenden kann, keine Ahnung, seit kreativ...
Da in 1024 Pixel allerdings 3x das komplette Bild reinpasst, kann man im
Hintergrund ein Bild an eine Stelle außerhalb des sichtbaren Bereiches
laden und danach auf diesen Bereich umschalten.
Zum Einstellen der Position in 8 Pixel Schritten dient der Befehl 28.
Genauere Infos dazu stehen in der Anleitung.

Getestet habe ich diese Version nur mal schnell rund um das Laden von
Bildern rund um Befehl 28, also keine Garantie dass alles fehlerfrei
läuft.
Autor: Christian J. (elektroniker1968)
Datum: 01.06.2009 01:00

Hallo,

also das mit den grauen Bitmaps haut irgendwie nicht hin. Ich habe beim
Grafikconverter alle Einstellungen ausprobiert, es wird nur Murks
dargestellt.

Wir haben:

Nulltransform
Floyd Steinberg
Graustufen Verfahren
Schwellwert Verfahren.

Und unten die Einstellungen für die Anzahl Farben, da habe ich 4 stehen
und habe Schwellwertverfahren ausgewählt. Die Datei ist doppelt so gross
wie die s/w Datei, d..h. es werden auch doppelt so viele Bytes
übertragen. Aber da läuft er aus dem Ruder.

Idee?

Oder hat mal jemand eine Graubild Datei mit Pixelgrößenangabe zum
testen?
Autor: Christian J. (elektroniker1968)
Datum: 01.06.2009 01:01
Angehängte Dateien:

Hier das Proggi.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.06.2009 11:00
Angehängte Dateien:

Probier das mal aus:
Das ist das komplette Bild, inklusive aller Befehle. Du musst also nur
das komplette Array an das LCD senden.
Auflösung: 240x240, 2bpp
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.06.2009 11:01
Angehängte Dateien:

Und hier das gleiche nur gedithered.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 01.06.2009 11:23

@ Benedikt K. (benedikt) (Moderator)

mal so zwischendurch als Ponyprog Fan:

im letzen Code(Fusebits) wird -Boden ; -Bodlevel programmed
wäre dann der AVR nicht < 4V inaktiv. Warum stellest Du dann 4V noch
mal extra ein? (geht bei Ponyprog wohl nicht)


Schönen Feiertag noch


Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.06.2009 11:34

Wigbert Picht-dl1atw schrieb:
> im letzen Code(Fusebits) wird -Boden ; -Bodlevel programmed
> wäre dann der AVR nicht < 4V inaktiv.

Ja.

> Warum stellest Du dann 4V noch
> mal extra ein? (geht bei Ponyprog wohl nicht)

Das was darunter steht sind die Klartextbedeutungen der oben
eingestellten Bits. Die am häufigsten benötigten Einstellungen habe ich
in meinen Programmer einprogrammiert, so dass ich nicht immer die Bits
zusammenklicken muss, sondern ich wähle z.B. int 8MHz und BOD auf 4V
aus, er setzt die passenden Bits, und die schreibe ich dann in den AVR.
Autor: Christian J. (elektroniker1968)
Datum: 01.06.2009 11:38

Hallo,

es klappt, ich hatte nur vergessen, dass man bei Grau /4 teilen muss und
nicht durch 8.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 01.06.2009 11:52

@Benedikt K. (benedikt) (Moderator)

Dank Dir,
interessanter Programmer(vorprogrammiert?) Wo finde ich sowas?

Ach,ja wäre es möglich, die Hex mit aktivierter
Grayscale(4 Graustufen)von Dein "Lcd_con_320x240 Mod.zip"
reinzustellen.
Sorry, mach ja sonst nur was in Bas...

Danke....


Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.06.2009 13:02

Wigbert Picht-dl1atw schrieb:

> interessanter Programmer(vorprogrammiert?) Wo finde ich sowas?

Ist Marke Eigenbau, eine Weiterentwicklung von einem AT89Sxxxx ISP
Programmer, da es damals nichts billiges an ISP Fertiggeräten gab.
AvrStudio sollte aber eine ähnliche Funktion bieten um die Fusebits
einzustellen.

> Ach,ja wäre es möglich, die Hex mit aktivierter
> Grayscale(4 Graustufen)von Dein "Lcd_con_320x240 Mod.zip"
> reinzustellen.
> Sorry, mach ja sonst nur was in Bas...

Welche Baudrate soll ich einstellen?
Autor: Christian J. (Gast)
Datum: 01.06.2009 13:08

38400 ist die, die bei mir im dauerfeuer funzt ohne dass es zu Verlusten
führt. 56700 klappte nicht, der Busy Pin reagiert einfach nicht, ich
frage den immer vor jedem Byte ab was ich sende.

Naja, vielleicht bin ich auch nur zu blöde. So jetzt aber raus nach
draussen, Spitzenwetter.
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 01.06.2009 13:29

@ Benedikt

>Welche Baudrate soll ich einstellen?

56K7 wäre wohl in der mainc. definiert.
Ich dachte wir bleiben dabei ?

muss aber wirklich nicht sofort sein und gebe Christian recht:

>So jetzt aber raus nach draussen, Spitzenwetter.


Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 01.06.2009 13:44
Angehängte Dateien:

Hier die hex Datei der neuen Version mit Graustufen und 57600Baud
Autor: Wigbert Picht-dl1atw (wigbert)
Datum: 01.06.2009 13:52

@ Benedikt

Dank Dir, trotz so schönem Wetter so hilfreich. Toll.

Wigbert
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 02.06.2009 00:13

Christian J. schrieb:
> 38400 ist die, die bei mir im dauerfeuer funzt ohne dass es zu Verlusten
> führt. 56700 klappte nicht, der Busy Pin reagiert einfach nicht, ich
> frage den immer vor jedem Byte ab was ich sende.

Deine Probleme mit 57600Baud gehen mir nicht aus dem Kopf.
Momentan streame ich gerade ein Video mit 500kBaud auf das Display. Das
sind im Graustufenmodus leider nur 2fps, aber egal.
Jedenfalls schafft der Controller die Verarbeitung von so vielen
Graustufendaten nicht und aktiviert Busy, was mit CTS vom UART des PCs
verbunden ist. So wird der Datentransfer ausgebremst (auf ca 310kBit/s).
Das funktioniert wunderbar, ich habe zumindest schon >50MByte ans
Display gesendet, ohne Probleme.
Die einzigen Probleme die ich mir vorstellen kann, sind eine nicht ganz
exakte Baudrate von deinem ARM:
Bei mir sind 57600 Baud in Wirklichkeit 58823 Baud. Das sind 2,1% zu
viel.
Das sollte aber kein Problem sein, denn erst ab >4% treten Probleme auf.
Außer deine Baudrate ist auch nicht genau und weicht in die
entgegengesetzte Richtung ab. Schau mal nach ob das vielleicht zutreffen
kann.
Ansonsten kannst du auch einen 18,432MHz Quarz einbauen, dieses minimale
Übertakten schafft der mega8515 meist problemlos. Damit sollten die
ganzen Standardbaudraten ohne Fehler möglich sein.

Die maximale Baudrate die möglich ist, ist übrigens 500kBaud. Alles
darüber (was nur 666kBaud, 1MBaud und 2MBaud wären), schafft der
Controller nicht weil der UART Hardwarepuffer überläuft, da der
Interrupt zur Datenausgabe ans LCD zu lange braucht.
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 02.06.2009 00:58
Angehängte Dateien:

Oder probier mal diese Version aus:
Ich habe die UART Routinen nun erweitert, dass automatisch ab einem
Fehler von >1,5% in den 2X Modus umgeschaltet wird. Dadurch reduziert
sich der Fehler auf 0,7%.
Die Version ist auf 2bpp, 57600Baud eingestellt.
Autor: Christian J. (elektroniker1968)
Datum: 02.06.2009 21:05

Naja, es funktioniert ja, also lasse ich es mal wie es ist :-) Never
touch a running system.
Autor: Sebastian (Gast)
Datum: 06.06.2009 11:57

Hallo Benedikt,

ich hätte mal rein interessehalber eine Frage (der Aufwand würde sich
wohl nicht lohnen):

Ziel der Überlegung ist es, einen höheren Pixeltakt zu erreichen ohne
die Prozessorlast zu vergrößern bzw. eben den AVR zu entlasten.
Man hängt zwischen Pin5 des 74HC02 (Das Gatter von der CP-erzeugung) und
das RD-Signal einen Flankendifferenzierer. Also bei jedem Flankenwechsel
von RD gibts einen kurzen Puls auf CP. Auf diese Weise könnte man mit
jedem ld Befehl des AVR ein ganzes Byte zum Display schicken, da das
Display mit steigender und mit fallender Flanke von RD Daten übernimmt.
Der Multiplexer ist ja über das Flipflop auch von CP gesteuert. Bzw.
wäre zu überlegen, ob man A\/B dann nicht direkt an RD hängen könnte.
Der Flankendifferenzierer müsste etwa 100ns lange Pulse rausgeben, damit
es zum Display passt. Zwischen die I/O des SRAM und den Multiplexer
müsste wohl noch ein Latch, da ja das zweite Nibble erst ans Display
gelegt wird, wenn RD wieder High geht. Dann sind aber auch die I/Os auf
High-Impedance. Also einen Latch der die Daten bei einer steigenden
Flanke von RD latcht.

Wie gesagt, man müsste dann mit einem ld-Befehl pro Byte statt einem pro
nibble auskommen und hätte fast die Hälfte der Prozessorlast gespart.
Dann sollten auch höhere Frameraten beim Video streamen möglich sein,
oder?
An sich müsste es dann doch sogar gehen, 8 Graustufen darzustellen,
oder? Macht das Display (zb. die hier zuerst genannten von Pollin) das
mit? Der SRAM reicht ja für 3 Monochrombilder aus, also auch für ein
3-Bit-Bild.


Würde mich mal interessieren, was der Experte zu diesen Überlegungen
sagt.

Gruß, Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.06.2009 13:22

Sebastian schrieb:

> Man hängt zwischen Pin5 des 74HC02 (Das Gatter von der CP-erzeugung) und
> das RD-Signal einen Flankendifferenzierer. Also bei jedem Flankenwechsel
> von RD gibts einen kurzen Puls auf CP. Auf diese Weise könnte man mit
> jedem ld Befehl des AVR ein ganzes Byte zum Display schicken, da das
> Display mit steigender und mit fallender Flanke von RD Daten übernimmt.

So eine ähnliche Schaltung gab es mal in der Elektor für einen
Displaycontroller für einen 8051. Da dieser langsamer ist, bleibt mehr
Zeit, so dass dies richtig sinn macht. Da wurde das ganze mittels
Monoflop gelöst.

> Der Flankendifferenzierer müsste etwa 100ns lange Pulse rausgeben, damit
> es zum Display passt.

Das Problem ist, dass der RD Impuls gerade mal etwa 62ns lang ist.
Streng genommen bin ich momentan sogar außerhalb der Specs, denn das
Pollin Display verlangt mindestens 65ns high Zeit. Und das ist ein recht
modernes Display, ältere sind da noch langsamer. Bei dem Pollin Display
ist der maximale Takt mit etwa 6,5MHz spezifiziert. Da ein Zugriff auf
das SRAM 3 takt dauert, sind so theoretisch 5,33MHz möglich. Eine
Verdopplung ist daher nicht möglich, außer man baut Waitstates ein.
Wirklich viel ist also nicht zu gewinnen.

> Zwischen die I/O des SRAM und den Multiplexer
> müsste wohl noch ein Latch, da ja das zweite Nibble erst ans Display
> gelegt wird, wenn RD wieder High geht. Dann sind aber auch die I/Os auf
> High-Impedance. Also einen Latch der die Daten bei einer steigenden
> Flanke von RD latcht.

Jain. Ein Latch braucht man, aber aus einem anderen Grund: Momentan gebe
ich die Daten mit der steigenden Flanke von RD\ aus, und verletze damit
eigentlich auch die Hold Zeit des Displays.
Bei der fallenden Flanke von RD\ liegen die Daten noch nicht an, erst
nach einer gewissen Zeit. Man müsste also den ersten Impuls verzögern.

> Wie gesagt, man müsste dann mit einem ld-Befehl pro Byte statt einem pro
> nibble auskommen und hätte fast die Hälfte der Prozessorlast gespart.
> Dann sollten auch höhere Frameraten beim Video streamen möglich sein,
> oder?

Es würde minimal etwas bringen, aber den Hardwareaufwand enorm erhöhen:
Man müsste die Daten bei der steigenden Flanke von RD\
zwischenspeichern, könnte die ersten Daten direkt mit übertragen. Dann
müsste man entweder mittels eines Zählers aus dem Prozessortakt oder
mittels Monoflops einen weiteren kompletten Takt (also >65ns high, >65ns
low, >65ns high und nochmal >65ns low erzeugen.
Wenn man die 16MHz Prozessortakt verwendet um die Takte zu erzeugen,
dann bräuchte man etwa 5 Takte für ein Byte (momentan sind es 6  +
0,75Takte).

Ich hatte mir diese Lösung anfangs auch überlegt, habe diese dann aber
verworfen, da die Lösung möglichst leicht nachzubauen sein sollte.

An der Software könnte man etwas auf kosten des Programmspeichers
optimieren:
Momentan gebe ich in einer Schleife 4 Takte aus, danach kommt der
Schleifenzähler + Rücksprung. Also für 12 Takte kommt ein Overhead von 3
Takten dazu. Diese Schleife könnte man entrollen, so dass der Overhead
weg fällt. Das würde etwa 15% mehr Geschwindigkeit bringen.
Autor: Sebastian (Gast)
Datum: 06.06.2009 14:06

Ah, Dankeschön. Wie gesagt, ich wollte einfach nur wissen, obs möglich
wäre. Ich hätte aber doch einen größeren Nutzen erwartet. Aber so würde
es sich ja garnicht lohnen.
Die Schleife zu entrollen hatte ich auch schon überlegt. Habs aber
erstmal auf später verschoben.

Gruß, Sebastian
Autor: Benedikt K. (benedikt) (Moderator)
Datum: 06.06.2009 14:35
Angehängte Dateien:

Im Anhang eine neue Version mit einer etwas auf Geschwindigkeit
optimierten Datenausgabe und einem optimierten UART (ein paar Details
beim X2 Mode korrigiert, etwas optimiert).

Bisherige Version bei 16MHz, 75Hz: 40% CPU Load.
Neue Version: 1/3, also 33,3% CPU Load
Dauer des Interrupts: 18,5µs

Die benötigte "Rechenleistung" liegt damit bei etwa 5,35MIPs.
Da der UART Hardware Puffer 2 Bytes umfasst, darf die Baudate damit bei
maximal etwa 850kBaud liegen. Der nächst niedrigere, mögliche Wert liegt
bei 666,6kBaud (16MHz/8/3). Das ist somit die maximale Baudrate bei
16MHz.
Die damit erreichbare Datenrate bei Graustufendaten sind etwas unter
200kPixel/s, bei SW sind es >400kPixel/s.
Wenn die Graustufen komplett deaktiviert werden, sind irgendwas
>500kPixel/s möglich. Das sind rund 7fps Vollbilder.

Eine weitere "Optimierung" wäre das Übertakten auf 18,432 oder 20MHz.
Die meisten mega8515 machen das mit. Damit liegt die Auslastung bei rund
27%. Und man trifft eventuell eine bestimmte Baudrate besser.
Autor: Benedikt K. (benedikt) (Moderator)