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.
Datum: 24.04.2008 15:15
Angehängte Dateien:So könnte das ganze aussehen, wenn es aufgebaut ist und läuft.
Datum: 24.04.2008 15:21
Sehr beeindruckend. Danke fürs posten. Gruß
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
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
Datum: 24.04.2008 22:50
Wirklich beeindruckend Benedikt, toll das Farbenspiel mit dem "schwarzen" (ist es doch wohl) Display. Wigbert
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.
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.
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.
Datum: 25.04.2008 08:20
Was ist das für ein controller-loses Display? Mfg Thomas Pototschnig
Datum: 25.04.2008 08:54
Pollin: 120460 (mechanisch und elektrisch identisch zu 120471).
Datum: 25.04.2008 09:26
Hallo Benedikt,
>Bei der nächsten Version ist das aber drin.
Wirst Du die Hardware verändern?
Wigbert
Datum: 25.04.2008 10:33
Nein, nur die Software.
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
Datum: 25.04.2008 18:42
Ja, genau so. Die Zeilen und Spaltenzählung beginnt aber C typisch bei 0.
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
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.
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
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?
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.
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!
Datum: 10.05.2008 09:22
Angehängte Dateien:Kleines Update: Jetzt mit Routinen um einen (gefüllten) Kreis zu zeichnen.
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
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.
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
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.
Datum: 22.06.2008 15:51
Angehängte Dateien:war wohl bisher der erste Nachbauer, ansonsten: ohne Worte. Wigbert
Datum: 22.06.2008 16:05
Habe ich da was im Schaltplan vertauscht, oder hattest du was falsch ?
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
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!
Datum: 22.06.2008 18:04
@ Wigbert kannst du das Layout veröffentlichen? Gerhard
Datum: 22.06.2008 18:04
stimmt, ist nirgends erwähnt von Pollin Best.Nr. 120 471 Wigbert
Datum: 22.06.2008 18:07
Angehängte Dateien:Gerhard wird demnächst kommen, muss nach ein paar Schönheitsfehler abändern
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!
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).
Datum: 06.07.2008 15:28
Das Datenblatt ist in dem Pollin-Downloadpaket auch drin (in "Daten").
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.
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.
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.
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?
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. ;-)
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).
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.
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?
Datum: 06.07.2008 17:56
Lies dir das mal durch: Beitrag "Einfacher Low Cost LCD Controller für 320x240 LCD im Textmodus"
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.
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?
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.
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?
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.
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.
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?).
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.
Datum: 06.07.2008 19:04
Und selbst dann sind es immer noch -23V und keine +23V...
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!
Datum: 09.07.2008 08:59
DISP ist ONOFF, Yd ist Frame. Die restlichen Bezeichnungen passen zu denen im Schaltplan.
Datum: 12.07.2008 13:11
Hallo, kann mir jemand einen passenden CCFL Inverter empfehlen?
Datum: 12.07.2008 13:16
Beispielsweise Pollin 700 637 und 700 638. Sind für 12V Betrieb.
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?
Datum: 18.07.2008 23:47
Wie siehts denn mit nem fertigen Layout aus? Hat da jemand schon was fertiges?
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
Datum: 28.09.2008 20:21
und am HC74 Pin 8 an 12 Wigbert
Datum: 28.09.2008 21:20
ja am hc74 pin8 und pin12 sind verbunden kay
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?
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.
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
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.
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
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.
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
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.
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
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).
Datum: 01.10.2008 19:43
danke erstmal für die hilfe, werd mich dann mal einarbeiten danke mfg kay
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
Datum: 01.10.2008 20:11
Ja, stimmt. Da hab ich die 2 Zeilen vertauscht.
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
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
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
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.
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
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.
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
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.
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
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
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
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
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
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.
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 ;)
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!
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.
Datum: 22.11.2008 18:48
Angehängte Dateien: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.)
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.
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
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...
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
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
Datum: 25.11.2008 19:41
Alexander Sewergin wrote:
> Muss ich diese c. Files irgendwo einbinden?
Ja und die .S auch.
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...
Datum: 02.12.2008 20:10
Ja, die Ansteuerung ist möglich.
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??
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.
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
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.
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
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.
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:
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 |
Datum: 03.12.2008 20:35
werd das morgen mal versuchen danke nochmals mfg kay
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?
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.
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
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
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/
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
Datum: 05.12.2008 19:25
Angehängte Dateien:Probier das mal
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
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)
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.) ?
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.
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.
Datum: 02.01.2009 21:35
hallo, ich hätte Interresse mfg
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
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.
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 ?
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.
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
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.
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 ?
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.
Datum: 04.01.2009 12:49
Angehängte Dateien:Hier nochmal beide Seiten der Platine.
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
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.
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.
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.
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).
Datum: 04.01.2009 23:23
Angehängte Dateien:Ok, habe es hinzugefügt.
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.
Datum: 05.01.2009 19:27
hallo Blitz Lampe, ich hätte gern 6 stück. mfg kay
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.
Datum: 06.01.2009 02:09
Ich wär auch mit 2 Platinen dabei (hab nur ein Display, aber man weiß ja nie ;) )
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.
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 :-)
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.
Datum: 06.01.2009 21:47
Versuchs mal als png oder gif, das sollte besser lesbar sein, und kleinere Dateien erzeugen.
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 ?
Datum: 06.01.2009 22:58
Angehängte Dateien:Habe es als Eagle Datei und als als Bild ins das ZIP File gepackt.
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 ?
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.
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.
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.
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.
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!!!!!
Datum: 11.01.2009 01:02
Hallo falls noch verfügbar, würde ich 2 Platinen nehmen Rainer
Datum: 19.01.2009 22:12
Hallo falls noch verfügbar, würde ich auch 2 Platinen nehmen Adalbert
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.
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.
Datum: 29.01.2009 18:15
Ich hätte gerne die beiden Platinen. Habe dir eine Nachricht geschickt.
Datum: 30.01.2009 17:14
@Blitzlampe: Danke, die Platinen sind angekommen. AVRNix
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.
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...
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
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.
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?
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.
Datum: 19.02.2009 17:47
Mh anscheinend ist die PIN Belegung gleich. Em51M256 datenblatt: http://www.datasheetarchive.com/pdf-download/Datas...
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.
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.
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;
}
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.
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.
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
Datum: 19.02.2009 20:04
Ja, der sollte gehen. Allerdings ist die Software dann etwas langsamer.
Datum: 19.02.2009 23:43
Hallo gibts irgendwann nochmal eine bestell aktion ? würde mitmachen die displays gibts ja noch
Datum: 21.02.2009 13:21
@Benedikt: Es ist dir möglich einen kleinern Zeichensatz zu Integrieren? Gruss karl
Datum: 21.02.2009 13:51
Möglich ist alles.
Datum: 21.02.2009 16:10
machts du das auch ? gruss Karl
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.
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.
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
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 |
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
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.
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
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^^
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.
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
Datum: 02.04.2009 16:07
Angehängte Dateien:sry...der Anhang...
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.
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
Datum: 07.04.2009 16:46
Den Optomosfet kannst du bei den Displays weglassen.
Datum: 07.04.2009 17:10
Sehr gut. Dankeschön.
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
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
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.
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
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.
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
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
Datum: 25.04.2009 22:14
hallo, wäre es möglich das glcd über akkus zuversorgen. mfg
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.
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
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
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....
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.
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.
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.
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
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
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.
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)
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.
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
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?
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.
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
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
Datum: 28.04.2009 16:56
Ja, die sind mehr als ausreichend schnell (12ns Zugriffszeit und 5 bzw, 3ns Output Enable).
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
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.
Datum: 28.04.2009 17:54
Christian J. (elektroniker1968) na, ja schlag ein von Digikey vor. Den kriege ich dann auch her Wigbert
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.
Datum: 28.04.2009 18:43
Folgendes, ich habe einen stehenden mit DIP Footprint: Hirose: FH21-12S-1DSA kannste den besorgen?
Datum: 28.04.2009 18:58
Angehängte Dateien:Sähe dann so aus, also beide Stecker.... mal eben auf die Schnelle gemacht.
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)
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
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.
Datum: 28.04.2009 20:45
achja , wird durchkontaktiert, ich war auf SMD aus Wigbert
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
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.
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.
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.
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.
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 :-)
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
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.
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 :-)
Datum: 29.04.2009 10:54
Blitzlampe.,... schick mir bitte eine e-mail, damit ich Deine Mailadresse habe für das Layout!
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
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?
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!)
Datum: 30.04.2009 01:37
Angehängte Dateien:Hier die Dateien für Eagle zum Durchschauen.
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.
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
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
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.
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.
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
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.
Datum: 01.05.2009 10:51
führ mal ratsnest aus, dann wird aus dem rechteck eine lückenfüllende fläche ;)
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
Datum: 01.05.2009 11:15
Angehängte Dateien:der Gerade, falsche Seite erwischt Wigbert
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
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
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.
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?
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
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.
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
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.
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
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.
Datum: 01.05.2009 18:13
Angehängte Dateien:Hier mal ein Entwurf, 80 x65mm
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)
Datum: 02.05.2009 15:13
Bestellung von 20 Platinen ist gerade abgeschickt worden. Bitte jetzt auch die FPC Stecker bestellen.
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!
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
Datum: 03.05.2009 10:32
>Bitte 32 FPC Stecker
bis heut Abend kann die Steckeranzahl ja noch korrigiert werden
Wigbert
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? ;-)
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.
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.
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.
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.
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.
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
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.
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.
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.
Datum: 04.05.2009 16:59
Vielleicht ist es eine bescheuerte Idee, aber wie wäre die Anwendung des SLIP-Protokolls? Lg Michael
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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?
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.
Datum: 08.05.2009 12:40
Hallo Christian, besteht noch die Möglichkeit an Platinen und LCD-Stecker ranzukommen ? Gruß Jürgen
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.
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ß
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?
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.
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.
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.
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
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.
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
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.
Datum: 17.05.2009 11:33
@Christian J. (elektroniker1968) schon geschehen. Wigbert
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.
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.
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.
Datum: 17.05.2009 20:32
ob das alles was wird???????????????
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
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.
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?
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.
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
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.
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
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.
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.
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.
Datum: 18.05.2009 12:59
@ Christian J. (elektroniker1968) Dank Dir, die Stecker sind per DHL zu Dir unterwegs. Wigbert
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
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.
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
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.
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.
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.
Datum: 20.05.2009 18:41
Angehängte Dateien:Tata...... die Post war da !
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.
Datum: 21.05.2009 07:56
Ich würde die Platine so nicht in Betrieb nehmen: Der mega8515 steckt falsch rum drin.
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?
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).
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?
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...
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.
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!
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.
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.
Datum: 21.05.2009 23:17
Angehängte Dateien:Hier mal das erste Foto....
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.
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.
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.....
Datum: 22.05.2009 00:18
Funktionierts jetzt?
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.
Datum: 22.05.2009 00:55
-30 V sind es jetzt im Leerlauf. Dürfte passen. Gute Nacht.
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
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
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.
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.
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
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 :-)
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
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?
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.
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
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() { ...... |
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?
Datum: 25.05.2009 07:44
Nein, bisher zumindest nicht.
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.
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.
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.
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); } |
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.
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.
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......
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.
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ß
Datum: 26.05.2009 00:18
Angehängte Dateien:... und hier die zweite Datei
Datum: 26.05.2009 00:31
Angehängte Dateien:... und hier ist nochmal ein Schaltplan ohne die lästigen Kringel um die Pins :-)
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.
Datum: 26.05.2009 02:08
Angehängte Dateien:Hier nochmal die Stelle, wo der 10uF Tantal reinkommt, + zur LED hin.
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); |
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.
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 :-)
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.
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 ?
Datum: 29.05.2009 19:43
Häng die ungenutzten Adressen an GND oder Vcc, dann sollte das Problem gelöst sein.
Datum: 29.05.2009 20:58
Danke, werde ich morgen ausprobieren.
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.
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.
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); |
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
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.
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?
Datum: 01.06.2009 01:01
Angehängte Dateien:Hier das Proggi.
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
Datum: 01.06.2009 11:01
Angehängte Dateien:Und hier das gleiche nur gedithered.
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
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.
Datum: 01.06.2009 11:38
Hallo, es klappt, ich hatte nur vergessen, dass man bei Grau /4 teilen muss und nicht durch 8.
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
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?
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.
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
Datum: 01.06.2009 13:44
Angehängte Dateien:Hier die hex Datei der neuen Version mit Graustufen und 57600Baud
Datum: 01.06.2009 13:52
@ Benedikt Dank Dir, trotz so schönem Wetter so hilfreich. Toll. Wigbert
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.
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.
Datum: 02.06.2009 21:05
Naja, es funktioniert ja, also lasse ich es mal wie es ist :-) Never touch a running system.
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
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.
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
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.







































