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

Gast #1230957
Lesenswert?

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
Gast #1242502
Lesenswert?

Hallo,

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

Gruss,
Christian
Gast #1243477
Lesenswert?

>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
#1243657
Lesenswert?

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
#1243740
Lesenswert?

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....
OP #1243869
Lesenswert?

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.
Angehängte Dateien:
#1243888
Lesenswert?

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.
Persönliche Seite #1243931
Lesenswert?

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 "Re: [S] Leute die einen Logic Analyzer (MiniLA) bauen wollen"
Ich hatte mal ein Adapter gebaut
Beitrag "Re: Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen"
Ich such die LIB des Steckers noch raus

Wigbert
OP #1244014
Lesenswert?

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.
#1244070
Lesenswert?

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)
Gast #1244153
Lesenswert?

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
Gast #1244160
Lesenswert?

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?
#1244549
Lesenswert?

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.
#1244618
Lesenswert?

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)
#1244797
Lesenswert?

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
#1244841
Lesenswert?

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.
OP #1244852
Lesenswert?

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.
#1244961
Lesenswert?

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.
#1245038
Lesenswert?

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 :-)
#1247170
Lesenswert?

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
Angehängte Dateien:
#1247245
Lesenswert?

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
Angehängte Dateien:
#1247302
Lesenswert?

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.
Angehängte Dateien:
#1247313
Lesenswert?

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.
#1247385
Lesenswert?

@ 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
#1247509
Lesenswert?

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
Angehängte Dateien:
Gast #1247510
Lesenswert?

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.
#1247518
Lesenswert?

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?
#1247522
Lesenswert?

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
#1247524
Lesenswert?

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.
#1247531
Lesenswert?

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
#1247619
Lesenswert?

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.
Gast #1247625
Lesenswert?

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
#1247627
Lesenswert?

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.
#1247819
Lesenswert?

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)
Gast #1249672
Lesenswert?

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.
OP #1249753
Lesenswert?

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.
#1249971
Lesenswert?

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.
OP #1249987
Lesenswert?

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.
OP #1250440
Lesenswert?

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.
#1250553
Lesenswert?

>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.
Gast #1250568
Lesenswert?

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.
OP #1250710
Lesenswert?

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.
Angehängte Dateien:
#1254385
Lesenswert?

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.
#1255120
Lesenswert?

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.
OP #1255402
Lesenswert?

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.
#1255545
Lesenswert?

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.
#1255998
Lesenswert?

@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ß
Angehängte Dateien:
OP #1256515
Lesenswert?

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_System_Programmer


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.
#1256937
Lesenswert?

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
#1257085
Lesenswert?

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.
Gast #1266066
Lesenswert?

> 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.
OP #1266081
Lesenswert?

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.
Gast #1266622
Lesenswert?

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
OP #1267039
Lesenswert?

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.
Angehängte Dateien:
Gast #1267046
Lesenswert?

