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.
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
@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
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.
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.
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.
1
mx=mittelpunktX
2
my=mittelpunktY
3
4
x=mx
5
oldx=x-1
6
y=my+radius
7
while(x<mx+radius){
8
9
drawPixel(x,y)//rand zeichnen
10
if(x!=oldx){//x != alter postion, sonst haben wir schon gemalt!
11
oldy=y//y sichern
12
while(y>my){//sind wir schon am mittelpunkt?
13
y--;//nach unten gehen
14
drawPixel(x,y)//pixel zeichnen
15
}
16
y=oldy//y wieder herstellen
17
}
18
oldx=x//altes x speichern um "doppelmalen" zu verhindern falls
19
//sich x in dieser iteration nicht ändert
20
x=newXKoord(x)//neue X berechnen
21
y=newYKoord(y)//neue Y berechnen
22
}
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.
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
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.
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?
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.
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!
@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
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.
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
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.
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
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!
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).
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.
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.
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?
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).
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/320240_lcd_4bpp_sch.jpg
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.
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?
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 "Re: 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 "Re: 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.
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?
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.
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?
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 "Re: 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.
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.
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?).
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.
@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!
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
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?
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.
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
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.
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
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.
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
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
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
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
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
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.
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
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.
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
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
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
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
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
> 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):
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.
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 ;)
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!
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.html#faq_reg_usage> 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.
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/Fotos%20&%20Videos/Kontrast.ASF
(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.)
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.
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
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%20Improvements%20for%20STN%20LCD.pdf
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
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
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...
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??
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.
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.
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
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:
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.
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?
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.
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
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/
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
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
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)
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.) ?
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.
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.
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.
@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 ?
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.
>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
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.
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 ?
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.
>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
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.
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.
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.
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).
So war heut nochmal bei Bilex und hab jetzt einen Preis von 8€ für
folgende Platine
1
12 x LEITERPLATTEN (ergibt 24 einzelne Platinen)
2
2-Lagig Durchkontaktiert
3
100x160 mm
4
Materialstärke: FR4 1.55mm;
5
Oberfläche: Chemisch Gold(RoHs konform)
6
Cu Außenlagen Enddicke: 70 µm;
7
Lötstop: doppelseitig grun
8
Positionsdruck: ohne
9
10
Netto: 147.39 €
11
MwSt: 29.48 €
12
Brutto: 176.87 €
13
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.
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.
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_entry.php?id=13083&page=1&category=all&order=time
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/flybackdriverandrineriji7.jpg
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 ?
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.
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.
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.
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!!!!!
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.
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
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.
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?
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.
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.
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.
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;
}
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.
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.
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
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.
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.
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
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.
1
Bauteil Wert Device Package Description
2
C1 100n C-EUC1206 C1206 CAPACITOR, European symbol
3
C2 100n C-EUC1206 C1206 CAPACITOR, European symbol
4
C3 100n C-EUC1206 C1206 CAPACITOR, European symbol
5
C4 100n C-EUC1206 C1206 CAPACITOR, European symbol
6
C5 100n C-EUC1206 C1206 CAPACITOR, European symbol
7
C6 100n C-EUC1206 C1206 CAPACITOR, European symbol
8
C7 100n C-EUC1206 C1206 CAPACITOR, European symbol
9
C8 27p C-EUC1206 C1206 CAPACITOR, European symbol
10
C9 27p C-EUC1206 C1206 CAPACITOR, European symbol
11
C10 100n C-EUC1206 C1206 CAPACITOR, European symbol
12
C11 100µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol
13
C12 47µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol
14
C13 100µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol
15
C14 1n C-EUC1206 C1206 CAPACITOR, European symbol
16
C15 10µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol
17
C16 CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol
18
D1 1N4148 1N4148 DO35-10 DIODE
19
D2 1N4148 1N4148 DO35-10 DIODE
20
D3 1N4148 1N4148 DO35-10 DIODE
21
IC1 MEGA8515-P MEGA8515-P DIL40 MICROCONTROLLER
22
IC2 74AC02N 74AC02N DIL14 Quad 2-input NOR gate
23
IC3 74HC74N 74HC74N DIL14 Dual D type positive edge triggered FLIP FLOP, preset and clear
24
IC4 74HC157N 74HC157N DIL16 Quadruple 2-line to 1-line data SELECTOR/MULTIPLEXER
25
IC5 74AC573N 74AC573N DIL20 8-bit D latch BUS DRIVER
26
IC6 62256P DIL28-6 MEMORY
27
IC7 78XXS 78XXS VOLTAGE REGULATOR
28
IC8 MC34063AP MC34063AP DIL08
29
JP1 JP1E JP1 JUMPER
30
JP2 PINHD-1X4 1X04 PIN HEADER
31
JP3 PINHD-1X12 1X12 PIN HEADER
32
K1 AQV21SMD AQV21SMD DIL06SMD PhotoMOS Relay NAiS
33
L1 470µ L-EU0204/7 0204/7 INDUCTOR, European symbol
34
LED1 LEDCHIPLED_1206 CHIPLED_1206 LED
35
Q1 CRYSTALHC49U-V HC49U-V CRYSTAL
36
Q2 BC327 BC327 TO92 PNP Transistor
37
R1 2,2k R-EU_M1206 M1206 RESISTOR, European symbol
38
R2 47k R-EU_M1206 M1206 RESISTOR, European symbol
39
R3 1 R-EU_M1206 M1206 RESISTOR, European symbol
40
R4 47k R-EU_M1206 M1206 RESISTOR, European symbol
41
R5 3,3k R-EU_M1206 M1206 RESISTOR, European symbol
42
R6 330 R-EU_M1206 M1206 RESISTOR, European symbol
43
R7 330 R-EU_M1206 M1206 RESISTOR, European symbol
44
R8 100 R-EU_M1206 M1206 RESISTOR, European symbol
45
R9 0 R-EU_0207/10 0207/10 RESISTOR, European symbol
46
R10 0 R-EU_0207/10 0207/10 RESISTOR, European symbol
47
R11 560 R-EU_M1206 M1206 RESISTOR, European symbol
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
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.
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
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
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.
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
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
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
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.
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
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.
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
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
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
>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
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
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....
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.
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.
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.
@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
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.
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)
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
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?
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.
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
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.
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.
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)
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
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.
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.
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.
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.
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
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.
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 :-)
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
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!)
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.
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
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
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.
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.
>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
@ 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
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
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.
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?
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
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.
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
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.
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
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.
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)
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
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? ;-)
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
>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.
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.
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.
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.
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.
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.