Hab jetzt nochmal nachgemessen. Konnte aber weder Vertauschungen noch Kurzschlüsse finden. Mich irritiert auch das satte Gelb des Displays. Woher könnte das kommen? Sebastian
Sebastian wrote:
> Woher könnte das kommen?
Das kommt daher, dass das Display nicht richtig angesteuert wird und
daher dauerhaft die volle Spannung sieht, anstelle von 1/240tel der
Zeit.
Werde die schaltung morgen mit zu meinen Eltern nehmen, da hab ich ein Oszi. Ich denke damit komm ich schneller auf den Fehler. Danke schonmal soweit. Sebastian
Oszi ist leider kaputt :-( Hab das Display aber trotzdem zum laufen gebraucht. Hatte nach dem alten Plan gelötet in dem zwei Signalnamen verdreht waren. Vielen Dank an Benedikt für dieses Tolle Projekt. Sebastian
hallo, wäre es möglich das glcd über akkus zuversorgen. mfg
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
Biete dafür auch 640x480 (2-Halbbilder) LCD Displays monochrom (ablesbar ohne Hintergrundbeleuchtung) an. Interface standard.
>wäre es möglich das glcd über akkus zuversorgen.
wieso nicht? Wo siehst du das Problem? Du brauchst 5 Volt für die
Schaltung und etwas 150mA wenn du die Kontrastspannung aus dem Akku
erzeugst. Hintergrundbeleuchtung nicht mitgerechnet. Sollte halt nicht
grade ne Knopfzellen-reihenschaltung sein. Aber im Prinzip seh ich
nichts, was dagegen spricht.
Sebastian
Hallo, ich werde diese Leiterplatten nachmachen lassen in blau. Natürlich mehrere, damit der Preis stimmt. Er wird 10€/Platte + 1€ Versand liegen für ca 20 Stück. Billiger wirds erst wieder ab 100. auf den Cent genau weiss ich das noch nicht, habe nur grob für 10 kalkukiert (1,0mm FR4, doppelseitig, durchkontaktiert, blau beidseitig, geschnitten, 5 AT) incl. Ritzen des Nutzens. Lieferzeit ca 10 Tage ab Bestellung. Falls jemand welche haben will möge er bitte eine e-mail an admin@der-scirocco.de senden die NUR folgenden Inhalt hat: Name Anschrift Telefon Anzahl ! Ich antworte mit meinen Kontodaten + Anschrift. Versand per Brief 1€. Nur Vorkasse. PS: Ich habe schon vor einem Jahr mal eine Sammelbestellung (HF Booster) gemacht, diejenigen (zB Benedikt) wissen, dass die Ware auch ankommt. Einsendeschluss ist der 1.5., dann geht die Bestellung raus, ich werde trotzdem ein paar mehr machen lassen als Reserve. Grafikdisplay wollen sicherlich viele haben zumal es einfach bedienbar ist. Vielleicht findet sich ja auch noch jemand, der die "wesentlichen" Bauteile (zb ICs, Quartz, Stecker) als Sammelpacks bestellt, damit nicht jeder sich die zusammensuchen muss. Benedikt.... kann bis dahin vielleicht die Software noch etwas verfeinert werden? zb "Zeichne Koordinatensystem" Funktion (Achsen, Teilstriche), Scrolling um eine Zeile für fortlaufenden Text? Gruss, Christian
Hallo, ich werde die Platine noch um einen FPC Stecker erweitern für die Pollin Displays. Kann mir jemand sagen welcher der Eagle 5.0 Lib da passt (genauer Name und welcher Pitch)? Ich habe das Display nicht hier. Benedikt, stimmt die Reihenfolge der Pins für das Pollin? Nicht dass die nachher genau seitenverkehrt sind oder überkreuzt....
Christian J. wrote: > ich werde die Platine noch um einen FPC Stecker erweitern für die Pollin > Displays. Kann mir jemand sagen welcher der Eagle 5.0 Lib da passt > (genauer Name und welcher Pitch)? Ich habe das Display nicht hier. In Eagle 4.x gibt es zumindest keinen passenden Stecker, keine Ahnung ob das mittlerweile drin ist. Ich habe mal ein Foto von dem Display angehängt. Die Kabel gehen auf der linken Seite vom Display raus, Pin 1 vom Anschlusskabel ist oben. Die Kontakte von dem Folienkabel liegen auf der Seite, auf der die Beschriftung auf dem Folienkabel ist (wenn man das Kabel also ausklappt nach links, dann auf der Vorderseite). Das Kabel hat ein Pitch von 1mm. Hier gibt es das Datenblatt von einem sehr ähnlichen Display: http://www.mark-products.com/pdf/g320x240/159/159%20spec.pdf Die Belegung passt, die Spannungen passen, nur scheint da ein Stecker anstelle des Folienkabels drauf zu sein. Ich würde auf die Platine noch einen ISP Anschluss für den mega8515 machen. Dann kann man leicht die Software an eigene Bedürfnisse anpassen. Die ganzen Schnittstellenfunktionen zum LCD Controller sind im Programm ja enthalten.
Hallo Benedikt, leider versthe ich Deinen Text nicht ganz. Um ganz sicher zu gehen zeichne vielleicht die Belegung auf einem Foto des Kabels ein. Ich habe das Display grad hier in der Firma. Auf der platine sieht man eine kleine 2 neben dem Lötfeld. Bitte für Dumme mal erklären, ich möchte keine Fehler machen. Eagle 5 hat hunderte dieser Stecker mit dabei. Ein ISP Stecker würde den Rahmen sprengen, die Platte ist ja schon sehr dicht. Ich möchte die Größe nicht wesentlich verändern. Da ich keine Ahnung vopm Avr habe würde ich auch nicht wissen wo anschliessen. Bisher 3 Bestellungen.
Christian J. wrote:
> Auf der platine sieht man eine kleine 2 neben dem Lötfeld.
Das ist der Rest der teilweise verdeckten 12. Oben ist Pin 1, unten Pin
12. Es stimmt also mit dem Datenblatt überein.
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
@Christian J. (elektroniker68) ich hab noch mal wegen der LIB nachgeschaut, habe das nur mit der Hand geroutet, eine LIB ist aber schnell gemacht ISP sollte schon rauf, muss ja nicht , so wie bei mir, eine Pfostenbuchse sein @Benedikt wie schnell müssen die S-Rams nun wirklich sein , um den AVR nicht auszubremsen Wigbert
Wigbert Picht-dl1atw wrote: > wie schnell müssen die S-Rams nun wirklich sein , um den AVR nicht > auszubremsen Das hängt hauptsächlich von der "OE\ Access Time" des SRAMs ab: Im Datenblatt vom mega8515, Seite 202, Tabelle 98, Punkt 10: Read Low to Data valid: max 1.0*tclcl-50ns. Bei 16MHz ist tclcl=62,5ns. Das SRAM darf daher maximal 12,5ns brauchen zwischen dem Anlegen des RD Impulses bis die Daten stabil sein müssen. Das von mir gerne verwendete IS61C256 Cache SRAM hat in der langsamsten 25ns Ausführung hier nur 9ns. Es ist also ausreichend schnell. Bei der Low Power Variante IS62C256 dagegen, hat selbst die 45ns Variante hier 25ns. Dies kann funktionieren, da die Werte jeweils die garantierten Maximalwerte sind, muss aber nicht. Es gibt Aussagen hier im Forum, dass selbst 70ns SRAMs ohne waitstates funktionieren. Ausprobiert habe ich bis 35ns (nur Cache SRAMs). Zusätzlich ist natürlich noch die Zugriffszeit wichtig: Das wäre Punkt 5 im Datenblatt: Address valid to RD Low: 1.0*tctc-10ns. Insgesamt ergibt sich dadurch eine Zeit von 2.0*tctc-20ns, also 105ns zwischen Adresse gültig bis Daten stabil, was eigentlich alle SRAMs die obige Bedingung erfüllen, auch erfüllen. Das Latch ist da meiner Meinung nach absolut unkritisch, da die Zugriffszeit ja im vergleich zu der OE Zeit des Speichers extrem groß ist. Ich verstehe bis heute nicht, warum Atmel da ein AHC573 empfiehlt.
Hallo Wigbert, 12 Pins mit Pitch 1,0 reichen mir schon, die Lib gibt es. Senkrechter Stecker wohl am besten. Das ISP..... wer würde die Platine übernehmen, wenn ich das FPC drin habe? Müsste nochmal aufgerippelt werden dann. 4 Befestigungsösen wären schon sehr schön, dann kann man sie auf ein Demobrett schrauben. Oder sag mir einfach mal einer an welche Pins das ISP kommt und in welcher Reihenfolge. Ein paar Pfostenstecker dürften reichen. Dann wäre eine smd Variante für den Avr ja auch wohl besser denke ich. Also Tabelle: Pin xyz ---- ISP Pin 1 Pin .... usw. (Status: 4 Bestellungen)
Vcc MOSI MISO SCK Reset GND Ist das so richtig? Kommt Leute, ich will gleich routen..... je schneller kriegt ihr die Platinen.
Stimmt schon was du aufgeschrieben hast. Der Standard ISP Stecker ist ein 10 poliger Wannenstecker mit folgender Belegung. Wannenstecker ISP Signal Pin 1 MOSI Pin 2 VCC Pin 3 NC Pin 4, 6, 8 ,10 Gnd Pin 5 Reset Pin 7 SCK Pin 9 MISO
Ach was ich noch sagen wollte, warum macht ihr keinen Bootloader auf den Atmega dann könnte man das Teil in der Platte neu bespielen und man könnte gleich die RX und TX Leitung der seriellen Schnittstelle nutzen. Wäre doch die einfachste Lösung oder?
Nein, dann müsste noch ein Pegelwandler mit rein. Ich möchte da nicht zuviel rumdoktorn. Ich mache eine Pfostenleiste, Wannenstecker ist schon wieder zun gross und ich denke mal die meisten haben diese Programmierdapater auch selbst gebaut mit diesen kleinen Steckern.
@Christian J. (elektroniker68) die Molex- Stecker, falls Du das Routen noch mal vergleichen willst http://de.farnell.com/molex/52271-1279/socket-ffc-fpc-smt-1mm-12way/dp/1079952?_requestid=295205 Wigbert
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
Ja, die sind mehr als ausreichend schnell (12ns Zugriffszeit und 5 bzw, 3ns Output Enable).
@Benedikt Dank Dir gut 0,80 Euro(Brutto) das Stück, allerdings in SOJ oder TSOP Ich glaub es gibt DIP/SOJ Adapter Wigbert
Wigbert, ist leider nicht dabei und ich habe keinen Nerv den zu zeichnen, weil ich ewig nicht mehr mit dem Eagle Designs gemacht habe. Hast Du da eine Lib zu.? Ich wollte auch einen stehenden verwenden, habe Hirose in der Lib aber die gibts leider nicht bei Farnell mit dem Footprint.
Christian J. (elektroniker1968) na, ja schlag ein von Digikey vor. Den kriege ich dann auch her Wigbert
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.
Folgendes, ich habe einen stehenden mit DIP Footprint: Hirose: FH21-12S-1DSA kannste den besorgen?
Sähe dann so aus, also beide Stecker.... mal eben auf die Schnelle gemacht.
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)
Hirose: FH21-12S-1DSA Digikey: http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=HFF12T-ND ist aber nicht senkrecht, seltsam? Ware wird nur auftragsbezogen beschafft, da erstmal nicht bezahlbar Wigbert
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.dll?Detail&name=609-1939-ND Passt auch vom Footprint her Warten wir erstmal ab wie viele Bestellungen kommen. Die 10 müssen schon voll werden.
achja , wird durchkontaktiert, ich war auf SMD aus Wigbert
Hallo Christian, @ Christian J. > Warten wir erstmal ab wie viele Bestellungen kommen. Die 10 müssen schon > voll werden. Von mir wird auch noch ne Bestellung kommen, und ich hab ein paar Leute, die sich auch dafür interessieren. Ich hab aber noch nicht von allen eine Antwort bekommen. Momentan sind 4 Platinen sicher, es könnten aber noch 4 weitere hinzu kommen. Sobald ich die genaue Anzahl habe, schicke ich Dir ne Mail mit der offiziellen Bestellung und Anzahl. Im übrigen würde ich es bevorzugen, die ICs auf der Platine im DIL zu lassen. Denn das macht doch gerade den Charme der Platine aus. Die meisten dürften noch nen 8515 in der Bastelkiste haben, und ein altes Cache RAM findet sich auch ganz leicht. Also kann man die Schaltung mit minimalem Kostenaufwand aufbauen. In SMD würde für mich bedeuten, dass ich alles bestellen müsste, obwohl die meisten Teile schon da sind. Ich wär froh, wenn ich die mal verbrauchen könnte. Ausserdem lassen sich DIL ICs sockeln, was bei Modifikationen und weiteren Verbastelungen einfach viel mehr Spaß macht. Die ISP Signale noch rauszuführen wäre Spitzenklasse. Dabei würde es mir reichen, wenn einfach die Pins 1-8, Reset, Vcc und GND direkt neben dem DIL40 1:1 auf ein einreihiges Pfostenfeld gehen. Das braucht kaum Platz im Layout. Gruß und schonmal Danke für Deine Mühe Kai
Hallo, ich habe alles auf DIL gelassen, nur kam neben dem Pfostenstecker noch ein FPC hinzu und eben der ISP. Bzgl Routen warte ich noch auf eine Rückmeldung vonn blitzlampe, weil das jemand machen soll der mehr Erfahrung hat als ich, es ist viele Jahre her bei mir. Einer generellen smd Lösung stehe ich aber offen gegenüber, vor allem wegen des Platzes, die Platine ist doch recht gross. Mal schauen, vielleicht gibts ja auch zwei Varianten. Ich halte das aber noch für ausbaufähig, da ich selbst mit Avr nichts am Hut habe und dafür auch keinerlei Werkzeuge habe müssten das aber andere machen. Die Doku ist noch verbesserungsfähig, vor allem das Laden von Grafiken sollte verbildlicht werden, vielleicht mit Beispiel dazu. Was mir noch nicht klar ist, wie das Uart Protokoll Befehlsende erkennt, wenn zB die Daten abreissen oder aus dem Takt kommen.
Christian J. wrote: > Was > mir noch nicht klar ist, wie das Uart Protokoll Befehlsende erkennt, > wenn zB die Daten abreissen oder aus dem Takt kommen. Garnicht. Die Software erwartet exakt xs*ys Bytes an Bilddaten. Das ganze war eigentlich als Embedded LCD Controller gedacht, der parallel zur eigentlichen Software auf dem selben AVR läuft. Die UART Ansteuerung war mehr ein Beispiel um von extern Grafik auf das Display zu bekommen, daher ist das Protokoll sehr einfach gehalten.
Meinste, Du kriegst da noch einen Timeout hin? Wenn das Host System zB resettet wird muss der Grafikcopntroller da ja irgendwie mitkriegen. Was ganz einfaches halt, zb wenn 100ms kein Byte zur Uart kam wird rückgesetzt.
Das halte ich für keine gute Lösung, denn dann muss man andauernd sinnlose Daten schicken. Ich würde dann eher die Resetleitung an den Master klemmen und so den LCD Controller neustarten wenn der Master neustartet.
Also spendieren wir noch einen Reset Pin am Uart Stecker.... (PS: Der Arm7 hat ein Flag, wenn in der Uart nichts mehr ankommt :-)
Hi, Ich hätte folgenden Vorschlag: ich könnte bis Ende der nächsten Woche eine Digikey Bestellung rauszögern. Dann würden die FFC-Stecker Versandkostenfrei nach DL kommen. Das Beste wäre wohl, alle nach Christian J. zu schicken, und Christian legt sie bei Bedarf den Platinen bei. Ahnlich könnte man es, bei Bedarf mit S-Rams machen. Wigbert
So, hab mir das mal angeschaut, kannst du eventuell mir mal das Bord zuschicken? Wenn du Bilder vom Layout hochlädst würde ich den TStop und BStop Layer ausblenden. Das AQV21 könnte man ja mal gegen einen Typ ersetzen welchen man noch bekommt bei Reichelt oder Conrad. Viele hatten mich nach Quellen für das Teil gefragt. Die Bohrung bei der Spule L1 ist von mir etwas ungünstig gesetzt wurden. bedingt duch das Gehäuse läst sich dort nur schwer ne schraube durchquetschen. Die Bohrung für die Alternativen Spulen Pads sind auch etwas klein ausgefallen.
Hallo Lampe, ich sende Dir heute abend das Design zu wenn ich wieder zu Hause bin. Schaus Dir bitte nochmal an und route es. Eine Resetmöglichkeit muss aber unbedingt vorhanden sein als Synchronisationsmarke. Vielleicht lässt sich in der Software ja doch was machen, vielleicht mit dem Busy Pin, wenn der zB ab und zu mal als Eingang geschaltet wird. Dann kann der Host einen Reset mit Low Pegel erzwingen, ich denke nicht dass der Pin Schaden nimmt, wenn er ein paar Mikosekunden "gegen gepolt" ist. Ich würde allerdings nur ungern als Bauteillieferant agieren, da das dann ein Durcheinander gibt, oder aber der Stecker wird per se auf den Platinenpreis aufgeschlagen, die 1,90 sind ja nicht die Welt und ohne den ist es eine Frickelei. Ich denke aber, dass diese Projekt das Potential hat als kompletter Bausatz angeboten zu werden, das ist mit Abstand die günstigste Grafikdisplay Variante die ich je gesehen habe und wenn keine Kinderkrankheiten mehr auftauchen kann das ein Dauerbrenner werden. smd wäre natürlich noch schöner :-)
Blitzlampe.,... schick mir bitte eine e-mail, damit ich Deine Mailadresse habe für das Layout!
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
Wigbert, dann bestell doch einfach mal 25 und sende sie an mich. Geld übeweise ich Dir dann, lege jeder Platine einen solchen bei. Ok?
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!)
Hier die Dateien für Eagle zum Durchschauen.
Bitte um Rückmeldung, die Platine ist fertig !!! Wer kann ein Review machen ??? Bitte dringende Bitte an jene, die noch welche haben wollen ihre Mail nochmal zu senden, ich verschicke die Platine am Montag aber solange keine 10 voll sind lohnt sich das nicht.
Hi, Ich hab grad Eagle installiert, und schau mir das Layout mal an. Bei mir ist es allerdings auch schon ein paar Jahre her, seit ich das letzte mal was mit Eagle gemacht habe. Deshalb möchte ich erst mal nicht zu viel versprechen. Eine Sache ist mir aber auf den ersten Blick schon aufgefallen. Auf den Top-Layer und auf dem Bottom Layer befindet sich eine gestricheltes Rechteck, das einmal rund um die Platine läuft und teilweise mit Leiterbahnen in Berührung kommt. Da ich alle Lagen, die nichts mit Kupfer zu tun haben, ausgeschaltet habe, fürchte ich dass das auch auf der Platine so sein wird. Diese Strichellinie müsste man noch löschen, weil sie an manchen Stellen Beinahe-Kürzschlüsse provoziert. Gruß Kai
Soo, Jetzt habe ich mich auch daran erinnert, wozu die gestrichelte Linie war. Vergesst das letzte Posting, war Blödsinn. Wie gesagt Eagle ist schon etwas länger her. Das sind natürlich die Masseflächen. Ich hab mich nun ein wenig mit dem Layout beschäftigt und noch ein bischen Kosmetik betrieben. Folgendes ist mir aufgefallen bzw. habe ich geändert. - Der Beschriftungsdruck von SV3 war vertauscht. - Verschieben einiger Leiterbahnen, um ein paar Unterbrechungen der Masse-Flächen zu beseitigen. - Einfügen einer 8-Poligen Pfostenleiste an den Pins 1-8. Dann sind diese ungenutzten Pins für Basteleien zugänglich. Wers nicht braucht, muss es nicht einlöten. Die Änderungen habe ich diesem Posting angehängt. Wär nicht schlecht, wenn sich noch wer anders findet und nochmal drüber schaut. Gruß Kai
Hallo, muss Dich leider enttäuschen, die DRC Schablone von Bilex findet da 26 Fehler (1 Kurzschluss), was Distanzen etc angeht. Ich habe die Platinenumrand absichtlich etwas erweitert, da muss Luft sein zum Rand zum Ritzen und Schneiden. Lade Dir bitte die .dru Datei von Bilex herunter oder nimm diese im Anhang und lass den DRC drüber laufen. Bilex nimmt nur fehlerfreie Platinen an. Lade dann Dein Board nochmal hoch.
Hallo, wir haben fast 20 Platinen zusammen...... bitte alle nmochmal melden, die mir in den ersten beiden Tagen geschrieben haben und nicht auf der Liste stehen. Bisherige Besteller: O.Hagendorf (2) k. Hingst (8P + 10 Buchsen) M. Prader (1) L. Jentsch (1) W.Friedl-Grimm (1) zu jeder Platine kommt die FPC Buchse hinzu. Bitte die FPC Buchsen dann mal bestellen, mich kontaktieren wegen der Rechnung und mir diese dann bitte zusenden.
Hi, >wir haben fast 20 Platinen zusammen ist doch schön der Link aus Beitrag "Re: 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
Bestell den mal, wenn er nicht passt geht das auf meine Kappe. Schick mir mal ne Mail, damit die lieferadresse auf mich geht.
führ mal ratsnest aus, dann wird aus dem rechteck eine lückenfüllende fläche ;)
>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
der Gerade, falsche Seite erwischt Wigbert
@ Christian J. Mein DRC hatte keine Fehler gezeigt. Danke für den Tipp. Aber kein Problem, die meisten Fehler sind schon raus. Knifflig wirds mit den Abständen an den Platinenrändern. @ Hauke Radtki Ratsnest habe ich dann auch entdeckt. Musste mich erst wieder an das Eagle Look&Feel gewöhnen. Aber langsam kommt das verstaubte Wissen wieder ans Tageslicht. Mir ist aufgefallen, dass die Elkos alle 5mm Raster haben. Die Elkos die ich hier von Reichelt rumliegen habe, sind meistens im 2,5-er Raster. Bei den nicht allzu großen Werten auch verständlich. Ich versuch mal noch den Elkos ein zweites Rastermaß als Alternativbestückung beizubringen. Was haltet ihr davon der Schaltung noch einen Reset Taster zu verpassen? Könnte derweil schonmal jemand den Stecker mit dem gerouteten Stecker vergleichen? Ich schick nachher nochmal einen aktualisierten Stand. Gruß Kai
Hi, wie versprochen hier nun der aktuelle Stand. Ich hab jetzt noch nen Reset Taster dazu gefummelt, und an den Elkos sowie der Spule zusätzliche Pads für ein alternatives Rastermaß eingefügt. Der DRC lief bei eben Fehlerfrei. Da ich sicher auch Fehler mache, wers nett, wenn jetzt nochmal jemand drüber schauen könnte. Gruß Kai
Hallo, nimm bei der Drossel bitte auch 5mm Abstand. Ich habe hunderte davon hier und kann die beilegen, meine haben einen sehr kleinen Innenwiderstand, sind auf Ferrit gewickelt. Elkos ruhig alle auf 2,5mm, notfalls nimmt man eben Tantals. 5mm würde ich weglassen. Bitte das Layout dann heute noch schicken. Reset Taste braucht es wohl eher nicht, der Platz wird langsam eng.
Kann eigentlih einer erklären, warum sich auf dieser Platine in der Freeware Version von Eagle manche Bauteile nicht verschieben lassen. Eagle hat mir jetzt ziemlich oft eine Meldung gegeben, dass diese Operation mit der Freeware-Version nicht möglich sei. Setzt man das Bauteil dann woanders hin, dann geht es. Die Platine ist doch nur 80x100 groß, dann müsste doch alles gehen?
Ich war wohl einen Tick schneller. - Reset Taster ist drin. - Raster 2,5 bei Elkos auch. - Raster 5mm bei Drossel auch. Schau mal bitte ob es so passt, mir laufen grad die Augen über. Aktueller Stand ist als DIP3.zip im obigen Posting. Die Raster 2,5 und 5 mm könnten evtl. nicht ganz exakt stimmen, weil ich die Lötaugen von Hand platziert habe, und die Bauteile sich alle an einem unterschiedlichen Raster orientieren. Das war wohl nicht von Anfang an richtig eingestellt, oder ist geändert worden. 0,1mm hin oder her dürften aber bei den bedrahteten Bauelementen kein Problem sein. Gruß Kai
Hallo, der Reset Taster ist zwar wegen der Äthetik nicht mein Fall aber man muss ihn ja nicht einbauen, Ich würde sagen wir lassen es jetzt so, wenn die Steckerfrage geklärt ist. Gefällt mir gut. PS: Vielleicht mal eine Eagle 5.x Vollversion besorgen :-) Ich habe bis heute noch nicht kapiert wie man Innenlagen routet, geschweige denn wie man das einstellt.
Mit der Freeware-Version gehen soweit ich weiss Innenlagen gar nicht. Die Vollversion ist sicher nicht schlecht, aber für die wenigen Layouts zu denen ich privat noch Zeit finde, lohnt sich die Anschaffung nicht. Ich wollte mir eigentlich mal KiCAD genauer ansehen. Das ist OpenSource und somit ohne Einschränkungen und Eagle sehr ähnlich. Denn manchmal will man auch ne grössere Platine machen, auch wenn die Schaltung einfach ist. z.B. um Befestigungslöcher zu irgendwas passend zu setzen. Das wäre auch bei dieser Platine interessant gewesen. Dann hätte man die Platine so dimensionieren können, dass sie genau auf die Langlöcher des Displays passt. Bzgl. dem Taster: Ich hab halt den genommen, den ich schon da hab. Ausserdem ist er bei Pollin und Reichelt billig und leicht zu beschaffen. Ich werd ihn wahrscheinlich auch erst dann drauflöten, wenn ich vor habe an der Software rum zu stricken. Gruß Kai
Hallo, ich weiss nicht, ob mein ARM7 stark genug ist um den reset Pull Up herunter zu ziehen, der Arm kann nur ~0,8mA pro Pin. Es wäre auf jeden Fall noch wichtig eine Synchronisation zu schaffen, damit das Protokoll nicht durcheinander kommt. Sowas hat jede gute Statemachine drin. Kann da jemand was per Software bauen? Ggf. ziehe ich dann statt dem Reset Pin einen anderen Pin zur Uart leiste, der intern zurücksetzt, wenn er low gezogen wird. Oder zB resettet die Uart wenn sie 100 Mal 0x00 bekommt oder irgendetwas anderes. Evtl ist ja noch ein Timer frei, der ~50ms nach dem letzten zeichen die Statemachine zurücksetzt. Warum? es muss vermieden werden, dass sich der Avr in einem undefinierten Zustand befindet, wenn nicht alle Zeichen kommen. Das ist zb immer der Fall, wenn jemand am Host System auf Reset drückt. Es gibt dann keine Chance mehr den Avr dazu zuu bewegen, dass er wieder auf Befehle wartet. Wie gesagt, das MUSS ein richtiges System drin haben, das gehört zu Statemachines dazu. 1. Timer überwacht Uart, kommt x ms kein zeichen mehr leert er Puffer etc und setzt zurück. Hat ARM automatisch, komt 3 Perioden kein Zeichen wird ein Flag gesetzt. 2. Ein Pin wird abgefragt, ist sehr zeitsparend. 3. Eine Befehlsfolge wird vereinbart, zB ein Kommando 0xff wird oft gesendet bis AVR mit 0xnn antwortet. Da wäre aber nicht so gut, weil ein TX Pin für den Host ausreichen soll, ein Display antwortet normalerweise gar nicht, bzw muss es nicht. meine bevorzugte Lösung: 1 Wenn eben möglich sollte uart auf 56700 hochgedreht werden.
Wie wärs einfach den Tx-Pin mit rauszuführen? Dann kann man je nach bedürfnissen beliebig komplexe Bestätigungen zurücksenden bzw. über diesen Pin synchronisieren. Weils oben mal angesprochen wurde: Ich hab den Reichelt-Ram den Benedikt ziemlich am anfang mal genannt hat (hat glaub ich 70ns). Der läuft bei mir problemlos ohne Waitstates. Wie das bei einem anderen Exemplar ist kann ich natürlich nicht sagen. Sebastian
Hallo, es gibt auch Leute die keinen Avr haben (zB ich :-) und es soll ja bei mir als ARM, PIC user auch laufen. Ein biriktionales Protokoll ist immer aufwendig, das mit der Busy leitung ist schon super, ein Tx, ein GND und eine Busyabfrage. Über die Busyabfrage könnte auch was laufen, wenn sie zB 10us auf Input geschaltet und gesampled wird, damit der Host dort resetten kann. Ich hoffe nur jemand kann das für mich irgendwann machen, da ich uzwar jemanden habe, der Avr bespielen kann aber mehr auch nicht. Wenn der reichelt läuft ist es doch gut. PS: Ich habe inzwischen auch eine smd Version (AVR als TQFP) fast fertig, die ist nur halb so gross. Nur die schwer zu beschaffenden Bauteile als bedrahtet belassen bzw nur dann smd wenn Platz gespart wird.
Hallo, ich bitte alle Besteller eine Mail an admin@der-scirocco.de zu senden, die NUR folgende Angaben enthält: Betreff: Grafikcontroller Name; Vorname Lieferadresse Telnr (für Komplikationen) Anzahl Platinen. Ich bestelle erst wenn ich alle Daten habe und schicke die Kontodaten dann per Sammelmail raus. Die FPC Stecker sind fester Berstandteil der Lieferung, kosten 70c glaube ich. Gratis gibts die Spule mit dabei. Ich kann mit e-mails über kryptische Accounts ohne Name, ohne Adresse wirklich nichts anfangen. Gruss, Christian O.Hagendorf (2) k. Hingst (8P + 10 Buchsen) M. Prader (1) L. Jentsch (1) W.Friedl-Grimm (1) T.Kalbe (2)
Bestellung von 20 Platinen ist gerade abgeschickt worden. Bitte jetzt auch die FPC Stecker bestellen.
Habe auf 30 Platinen aufgestockt, da noch weitere Bestellungen kamen.... bitte 30 FPC Stecker bestellen, Ende nächster Woche sind die Platinen da!
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
>Bitte 32 FPC Stecker
bis heut Abend kann die Steckeranzahl ja noch korrigiert werden
Wigbert
Hallo, funzt der Inverter von Pollin an deren Displays? Die haben derzeit nur einen einzigen im Angebot für 4,95€ mit Lampe. Wird ja mal Zeit zu bestellen, nech? ;-)
Ja, der Inverter sollte gehen. Eventuell muss man die Betriebsspannung etwas reduzieren, da der Inverter für längere Röhren (=mehr Spannung) ausgelegt ist. Ich betreibe die Displays immer mit der niedrigst möglichen Spannung, ab der die CCFL sauber zündet.
Benedikt, danke für die Info. Schwingst Du Dich nochmal an den Code Deines Erfolgsprojektes wegen der notwendigen Synchronisation? Busy Pin etc? Bei mir gehts leider nicht, weil ohne Arme keine Kekse, AVR ist für mich kein Thema.
Christian J. schrieb: > Schwingst Du Dich nochmal an den Code Deines > Erfolgsprojektes wegen der notwendigen Synchronisation? Busy Pin etc? Wenn du mir genau sagst was ich machen soll, kann ich es versuchen.
Hi, irgendeine Möglichkeit, den Controller in den Idle State zu kriegen, d.h. wenn nach dem x.ten Byte der Strom abreisst aber y Bytes erwartet werden muss er raus wieder in den Empfang. Der Busy Pin liesse sich doch 10us auf Input schalten und auswerten, der kurze Kurzschluss macht es ja auch nicht.
Wie weiter oben erwähnt: Etwas besseres als den Reset Pin rauszuführen fällt mir nicht ein. Eine weitere Möglichkeit wäre zwischen Daten und Befehlen zu unterscheiden (z.B. über ein bestimmtes Byte das vor einem Befehl gesendet wird. Allerdings muss man dieses dann, falls es zufällig ein Datenbyte ist, auch wieder extra kennzeichnen, was die Ansteuerung wiederum aufwendiger macht.) Bzw. eine Möglichkeit gibt es momentan schon: Worst case erwartet der Controller 255x255=65025 Bytes. Der Befehl 0 ist nop. Wenn man also 65025x 0 sendet, dann sollte der Controller wieder bereit sein für neue Befehle. Ich könnte das ganze noch auf 80x240=19200Byte begrenzen, dauert bei 57600Baud aber trotzdem noch 3,3s.
Hi, mal für Dumme, war da nicht schon ein Busy Pin vorhanden, der den Datenfluss stoppt und was soll synchronisiert werden? Ok es gibt wohl keine Check Rückantwort, das alles richtig angekommen ist, wäre bei Einsatz eines Abgesetzten Displays vielleicht notwendig. Wigbert
Wigbert Picht-dl1atw schrieb: > mal für Dumme, war da nicht schon ein Busy Pin vorhanden, > der den Datenfluss stoppt und was soll synchronisiert werden? Ja, den gibt es. Der stoppt die Datenübertragung wenn der Empfangspuffer überläuft.
Leute, nicht so schwerfällig. Jedes Protokoll MUSS eine Möglichkeit bieten, dass es aus einemm fernen State zurück in den Idle State kommt. Die ganze Sache ist ja nichts anderws als eine Statemachine. Meinetwegen kann man das auch mit dem WDT machen, dass er aus einer Empfangsschleife rausgeht, wenn keine neuen Bytes mehr kommen, jedoch müssen natürlich die Inhalte des Sram unverändert bleiben. Timeout ca 100ms. Derzeit hängt der Avr unrettbar fest, wenn das Protokoll unterbrochen wird oder man sendet dermassen viel Müll rüber, dass selbst die Bitmap Funktion überläuft.
Christian J. schrieb: > Meinetwegen kann man das auch mit dem WDT machen, dass er aus einer > Empfangsschleife rausgeht, wenn keine neuen Bytes mehr kommen, jedoch > müssen natürlich die Inhalte des Sram unverändert bleiben. Kann ich gerne einbauen, ist eine Sache von ein paar Sekunden. Aber wie gesagt: Ich finde die Lösung nicht gut, denn dann resettet der AVR ununterbrochen wenn keine Daten gesendet werden. > Derzeit hängt der Avr unrettbar fest, wenn das > Protokoll unterbrochen wird oder man sendet dermassen viel Müll rüber, > dass selbst die Bitmap Funktion überläuft. Das stimmt nicht: Wie oben geschrieben: Man muss einfach nur Daten senden, damit die Funktion die erwartete Anzahl bekommt. Wenn man nicht weiß wieviele, dann einfach 0en senden, denn die werden als Befehl ignoriert.
Vielleicht ist es eine bescheuerte Idee, aber wie wäre die Anwendung des SLIP-Protokolls? Lg Michael
Das geht in die oben erwähnte Richtung, dass es feste Werte gibt die einen neuen Befehl ankündigen, ähnlich STX/ETX. Soll ich das ganze auf solch ein Protokoll umbauen (ähnlich dem das ich bei meinem 640x480 Controller verwendet habe)? Also alle Daten die ankommen sind Bild oder Textdaten, erst wenn ein bestimmtes Zeichen erkannt wird (z.B. der Escape Code 27), dann wird der darauffolgende Wert als Befehl interpretiert. Um den Datenwert 27 zu senden ist dieser 2x hintereinander zu übertragen. Das ganze hat dann den Nachteil, dass man nicht dumm die Bilddaten übertragen kann, sondern alle Bytes auf den Wert 27 prüfen muss, und diesen dann doppelt einfügen muss. Dies empfand ich als ziemlich nervig.
>Christian J. schrieb: >> Meinetwegen kann man das auch mit dem WDT machen, dass er aus einer >> Empfangsschleife rausgeht, wenn keine neuen Bytes mehr kommen, jedoch >> müssen natürlich die Inhalte des Sram unverändert bleiben. Benedikt K. schrieb: >Kann ich gerne einbauen, ist eine Sache von ein paar Sekunden. Aber wie >gesagt: Ich finde die Lösung nicht gut, denn dann resettet der AVR >ununterbrochen wenn keine Daten gesendet werden. Ohne jetzt die Sourcen bzw. das Protokoll genau zu kennen, aber was spricht dagegen den WDT erst dann zu aktivieren, nachdem das erste Byte empfangen wurde und wieder zu deaktivieren, wenn alle Kommandos abgearbeitet wurden? Dann is ein einfacher Neueinstieg möglich, sollte ein Kommando abgebrochen werden und der ständige Reset wird vermieden, wenn der Host gerade keine Kommandos sendet.
Ohne jetzt die Sourcen bzw. das Protokoll genau zu kennen, aber was spricht dagegen den WDT erst dann zu aktivieren, nachdem das erste Byte empfangen wurde und wieder zu deaktivieren, wenn alle Kommandos abgearbeitet wurden? --- Wenn der Avr einen solchen WDT hat, der sich abschalten lässt wäre das eine gute Lösung. Das Protokoll sollte einfach bleiben, so dass jeder damit umgehen kann.
Ich habe mal den besagten Timeout eingebaut. Allerdings nicht global über den WDT, sondern nur lokal in der Schleife die die Bilddaten empfängt. Bei allen anderen Befehlen hängt das ganze also weiterhin, was meiner Meinung nach nicht schlimm ist, denn für die restlichen Befehle reichen worst case 8 nops. Notfalls kann ich das aber noch einfügen, es macht den Code halt etwas unleserlich und bläht diesen etwas auf. Im LCD Interrupt wird eine Variable runtergezählt, und sobald diese 0 erreicht wird die Empfangsschleife für Bilddaten verlassen und mit den normalen Befehlen/Daten weitergemacht. Dies hat den Vorteil, dass sich auf dem Display nichts verändert, da der Controller ja weiterläuft und nicht neu startet. Das Timeout ist momentan auf 1s eingestellt, kann aber zwischen etwa 1/100 bis 3s verändert werden. Die nächste Frage wäre dann noch die Baudrate: 57600 bei 16MHz ist grenzwertig (2,1% Fehler). Im 2x Modus reduziert sich der Fehler auf 0,8%, allerdings gefällt mir der 2x Modus aufgrund der 1x Abtastung nicht sonderlich, da hierdurch alles fehleranfälliger wird. Hier gibt es nun mehrere Alternativen: - andere (höhere?) Baudrate, wie 62,5kBaud, 125kBaud, 250kBaud, 500kBaud usw. - 18,432MHz Quarz für etwas mehr Rechenleistung und alle Standardbaudraten, dafür aber etwas außerhalb der Specs. - 2x Modus nehmen und fertig.
Hallo, lass mal die Baudrate so, die anderen kann ich nicht einstellen. Mist, habe mein LPC2368 Board grad geschossen, der Proz ging in einer Rauchwolke auf ;-(((((((( Wird wohl dauern ein neues aus China zu kriegen.
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.
Info: Der LP Hersteller hat noch bis morgen Urlaub und daher noch nicht geantwortet. Es sind bisher 4 Zahlungen eingegangen. Danke dafür.
Zwischenstand: Das Geld ist von allen bis auf einen eingetroffen. Leider habe ich bisher kein Feedback von Bilex-lp.com erhalten, auch auf Nachfrage nicht. Die Firma habe ich mir empfehlen lassen aber ich denke, dass es manchmal besser ist ein paar Euro mehr zu bezahlen und in Deutschland fertigen zu lassen statt in Rumänien. Die haben nicht mal eine Telefonnummer. Ok, das Geld habe Sie natürlich auch noch nicht. Erst Ware dann Kohle. Ich habe denen Frist gesetzt, danach werde ich woanders fertigen lassen. Ob es bei den 11,50€ dann bleibt weiss ich jedoch nicht.
Es fehlen noch die Überweisungen von Michael Prader Wolfgang Friedl-Grimm Bitte nachholen. Bilex hat sich gemeldet, Platinen werden morgen eingestielt. Es werden 10 Stück Überhang werden, sind also noch welche zu haben. Wie steht es mit den Steckern? Benedikt, wärest Du vielleicht so nett und würdest mit einen programmierten AVR senden mit der neuen Software? Ich überweise Dir die Kosten dann sofort.
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.
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
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?
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.
Hallo Christian, besteht noch die Möglichkeit an Platinen und LCD-Stecker ranzukommen ? Gruß Jürgen
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.
@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ß
> 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?
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.
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.
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.
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
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.
@Christian J. (elektroniker1968)
>Die Stecker sind leider auch noch nicht hier
kein Problem, Proformarechnung hast Du, nach Zahlungseingang
verschicke ich die Ware
Wigbert
Habe ich da was verpasst? Ich habe keine e-mail hier mit einer Rechnung. Bitte sende diese nochmal an admin@der-scirocco.de.
@Christian J. (elektroniker1968) schon geschehen. Wigbert
> 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.
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.
Hallo, Überweisung des Nichtbezahlers ist jetzt da, kam gestern wohl noch rein. Ich werde denen mal Druck machen, dass die liefern.
ob das alles was wird???????????????
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
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.
/** 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?
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.
In uart.h (62)heißt es:
1 | /** Size of the circular receive buffer, must be power of 2 */
|
2 | #define UART_RX_BUFFER_SIZE 256
|
Wo steht denn diese 250? http://en.wikipedia.org/wiki/Power_of_two
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.
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
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.
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.
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.
@ Christian J. (elektroniker1968) Dank Dir, die Stecker sind per DHL zu Dir unterwegs. Wigbert
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
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.
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
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.
Die Software ist hier: http://www.mikrocontroller.net/attachment/51086/lcd_con_320x240.zip 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.
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.
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.
Ich würde die Platine so nicht in Betrieb nehmen: Der mega8515 steckt falsch rum drin.
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?
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).
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?
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
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.
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!
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.
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.
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.
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.
Du bist schon genial :-) Pin 5 hat vollen Masseschluss. Auf den unbest. Platinen aber nicht. Ich suche grad noch.....
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.
-30 V sind es jetzt im Leerlauf. Dürfte passen. Gute Nacht.
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
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
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.
Kannst Du den USBProg für den Avr empfehlen, damit ich mir das künfti selbst brennen kann? Ich komme ja wohl nicht drumherum.
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
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 :-)
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
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?
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.
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
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 | ......
|
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?
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.
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.
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.
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 | }
|
Also, da ist noch was strubbelig, wenn ich keine 1000 NOPs vorher und nachher sende macht er mir das Bild schwarz und verschoben.
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.
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......
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.
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ß
... und hier ist nochmal ein Schaltplan ohne die lästigen Kringel um die Pins :-)
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.
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); |
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.
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 :-)
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.
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 ?
Häng die ungenutzten Adressen an GND oder Vcc, dann sollte das Problem gelöst sein.
Danke, werde ich morgen ausprobieren.
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.
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.
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); |
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
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.
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?
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
Und hier das gleiche nur gedithered.
@ 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
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.
Hallo, es klappt, ich hatte nur vergessen, dass man bei Grau /4 teilen muss und nicht durch 8.
@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
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?
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.
@ 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
Hier die hex Datei der neuen Version mit Graustufen und 57600Baud
@ Benedikt Dank Dir, trotz so schönem Wetter so hilfreich. Toll. Wigbert
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.