/** 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?
OP #1267063
Lesenswert?

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.
Gast #1267086
Lesenswert?

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
OP #1267097
Lesenswert?

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.
OP #1267169
Lesenswert?

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.
Gast #1267495
Lesenswert?

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
Gast #1267659
Lesenswert?

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
Angehängte Dateien:
#1268120
Lesenswert?

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.
#1270930
Lesenswert?

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?
OP #1271064
Lesenswert?

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).
OP #1271465
Lesenswert?

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/lcd_320x240.gif
#1271468
Lesenswert?

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.
OP #1271497
Lesenswert?

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.
#1271511
Lesenswert?

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.
Angehängte Dateien:
OP #1271518
Lesenswert?

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.
#1271574
Lesenswert?

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.
#1271594
Lesenswert?

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
#1273054
Lesenswert?

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
Angehängte Dateien:
OP #1273064
Lesenswert?

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.
Angehängte Dateien:
#1273118
Lesenswert?

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
Angehängte Dateien:
#1274175
Lesenswert?

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?
OP #1274178
Lesenswert?

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.
Gast #1274183
Lesenswert?

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
#1274184
Lesenswert?

Hi,

alles klar, ich frickel grad mit dem Arm7 herum... nach einer Dose Faxe 
Pils vielleicht nicht mehr ganz so sinnvoll :-)
1
void GDisplay_Init()
2
{
3
  uint8_t i;
4

5
  // Den Busy Pin einstellen:
6

7
  PINMODE4 &= ~(0x03 << (2*BUSY_PIN));  // Pull Ups auf Busy Pin P2.2 einschalten
8
  PINSEL4 &= ~(0x3 << (2*BUSY_PIN));  // Busy Pin als GPIO definieren
9
  // Busy Pin P2.2 auf Eingang (=0) stellen (PINSEL4: Bits 4:5 = 00
10
  FIO2DIRL &= (0x01 << BUSY_PIN);
11

12
  // UART einschalten
13
  uart1_init (28800);
14
  uart1_put (12);    // Display löschen
15
  uart1_put (1);    // Cursor auf 0,0
16
  //while (BUSY_GET_IN()==0);
17

18
  sprintf(gdisp_buf,"Hallo Welt");
19
  GDisplay_Print();
20

21
}
22

23
void GDisplay_Print()
24
{
25
......
#1274277
Lesenswert?

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.
#1275483
Lesenswert?

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.
OP #1275492
Lesenswert?

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.
#1275536
Lesenswert?

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.
1
uart1_put(16);            // Kommando
2
  uart1_put(0xaa);
3
  uart1_put(0); uart1_put(0);      // Position
4
  uart1_put(26); uart1_put(144);    // Position
5
  uart1_put(0);
6

7
  for (i=0;i<size;i++)
8
  {
9
    while BUSY_GET_IN();
10
    uart1_put(*(ptr++));
11
  }
12

13
// Füllbytes zur Vorsicht
14

15
  for (i=0;i<300;i++)
16
  {
17
    while BUSY_GET_IN();
18
    uart1_put(0);
19
  }
Angehängte Dateien:
#1275700
Lesenswert?

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ß
Angehängte Dateien:
#1275737
Lesenswert?

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.
#1276889
Lesenswert?

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.
1
while BUSY_GET_IN();
2
uart1_put(16);      // Kommando Bitmap schreiben
3
uart1_put(0xaa);
4

5
  // Position festlegen
6
  uart1_put((uint8_t)x_pos /8);
7
  uart1_put((uint8_t)y_pos);
8
  // Bildgrösse festlegen
9
  uart1_put(29);//(uint8_t)(x_pixel/8));
10
  uart1_put(238);//(uint8_t)y_pixel);
11
  // SW Grafik 1 BPP
12
  uart1_put(0);
13

14
  for (i=0;i<size;i++)
15
  {
16
    while BUSY_GET_IN();
17
    uart1_put(*(ptr++));
18
    delay_us(1,150);
19
  }
20

21
  uart1_put(0);
22
  uart1_put(0);
23
    uart1_put(0);
OP #1276984
Lesenswert?

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.
Angehängte Dateien:
#1276989
Lesenswert?

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 :-)
OP #1277073
Lesenswert?

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/320x240_Grafik.pdf

> 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.
Gast #1280484
Lesenswert?

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 ?
#1282029
Lesenswert?

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
1
char GDisplay_Draw_Filled_Rectangle(uint16_t x1,   // Ecke unten links
2
               uint16_t y1,       // Ecke unten links
3
               uint16_t x2,       // Ecke oben rechts
4
               uint16_t y2,       // Ecke oben rechts
5
               uint8_t fill_color,   // Füllfarbe 0..255
6
               uint8_t frame_color)  // Rahmenfarbe 0..255
7
{
8

9
  // Bei Bereichsüberschreitung aussteigen
10
  if ((x2 > GD_X_MAX) || (y2 > GD_Y_MAX))
11
    return 0;
12

13
  uart1_put (GDCMD_DRAW_RECTANGLE);    // Kommando Rechteck zeichnen
14

15
  uart1_put (x1);              // Untere linke Ecke
16
  uart1_put (x1>>8);
17
    uart1_put (GD_Y_MAX - y1);
18

19
  uart1_put (x2);              // Obere rechte Ecke
20
  uart1_put (x2>>8);
21
    uart1_put (GD_Y_MAX - y2);
22

23
    uart1_put (fill_color);
24
  uart1_put (frame_color);
Gast #1282177
Lesenswert?

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
OP #1282196
Lesenswert?

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.
Angehängte Dateien:
#1282384
Lesenswert?

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?
OP #1282632
Lesenswert?

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.
OP #1282722
Lesenswert?

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?
Gast #1282725
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren