Sonntag, 21. September 2014

Nachtrag: 6. Überraschung (Bugfix verschlimmbessert die Bildqualität)

Die Beseitigung dieses Problem hat die Fertigstellung des Gehäuseeinbaus maßgeblich verzögert.

Begonnen hatte es mit diesem Fehlerbild: Wurde der TFT-Maximite mit einer normgerechten Versorgungsspannung von 5V betrieben fing das Bild an zu springen oder zu zittern. Die Sprünge traten unregelmäßig ca. 2-20 mal in 10 Sekunden auf, aber immer exakt um eine Zeile nach unten. Bei 4,5V oder weniger war das Bild dagegen einwandfrei. Betroffen waren einige aber nicht alle TFT-Maximite der rev. 1.3.

Bei segor bin ich auf einen Bugfix von Carsten Meyer gestoßen, der das Problem beheben sollte. Dazu musste man ein paar Bauteile (natürlich SMD) auslöten und mit einem neuen Bauteil anders wieder einlöten. Auf der Platine sieht das dann so aus:

Ausgangssituation, Platine rev. 1.3

Bugfix durchgeführt

Leider hat der Bugfix das Problem aber dahin gehend verändert, dass das Bild dauerhaft um eine Pixel-Zeile verschoben war, eine ziemliche Katastrophe!


Verschlimmbesserung durch den Bugfix: Die letzte Bildzeile fehlt dauerhaft!


Nach längeren Messungen und Diskussionen im Forum habe ich den zusätzlichen 1kOhm Widerstand durch ein 500Ohm Poti ersetzt.

R23 ersetzt durch ein 500Ohm Pot


Der folgende Abgleich war zwar etwas frickelig, führte aber zum Erfolg:

  • Erst mit R6 (das Poti, das schon vorhanden war) das Bild horizontal verschieben bis alle Pixelspalten ohne Farbränder zu sehen sind.
  • Dann mit R23 (das neue Poti) die vertikale Lage nachstellen.
  • Da dabei aber die horizontale Bildlage beeinflusst wird muss diese wieder nachgestellt werden, was wiederum zu einer vertikal-Korrektur führt und so weiter … 
kurz: Man muss geduldig optimieren. Bei mir hat's ca. 1/4h Dafür hat man am Ende aber ein dauerhaft stabiles Bild mit allen Zeilen und Spalten.

Betroffen von dem Problem sind einige TFT-Maximite der rev. 1.3, aber nicht alle. Ob der Fehler auch bei rev. 1.4 auftritt kann ich nicht sagen. Da dort der Bugfix aber standardmäßig verbaut ist, ist es aber durchaus möglich.


Der Originalpost findet sich hier: 6. Überraschung: Bugfix verschlimmbessert die Bildqualität

Sonntag, 14. September 2014

Änderung der Einstellungen dieses Blogs

Nachdem mich über Umwege konstruktive Kritik erreicht hat, habe ich die Einstellungen für diesen Blog angepasst:

Ab sofort ist es auch tatsächlich möglich Kommentare zu schreiben.

Weiterhin habe ich mein Profil korrigiert. Jetzt wird dort auch meine E-Mail-Adresse angezeigt.

Wer also Kritik, Fragen oder Anregung hat kann sie jetzt ohne Umwege loswerden.

Der Gehäuseeinbau – Teil 2 : Die Seitenteile

Nachdem ich endlich wieder Zeit und Gelegenheit hatte mechanische Arbeiten auszuführen habe ich endlich die Seitenteile in Angriff genommen.

Zwischenzeitlich sind mir natürlich noch ein paar Idee gekommen, die mit eingearbeitet wurden.

Seitenteil links

Auf der linken Seite ist noch ein Anschluss für PL7 hinzugekommen. Ursprünglich ist der Anschluss als Schnittstelle zum c't-Lab vorgesehen. Ich verwende ihn aber um auf einem relativ schlanken (und damit auch leichtgewichtigen) Stecker die verschiedenen Bus-System (z.B. I2C) herauszuführen.

Seitenteil rechts

Auf der rechten Seite sind noch die beiden LEDs hinzugekommen sowie der Anschluss für die Stromversorgung.

Die fertigen Seitenteile sehen so aus:

die beiden Seitenteile, oben das linke, unten das rechte

Beim rechten Seitenteil ist mir ein Malheur passiert. Ich habe die Bohrungen für LED und Strombuchse verwechselt und das Ganze natürlich erst bemerkt, als alles fertig war. Was macht man in so einem Fall? Man stopft das irrtümlich raus gebohrte Material wieder rein und bohrt noch einmal.

Auch wenn es auf dem Bild so aussieht, ganz so einfach war es dann doch nicht. Letztendlich habe ich aus einem Ausschnitt aus dem linken Seitenteil eine Stück zugeschnitten bzw. zugefeilt und eingepasst.

Fertig bestückt und eingebaut sieht das dann so aus:

Die Seitenteile montiert

Blick in das Gehäuse ohne Deckel

alles zusammengebaut

Was noch fehlt:
  • eine vernünftige Displayschutzfolie anbringen (momentan klebt noch die Schutzfolie von der Auslieferung drauf)
  • Reset- und Bootloader-Taster einbauen
  • Akku einbauen

Samstag, 19. Juli 2014

Üble Überraschung: Irgendwas hat auf der SD-Karte randaliert

Das Problem

Da schaltet man den TFT-Maximite ein, lädt ein Programm von der SD-Karte, lässt ihn schöne Grafiken auf das Display mahlen (ohne irgendeinen Zugriff auf die SD-Karte) und nach dem Neustart (Stromversorgung kurz abgeklemmt) startet die AUTORUN.BAS nicht mehr. Nach mehreren vergeblichen Resets und Karte-raus-Karte-wieder-rein-Aktionen findet diese dann den Weg in einen Kartenleser und ein Blick auf den Computermonitor lässt einem das Herz in die Hose rutschen:

Auf der Karte befinden sich nur noch ein paar einzelne Dateien im Hauptverzeichnis. Alle Unterverzeichnisse und v.a. alle Basic-Dateien aus dem Hauptverzeichnis fehlen!

Ein erster Versuch mit „testdisk“ die gelöschten Dateien wieder herzustellen schlägt unerwartet fehl, es werden keine gelöschten Dateien gefunden.

Ein genauerer Blick mit dem Hexeditor offenbart das gesamte Ausmaß der Katastrophe:
  • Die FATs stimmen nicht mehr überein, einzelne Bereiche sind mit Nullen überschrieben.
  • Das gleiche Bild im Hauptverzeichnis, auch hier stehen Nullen wo keine sein sollten.
  • Im Datenbereich gibt es aber viele Sektoren die nicht nur Nullen enthalten.

Vorsichtige Entwarnung, allerdings mit sofortiger Ernüchterung

Das heißt also, die eigentlichen Daten sind höchst wahrscheinlich noch vorhanden, es fehlt aber die Zuordnung welche Cluster eine Datei bilden, wo auf dem Speichermedium sie liegt und wie sie heißt. Wenn die Dateien nicht zu stark fragmentiert waren (am Besten natürlich gar nicht) bestehen noch Chancen die Daten zusammen zu kratzen. Man müsste doch blos, ...

Im Prinzip ja, aber berücksichtigt man die Größe der SD-Karte wird einem sehr schnell schwindelig: Die SD-Karte ist mit 2GB zwar relativ klein, das heißt aber trotzdem, dass es ca. 4.000.000 Sektoren gibt die zu 65.000 clustern zusammen gefasst sind!

Selbst wenn man schnell ist und nach durchschnittlich 10 Sekunden ein cluster zuordnen könnte (neue Datei oder Fortführung der alten Datei) bräuchte man bei 4h täglich 1,5 Monate! Sobald allerdings die kleinsten Komplikationen auftreten explodiert die nötige Zeit. Es reicht schon, wenn in einem Cluster noch die Reste von alten Daten enthalten sind. Und bei fragmentierten Binärdateien wird es sowieso zu einem Ding der Unmöglichkeit die von Hand wieder zusammen zu setzen!!!

Also doch alles im Eimer??????

Die Lösung

Zum Glück gibt es tools die einem helfen. Außerdem hilft es ungemein, wenn man genau weiß, nach was man sucht.

Tools

Ein sehr gutes tool kommt zusammen mit „testdisk“ und heißt „photorec“. Ursprünglich entwickelt um verschwundene Photos auf Speicherkarten wieder aufzuspüren kann es mittlerweile auch andere Dateien aufstöbern. Es nimmt sich hierzu z.B. das FAT vor, hangelt sich durch die noch vorhanden Verweise und setzt auf diese Art die Dateien wieder zusammen. Das funktioniert auch wenn das Hauptverzeichnis korrumpiert ist, setzt allerdings ein intaktes FAT voraus. Es kann aber auch das Speichermedium komplett abklappern und raten, was mal was war (Bild, Text, etc.) und was mit wem zusammen gehört. Allerdings kommt hierbei je nach Zustand des Speichermediums (viele gelöschte Dateien, fortgeschrittene Fragmentierung) viel Müll heraus.

Bei mir hat das Durcharbeiten des FAT schon mal ca. 90% der Dateien wieder hergestellt. Dummerweise haben aber einige wichtige Dateien gefehlt.

A priori-Wissen

An diesem Punkt kommt das Wissen um die fehlenden Daten ins Spiel. Bei mir waren es ausschließlich BASIC-Dateien die noch fehlten. Quellcode kann man mit einem hex-Editor sehr einfach aufspüren, wenn man nach den entsprechenden Schlüsselwörtern sucht. Bei MMBasic für einen TFT-Maximite sind das z.B. „touch“. Hinzukommen noch „print“ und z.B. „cls“. Außerdem sind die Dateien sehr selten größer als 32kB und somit immer in einem einzelnen cluster enthalten und nicht über mehrere verteilt.

Wenn man dann noch einen halbwegs vernünftigen Editor hat, bei dem man z.B. den dargestellten Bereich auf Sektor-Größe oder ein Vielfaches davon einstellen kann hilft das ungemein. Auch eine Volltextsuchfunktion die Groß- und Kleinschreibung ignorieren kann ist extrem hilfreich.

khexedit mit den ersten 1024Byte (zwei Sektoren bzw. 1/32-Cluster) des Programms „COLRDEMO.BAS“

Damit konnte ich dann auch noch die restlichen Basic-Dateien deren FAT-Einträge korrumpiert waren aufspüren und sichern. Das hat dann zwar knapp. 3 Stunden gedauert, dafür hatte ich aber auch wirklich alle Dateien wieder.

Fazit

Was genau warum auf meiner SD-Karte passiert ist kann ich nicht mehr nachvollziehen. Ich werde aber in Zukunft darauf achten, die Programme auch noch anderswo zu speichern. Denn obwohl ich diesmal mit einem blauen Auge und ohne Datenverlust davon gekommen bin will ich soetwas nicht noch einmal erleben, einmal reicht!!!

Sonntag, 22. Juni 2014

6. Überraschung: Bugfix verschlimmbessert die Bildqualität

Der Gehäuseeinbau ist immer noch nicht abgeschlossen. Grund dafür ist, dass ich, wie im letzten Post kurz angesprochen, Probleme mit dem Display hatte. Da ich hierfür ständig am Messen war war ein Gehäuse nur hinderlich.

Das Fehlerbild war Folgendes: Wurde der TFT-Maximite mit einer normgerechten Versorgungssapnnung von 5V betrieben fing das Bild an zu springen oder zu zittern. Die Sprünge traten unregelmäßig ca. 2-20 mal in 10 Sekunden auf, aber immer exakt um eine Zeile nach unten. Bei 4,5V oder weniger war das Bild dagegen einwandfrei.

Das Problem war seit der ersten Inbetriebnahme vorhanden. Da ich anfangs aber eine geringere Versorgungsspannung auf der Platine hatte (siehe 2. Überraschung: USB-Verbindung funktioniert nicht) trat das Problem nicht in Erscheinung. Seit Verwendung der neuen Stromversorgung störte es aber massiv.

Durch Zufall bin ich bei segor auf die Beschreibung eines Bugfixes zum Thema Bildzittern gestoßen (http://www.segor.de/#/bauteilesaetze-a-module/bauteilesaetze/269-tft-maximite-bugfix). Das Phänomen wird dort nur diffus als „Bildzittern bei verschiedenen Stellungen des Abgleichreglers“ beschrieben. Meine Frage ob mit „Bildzittern“ „Bildsprünge um eine Zeile nach unten“ gemeint ist und ob das durch den Bugfix behoben werden würde wurde ich von segor an Carsten Meyer verwiesen. Dessen Antwort war kurz und knapp „Ja.“ kam allerdings erst auf ausdrückliches Nachhaken.

Der Bugfix ist ähnlich delikat in der Umsetzung wie die Reparatur von Pin 20 (siehe 3. Überraschung: Pin 20 funktioniert nicht). Wirken tut er auch. Das Bild springt nicht mehr ständig um eine Zeile nach unten, es ist dauerhaft um eine Zeile nach unten verschoben. So war das nicht geplant!!!

Da Nachfragen bei Carsten Meyer bis heute unbeantwortet blieben und in den einschlägigen Foren auch nichts Brauchbares zu finden war musst ich selbst kreativ werden. Anscheinend werden durch die Entlastung des Vsync-Pins die Flanken der Signale so weit verschliffen, so dass die Synchronisation nicht mehr sauber funktioniert.

Ein der möglichen Gegenmaßnahmen ist den neu eingefügten 1k Widerstand durch ein Poti zu ersetzen. Alternativ könnte man auch versuchen C6 zu verkleinern. Da ich kein Sortiment an SMD-Kondensatoren habe, habe ich erst einmal die erste Möglichkeit gewählt. Durch den zusätzlichen Freiheitsgrad wird die Justage nicht einfacher, letztendlich war sie aber von Erfolg gekrönt: Ein dauerhaft einwandfreies Bild, ohne temporär oder dauerhaft fehlende Bereiche, und das unabhängig von der Versorgungsspannung.

Bilder von der Lötaktion gibt es demnächst.

Leider konnte ich nicht klären, ob das Problem durch fehlerhafte Ansteuerung des Displays oder durch mangelhafte Auswertung der Signal vom Display verursacht wird.

Donnerstag, 12. Juni 2014

Kleiner Einschub: Spannungsversorgung

Ursprünglich wollte ich in dem Gehäuse noch 4 Mignon-Akkus unterbringen, um auch mal einen Betrieb abseits der Steckdose zu ermöglichen. Allerdings hat sich schon recht bald gezeigt, dass das wegen des beschränkten Platzes wohl nichts wird. Eine Alternative wäre ein LiPo-Akku gewesen, allerdings hätte der eine Reihe von Nachteilen mit sich gebracht (sehr empfindlich gegenüber Tiefentladung, aufwändige Überwachungs-Elektronik, ...). Außerdem wollte ich nicht ständig auf das Labornetzteil bzw. auf meine einzige Wandwarze mit 5V-Ausgang angewiesen sein. Also musste ein Spannungsregler her.

Da die Schaltung einen möglichst hohen Wirkungsgrad haben sollte (Akku-Betrieb!) wäre eigentlich ein Schaltregler das Mittel der Wahl gewesen. Allerdings sind die nicht unkompliziert aufzubauen. Und ein Fertigmodul hatte ich nicht zur Hand.

Normale Linearregler (78xx) benötigen nur sehr wenige Bauteile, verursachen aber von sich aus schon einen relativ hohen Spannungsabfall (2-3V) und verheizen dementsprechend unnötig viel Leistung. Und je höher die Eingangsspannung, desto schlechter der Wirkungsgrad.

Einen Kompromiss bieten die sogenannten lowdrop-Regler. Als Linearregler benötigen sie nur sehr wenige weitere Bauteile (meistens nur 2 Kondensatoren). Darüber hinaus liegt der von ihnen verursachte Spannungsabfall deutlich unter 1V, d.h. man erhält schon mit weniger als 8V saubere 5V. Aber die Spannungsdifferenz wird natürlich trotzdem vollständig in Wärme umgesetzt.

Meine Wahl fiel auf den L4940V5. Er verträgt bis zu 2A und bei 500mA reichen 5,2V um stabile 5V zu erhalten. Bei 300mA sind es sogar nur 0,14V Spannungsabfall. D.h. wenn man 5,0V als Eingangsspannung anlegt liegen am Ausgang immer noch 4,86V an. Das reicht für den TFT-Maximite noch aus um fehlerfrei zu arbeiten.

Beschaltung des L4940V5

Mit nur zwei zusätzlichen Bauteilen hält sich der nötige Aufwand sehr in Grenzen. Dadurch kann die Schaltung auch schnell auf einem Stück Lochrasterplatine aufgebaut werden.

Beschaltung des L4940V5

Sonntag, 1. Juni 2014

Firmware Update - V4.5

Vor drei Tagen hat Geoff Graham eine neue Version von MMBasic veröffentlicht. Die Version 4.5 bringt einige Neuerung und Bugfixes mit sich. Das zugehörige Changelog ist volle 1,5 Din A4 Seiten lang. Die meisten Neuerungen sind dem Micromite geschuldet.

Hier die wichtigsten Neuerungen in Kürze:
  • Unterstützung für neue Hardware (z.B. Sony-kompatible IR-Signale decodieren und codieren, Ultraschall-Entfernungssensors HC-SR04, LC-Displays, einfache Matrix-Tastaturen, Drehencoder, ..)
  • Syntax-Änderung der I2C- und 1wire-Befehle
  • zahlreiche Bugfixe für den TFT-Maximite, darunter die Aktivierung der Pins jenseits der 20
Der letzte Punkt dürfte wohl alle TFT-Maximite-Besitzer freuen. Es ist jetzt möglich die Pins 21 aufwärts bzw. D1 aufwärts zu verwenden. Das war bisher nur mit einer selbst gebauten MMBasic-Version möglich. Darüber hinaus wurde die letzte Version der Touch-Funktionen implementiert, welche aber leider uralt und fehlerbehaftet sind (siehe z.B. http://raketenbuggy.blogspot.de/2014/02/4-uberraschung-touch-objekte-konnen-tft.html). Aber da diese von Carsten Meyer erstellt wurden kann sich Geoff da nichts aus dem Ärmel schütteln, sprich: Wenn's kein update gibt kann er auch Keins einbauen.

Der wichtigste Punkt ist wahrscheinlich die Syntax-Änderung bei den I2C- und 1wire-Befehlen. Die Änderungen sind so umfangreich, dass alte Programme, die I2C oder 1wire verwenden nicht mehr funktionieren. Geoff schreibt hierzu im Changelog ausdrücklich:

"If you have an existing program that makes heavy use of the I2C protocol it might be worth not upgrading if you do not need any of the other features that this version offers."
„Wenn man Programme hat, die oft das I2C-Protokoll verwenden, kann es sich lohnen auf das Update zu verzichten wenn man nicht die eine oder andere neue Funktion braucht, die diese Version bietet.“

Das hört sich jetzt schlimm an, ist aber in der Realität nicht ganz so wild. Es haben sich größtenteils nur die Namen der Kommandos geändert, die Struktur ist gleich geblieben. Z.B heißt das Kommando um I2C zu aktivieren jetzt „I2C OPEN “ statt „I2CEN“ und „I2C WRITE“ ersetzt „I2CSEND“, d.h. größtenteils lässt sich das durch suchen-und-ersetzen anpassen.

Allerdings gibt es Ausnahmen:
  • Im Master-Mode kann man keine Interrupts mehr definieren
  • Das Empfangs-Kommando im Master-Mode erlaubt es nicht mehr vorher mit dem gleichen Kommando Daten zu senden. Dafür ist jetzt ein extra Sende-Kommando erforderlich.
Ansonsten läuft die neue Version bei mir problemlos. Leider bin ich mit dem Gehäuse-Einbau noch nicht weiter gekommen. Ich kämpfe noch mit einem Problem (das Display spinnt ab und an), bei dem ich noch nicht weiß woher es kommt (vom Display oder vom Board) und was man dagegen machen kann.

Das update für den TFT-Maximite kann man übrigens hier herunterladen:
http://geoffg.net/tft-maximite.html

Gebraucht wird die Version ohne Bootloader, die im oberen Teil der Seite verlinkt ist.

Montag, 14. April 2014

Der Gehäuseeinbau – Teil 1 : Ober und Unterschale

Als erstes wurden die Löcher in die Unterschale gebohrt und soweit angesenkt, dass die Schraubenköpfe außen nicht überstehen. Dann wurden die Abstandshalter (Messingröhrchen) gesägt, auf Maß gefeilt und zusammen mit Unterlegscheiben auf die Schrauben gefädelt. Die Platine kommt zum Schluss.
Unterschale mit Schrauben und Abstandshaltern

Unterschale mit eingebauter Platinen

Blick von der Seite: Genügend Platz nach unten für Stecker und Kabel.

In die Oberschale kommt der Ausschnitt für das Display.
Gehäuseoberschale mit Displayausschnitt

Baut man Ober- und Unterschale zusammen (aufeinander legen reicht fürs Erste) sieht man gleich, ob man genau gearbeitet hat, oder ob man sich vermessen, verbohrt, versägt, verfeilt oder sonst wo nicht aufgepasst hat.
Gehäuse probehalber zusammengesetzt. Der schräge Winkel täuscht, der Displayausschnitt passt genau.

Sonntag, 13. April 2014

Gehäuse-Einbau planen – Teil 3

Die beste Planung nützt nichts wenn man sie nicht umsetzen kann, oder anders ausgedrückt: Wie bekommt man die Maße auf das Werkstück bzw. die Löcher an die richtige Stelle?

Bei den Gehäuseschalen kann man sich an den Kanten bzw. an den Linien auf der Außenseite orientieren. Die Deckel sind aber sehr ungenau geschnitten, krumm und mit unterschiedlichem Übermaß. Auch die Löcher taugen nicht als Orientierungspunkte, die Ränder sind zu rau und von der Lochmitte aus messen ist ziemlich schwierig.

Die Lösung, wenn man kein vernünftiges Werkzeug wie z.B. einen Höhenanreißer hat: Schablonen

Die CAD-Zeichnungen im Maßstab 1:1 ausdrucken, ausschneiden, anlegen, anzeichen, bearbeiten und fertig.

Ganz so einfach war es dann doch nicht. Das Problem war die Zeichnungen wirklich 1:1 auf das Papier zu bringen. LibreCAD fehlt eine entsprechende Funktion, Ausdrucke und Exporte sind immer auf die jeweilige Blattgröße skaliert. Exportiert man die Zeichnung als SVG kann man sie hinterher bequem z.B. mit Inkscape passend skalieren.

Das Ausschneiden mit dem Skalpell hat dagegen problemlos geklappt.

Die fertigen Schablonen: oben für die Enddeckel unten für die Gehäuseoberschale (Displayausschnitt) und -Unterschale (Bohrungen für die Platinenbefestigung).

Die Schablone auf der Gehäuseoberschale sauber ausgerichtet: Hier kommt der Ausschnitt für das Display hin. Die Löcher außen herum kommen in die Unterschale.

Mittwoch, 9. April 2014

Gehäuse-Einbau planen - Teil 2

Mit einem Gehäuse und einem fast fertig aufgebauten TFT Maximite kann man endlich vernünftig planen. Also Messschieber, Taschenrechner, Papier und Bleistift gesucht und die benötigten Maße ermittelt.
Hierbei zeigte sich auch der einzige Kritikpunkt am proMa-Gehäuse: Die Enddeckel passen nicht richtig zum Gehäusequerschnitt. Sie sind zu groß und stehen über.

Enddeckel sind zu groß und stehen über

Aber das lässt sich später mit einer Feile korrigieren.
Aus den gewonnenen Daten habe ich ein CAD-Modell gebaut. So kann man nicht nur die einzelnen Teile so lange zueinander verschieben bis alles passt und es einem gefällt sondern bekommt am Ende (wenn man das richtige Programm verwendet) auch noch eine hübsche Zeichnung mit den Maßen, die man wirklich braucht.
Die Anordnung der Teile hat sich größtenteils von selbst ergeben:
  • Das Gehäuse ist dick genug, so dass ich das Display nicht komplett nach außen setzen muss sondern von innen mit dem Rand am Gehäuse anliegen lassen kann.
  • Da ich auf der Gehäuseoberseite keine Schrauben haben wollte musste die Platine von hinten in der Unterschale befestigt werden.
  • SD-Kartenslot, PS/2- und USB-Stecker gehen nach rechts raus, also muss die Platine im Gehäuse rechts angeordnet werden.
  • Bleibt noch die vertikale Ausrichtung der Platine: Mittig, oben oder unten? Um später unterhalb des Display noch Tasten anordnen zu können (PL9 lässt grüßen) habe ich die Platine ganz noch oben geschoben.
  • Eigentlich wollte ich die Anschlüsse für PL6 (MMBASIC Pins) und später auch für PL7 (ct Lab) nach hinten herausführen. Da dort das Gehäuse aber bis zu 7,5mm stark ist müssen sie seitlich angeordnet werden, und da bleibt nur noch links übrig.
Als Zeichnung sieht das dann so aus:
Blick von oben: Schwarz ist das Gehäuse, grün die Platine und blau die sichtbare Fläche vom 5“-Display.

Blick von rechts: Schwarz ist das Gehäuse, grün die Platine und das Display, gelb die Schrauben und pink die notwendigen Ausschnitte für SD-Karte, USB-Anschluss und PS/2-Tastatur (v.l.n.r.).

Blick von links: Schwarz ist das Gehäuse, blau die Buchse für die MMBasic-Pins und pink die notwendigen Ausschnitte und Bohrungen (die Schrauben der Platine sind weit genug weg und stören hier nicht).
Weitere Durchbrüche für Strom, ... können erst geplant werden, wenn ich weiß, wieviel Platz noch wo übrig ist und wo welche Kabel im Weg sind. Aber gerade Letztere lassen sich schlecht simulieren.
Also wird das Ganze erst mal soweit gebaut wie geplant, dann sehen wir weiter.

Montag, 24. März 2014

Gehäuse-Einbau planen – Teil 1

Als Anschlüsse sollen herausgeführt werden:
  • PL4 (5V Power) als 5,5mm/2,1mm DC-Hohlbuchse
  • PL6 (MMBASIC Pins) als Sub-D 25f 
  • PL8 (PWM out) als 3,5mm stereo Klinkenbuchse
  • LED1 (SD-Zugriff, rot) und LED2 (Power, grün) versenkt eingebaut in Frontplatte
  • PL1 (PS/2 Tastatur), PL2 (USB), PL3 (SD-Karte) und BZ (Summer) als Gehäusedurchbrüche
Folgende Erweiterungen sollen noch nachrüstbar sein:
  • PL7 (ct Lab) als Sub-D 9f
  • PL11 (Reset) als Kurzhubtaster
  • JP1 (Bootloader) als verdeckter Taster (auch Kurzhub-)
  • evtl. Akku für netzunabhängigen Betrieb
Und natürlich muss der TFT auch eine passende Öffnung bekommen.

Das erste Problem war die richtigen / interessanten Abmessungen zu finden, und zwar sowohl vom Maximite als auch vom Gehäuse. Vom TFT Maximite gibt es zwar auf dem github eine Art Maßbild (TFT MM Dimensions.pdf), allerdings hat diese Zeichung zwei gravierende Mängel:
  1. Es ist nur das 4.3'' Display eingezeichnet, das 5'' Display wird überhaupt nicht erwähnt.
  2. Es fehlen einige wichtige Abmessungen (z.B. größte Höhe aller Bauteile, sehr wichtig sonst passt das Gehäuse nicht).
Beim Gehäuse sieht es ähnlich schlecht aus. Von proMa findet sich überhaupt nichts Nützliches (keine Angabe zu Innenmaßen in irgendeiner Form). Von gie-tec gibt es immerhin eine Beschreibung des Profils mit Zeichnung. Dummerweise fehlen auch hier wichtige Maße (wie hoch ein Gehäuse aus zwei Profilen aufeinander ist muss man sich zusammenrechnen, die Höhe der Stege auf der Innenseite fehlt komplett, …). Prinzipiell könnte man die Zeichnung ausmessen, allerdings müsste sie dafür eine gewisse Mindestqualität besitzen.

Was bleibt als Lösung: Gehäuse und TFT Maximite (soweit noch nicht vorhanden) bestellen, die Maße „am lebenden Objekt studieren“ bzw. ausmessen und selbst eine Zeichnung erstellen.

Samstag, 15. März 2014

Total Recompile - Der Fehlerteufel schlägt zu

Leider war in meinem Post vom 02.03.14 ein Fehler.

In der Datei "IOPorts - TFT_Maximite.h" war der Befehl "#define FINALBUILD" auskommentiert. Dadurch waren MMBasic Pin 5 und 6 trotzdem nicht benutzbar. Da ich die Firmware streng nach meiner selbst geschriebenen Anleitung gebaut hatte, war der Fehler auch dort enthalten.

Dummerweise hatte ich die Tests dann mit einer anderen Version durchgeführt, die zusätzliche Änderungen enthielt, die ich nicht veröffentlichen wollte. Dort hatte ich die Auskommentierung der entsprechenden Zeile entfernt, d.h. alles funktionierte einwandfrei.

Der Post vom 02.03.14 ist jetzt korrigiert und eine neue (diesmal hoffentlich wirklich fehlerfreie) Firmware ist im Post vom 10.03.14 verlinkt.

Tut mir leid für den Fehler. Ich hoffe, ich habe nicht zuviel Verwirrung gestiftet.

Montag, 10. März 2014

Total Recompile - Das Ergebnis: TFT_Maximite_44Brb.hex

Nachdem mich mehrere Leute danach gefragt haben und Geoff sein Einverständnis gegeben hat hier nun auch die fertige, selbst gebaute Firmware.

Änderungen gegenüber MMBasic Version 4.4B:
  • PL7 und PL9 werden unterstützt und sind benutzbar
  • die neuesten Touch-Funktionen sind eingearbeitet
Haftungsausschluss: Bei dieser Firmware handelt es sich nicht um einen offiziellen build sondern um eine selbst gebaute Version, die nach bestem Wissen und Gewissen erzeugt wurde. Ich übernehme keinerlei Garantie oder sonstige Gewährleistung. Jede Verwendung erfolgt auf eigenes Risiko. Die Bereitstellung dieser Version wurde von Geoff Graham freigegeben.


Downlaod: TFT_Maximite_44Brb.zip

Sonntag, 2. März 2014

Total Recompile - MMBasic neu bauen

Nachdem auch von Carsten Meyer kein baldiges update (u.a. wegen der touch-Geschichte) zu erwarten ist habe ich mich entschlossen die Firmware mit allen nötigen und nützlichen Änderung selbst zu bauen sprich: total recompile

Das hört sich viel komplizierter an, als es ist. Hat man erst einmal die nötigen Tools installiert ist das Erzeugen einer hex-Datei sehr einfach. Auch das Hochladen der Datei ist unproblematisch.

Vorarbeiten

Eine der Grundvoraussetzungen, den MMBasic-Quelltext, hatte ich bereits. Alles was noch dazu fehlte war ein compiler und eine Möglichkeit die FW auf den TFT Maximite zu bekommen.

Leider gibt es den compiler nicht einzeln, man muss sich das komplette MPLAB-IDE herunter laden. Der Empfehlung aus dem c't Hardware Hacks Artikel folgend habe ich mir die Version 8.9 aus dem Archiv von microchip besorgt. Das Archiv findet man entweder über die Suchmaschine seines Vertrauens oder hier:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2115
Die letzte Version der 8.9er IDE ist die 8.92:
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_92.zip
Bevor man sich das aber installiert sollte man sich über folgende Dinge klar sein:
  1. Die Installation braucht 1,2 GB Plattenplatz!!!
  2. Das IDE verewigt sich an allen möglichen Orten im Betriebssystem und ist nur äußerst schwer wieder vollständig zu entfernen.
Eine Linux-Version gibt es nicht. Allerdings habe ich das MPLAB-IDE mit wine (Version 1.6.2-7 unter Debian jessie) zum Laufen bekommen. So ganz reibungslos ist die Installation aber trotzdem nicht verlaufen, wobei der Fehler meiner Meinung nach nicht bei wine liegt.

Es brauchte 6 Anläufe bis endlich ein komplettes MPLAB installiert war. Zwischendurch gab es immer wieder Abbrüche und kryptische Fehlermeldung. Letztendlich habe ich alles komplett deinstalliert und eine neue "custom installation" durchgeführt. Dabei habe ich bemerkt, dass MPLAB sich selbst nicht rückstandsfrei entfernt, und dass selbst bei manueller Nacharbeit das Setup mir immer noch die exakte Liste der vorher gewählten Komponenten präsentiert. Man sollte sich also gut überlegen ob und wohin man das installiert, schon allein wegen des enormen Platzbedarfs. Wine oder eine virtuelle Maschinen bieten sich hier an, da man beides sehr einfach wieder rückstandsfrei entfernen kann.

Welche Komponenten man braucht hängt davon ab wie man letztendlich das fertige Kompilat übertragen will / kann. Wenn man so wie ich den bereits installierten Bootloader nutzen kann genügt folgende Auswahl:

Wichtig sind die Häkchen bei "32-bit MCU", "MPLAB C32 Suite" und "MPLAB Sim". Wenn ich "AN851 Bootloader" und "MPLAB ICD 3" weg gelassen habe gab es bei der Installation kryptische Fehlermeldungen.

Als nächstes muss man den MMBasic Quellcode in ein geeignetes Verzeichnis kopieren. Der Einfachheit halber habe ich alles direkt auf C: unter C:\MMBasicSource kopiert.

Dann wird es interessant. Man startet MPLAB und lädt das Projekt TFT_Maximite.mcp (zu finden unter MMBasicSource\Maximite\MPLAB\). Nachdem man sich vergewissert hat, dass unter "Configure" --> "Select Device" der richtige Prozessor (PIC32MX695F512L) eingestellt und unter "Project" --> "Build Configuration" --> "Release" ausgewählt ist kann man mit "Project" --> "Build All" den Kompiliervorgang starten.

Wenn alles erfolgreich durchgelaufen ist (dauert je nach Computer Sekunden bis Minuten) findet man unter MMBasicSource\Maximite\Output u.a. die Datei "TFT_Maximite.hex". Diese Datei ist nicht identisch mit "TFT_Maximite_44b1.hex" vom github sondern dürfte in etwa dem entsprechen, mit dem der TFT Maximite ausgeliefert wurde.

Um letzte Pannen auszuschließen kann man die frisch erzeugte hex-Datei auf den TFT Maximite laden (s.u.) und versuchen ob er damit läuft. Nicht erschrecken, das Tastaturlayout ist dann erst mal wieder auf "us" eingestellt. Sollte der Maxi nicht starten kann man trotzdem noch die letzte Version vom github "TFT_Maximite_44b1.hex") hochladen, dann läuft wieder alles.

Angeblich ist es unmöglich den TFT Maximite unter Verwendung des bootloader zu bricken (die SW so zu zerschießen, dass man gar nichts mehr mit dem Teil anfangen kann).

Quelltext anpassen und neu kompilieren

Ist man in der Lage funktionierende hex-Dateien zu erzeugen kann man sich daran machen den Quellcode anzupassen.

Touch.c und Touch.h

Carsten Meyer hat auf github eine aktuellere Version der touch-Funktionen abgelegt. Wenn man diese verwenden möchte muss man beide Dateien nach MMBasicSource/Maximite/MMSource kopieren. Da diese aber nicht mehr 100% mit den alten Funktionen kompatibel sind muss man im gleichen Verzeichnis aus noch die Datei "External.c" anpassen. Es ist eine Funktion umbenannt worden, d.h. man muss "item_init" durch "item_active" erstzen.

IOPorts - TFT_Maximite.h

Um die Anschlüsse PL7 und PL9 nutzen zu können muss man diese Datei (zu finden unter MMBasicSource/Maximite/MMSource/IOPorts) anpassen.

Als erstes sollte man im Kopf den Dateinamen ändern:

Das ist zwar nicht zwingend notwendig schadet aber in keinem Fall.

Dann muss weiter unten eine Zeile eingefügt werden:

Macht man das nicht kann man später Pin5 und Pin6 nicht verwenden.

Um mehr als 20 I/O-Pins verwenden zu können muss die entsprechende Variable geändert werden:

Grundsätzlich könnte man bis zu 40 Pins verwenden. Da die analogen Pins auf dem TFT Maximite aber überhaupt nicht verwendet werden kann man sich die letzten 6 Pins sparen.

Jetzt muss man nur noch die Pins selbst definieren:

Diese Zeilen kann man aus IOPorts – ColourMM.h kopieren. Damit ist auch festgelegt, wie man die entsprechenden Pins verwenden kann.

Hat mal alle Änderungen gespeichert kann man mit "Project" --> "Make" (oder wer auf Nummer sicher gehen will mit "Build All" eine hex-Datei erzeugen.

hochladen und testen

Wie man auf einen TFT Maximite eine neue Firmware lädt findet man auf der Seite des Color Maximite:
http://geoffg.net/maximite.html

Unter der Überschift "MMBasic Updates" gibt es ein zip-file mit der aktuellst Firmware. Darin enthalten ist ein pdf (Loading New Firmware.pdf) welches die Prozedur beschreibt und eine BootLoader.exe für Windows.

Für Linux und Macintosh gibt es zum Glück das Programm MPHidFlash welches auch in der Prozedur beschrieben wird. Das Programm kann hier herunter geladen werden:
http://code.google.com/p/mphidflash/

Der einzige Schwachpunkt ist die Abhängigkeit von der Bibliothek libhid, welche in aktuellen Distributionen nicht mehr enthalten ist. Für debian können die erforderlichen Pakete aber auf archive.debian.org herunter geladen werden:
http://archive.debian.org/debian/pool/main/libh/libhid/libhid0_0.2.15+20060325-2.2_i386.deb
Wer das Programm selbst kompilieren will benötigt noch das zugehörige dev-Paket
http://archive.debian.org/debian/pool/main/libh/libhid/libhid-dev_0.2.15+20060325-2.2_i386.deb

Unter Linux funktioniert der Firmware Upload folgendermaßen:
  • TFT Maximite einschalten solange JP1 (BOOTLOADER) gebrückt ist, das Display blinkt dann hell dunkel.
  • TFT Maximite an den PC anschließen, lsusb sollte folgendes Gerät anzeigen:
    Bus xxx Device xxx: ID 04d8:fa8d Microchip Technology, Inc.
    Befindet sich der TFT Maximite nicht im Bootloader Modus erscheint eine andere product ID:
    Bus xxx Device xxx: ID 04d8:fd52 Microchip Technology, Inc.
  • Die Übertragung der hex-datei mit folgendem Befehl starten:
    ./mphidflash -v 04d8 -p fa8d -n -w TFT_Maximite.hex
    Während der Übertragung bleibt der Bildschirm dunkel und fängt erst nach der Übertragung wieder an zu blinken.

Wenn die Fehlermeldung "Error: Device not found (is device attached and in Bootloader mode?)" erscheint, der TFT Maximite aber im Bootloader Modus ist und von lsusb angezeigt wird kann MPHidFlash nicht auf den USB-Anschluss zugreifen, dann muss das Programm mit root-Rechten ausgeführt werden:
sudo ./mphidflash -v 04d8 -p fa8d -n -w TFT_Maximite.hex

Wer dem Programm oder dem ganzen Upload-Prozess misstraut kann auch zuerst versuchen die letzte Version vom github ("TFT_Maximite_44b1.hex") hoch zu laden bevor er sich an die selbst erstellte TFT_Maximite.hex wagt.

Nach Upload und erfolgreichem Neustart steht der TFT Maximite erst mal wieder auf us-Tastaturlayout. Außerdem muss evtl. das Display-Poti nachgestellt werden und eine touch-Kalibrierung durchgeführt werden.

Donnerstag, 27. Februar 2014

5. Überraschung: PL7 und PL9 lassen sich nicht ansprechen

Bei PL7 (I2C CTLAB) und PL9 (BTN) handelt es sich um Anschlüsse die nur auf dem TFT Maximite verfügbar sind.

Für was PL9 gut sein soll erschließt sich mir nicht so ganz, wozu hat denn das Teil touch-Bedienung. PL7 soll neben dem I2C-Bus auch noch 4 I/O-Leitungen und 5V bieten. Gerade diese schmale, schlanke Schnittstelle war für mich sehr attraktiv um z.B. mal schnell irgendwas über I2C anzuklemmen.

Nachdem ich auf das Gehäuse warten musste wollte ich mal eben schnell PL7 austesten. Die Frage war nur wie. Im Manual war PL7 nicht erwähnt, ebenso wenig PL9. Zu Verwendung von Letzterem gab es schon mehrere posts in unterschiedlichen Foren, allerdings alle ohne Ergebnis. Zu PL7 fand sich dagegen so gut wie nichts. Na gut, kommt ja von c't, sollte also irgendwie funktionieren. Außerdem gibt es im Zeitschriften-Artikel ein Bild, das mit an Sicherheit grenzender Wahrscheinlichkeit die Verwendung dieser Schnittstelle zeigt (c't Hardware Hacks 4/2013, Seite 119 oben rechts). Also muss es irgendwie funktionieren. Allerdings auch hier kein Ton zu dem "Wie".

Ein Blick in den Schaltplan verrät nur, dass die Leitungen PIN_D0..D3 für PL4 verwendet werden (für PL9 sind es PIN_D8..D12). Hilft erst mal nicht. Allerdings meinte ich in der MMBasic-Anleitung wäre mir irgendwo ein Pin D0 über den Weg gelaufen.

So war es dann auch. Der Arduino-Connector vom Color Maximite hat D0..D13 und A0..A5. Allerdings gibt es diesen Anschluss nicht auf dem TFT Maximite. Sehr verdächtig! Da wird doch wohl nicht einer die Pins deaktiviert haben, ...?!?!?!?!

Um das zu klären habe ich mir den MMBasic-Quellcode bestellt. Das geht sehr unkompliziert und kostenlos. Einfach das Mini-Formular auf http://www.mmbasic.com/source.html ausfüllen und ein paar Stunden später bekommt man eine e-mail mit dem Code. Warum der Code nur auf diese Art und Weise verfügbar ist erklärt Geoff auf dieser Seite.

Nach kurzer Recherche wurde ich prompt fündig: Der Color Maximite hat 40 Pins, der TFT Maximite dagegen nur 20. Zumindest laut Software.

Letzte Zweifel hat dann eine Mail von Geoff zerstreut. Ich hatte ihn gefragt, ob er davon wisse, dass Carsten Meyer einige der Arduino-Pins verwendet hat und ob es reichen würde die Variable NBRPINS von 20 auf 40 zu setzen um die Pins normal nutzen zu können. Als Antwort kam prompt, dass er davon nichts wisse. Allerdings müsse man beim neukompilieren auch noch die Tabelle PinDef[] anpassen, dann würde es aber funktionieren.

Sch...ade!!! Da gab es wohl ein Kommunikations-Problem!

Nachdem Geoff in nächster Zeit kein update von MMBasic plant und das Problem sowieso nur den TFT Maximite betrifft bleibt nur zu hoffen, dass Carsten Meyer demnächst was baut. Für die blockierende touch-Geschichte (siehe http://raketenbuggy.blogspot.com/2014/02/4-uberraschung-touch-objekte-konnen-tft.html) ist sowieso ein update fällig!

4. Überraschung: touch-Objekte können TFT Maximite blockieren

Von dieser Geschichte habe ich per Zufall von einem anderen TFT Maximite Besitzer erfahren.

Wenn man einen touch-Button berührt und nicht loslässt wird solange das komplette Programm angehalten bis man den Button wieder loslässt. Slider sind davon nicht betroffen. Eine genauere Beschreibung findet sich hier:

http://www.heise.de/forum/c-t-Hacks/Heft-Projekte/Artikelforen-Heft-4-2013/Color-Maximite-2/Touchpaneel-stoppt-Programm/posting-467608/show/

Ich hatte die Sache zwar bemerkt (z.B. in dem Demo-Programm AnInstr.bas), ihr aber keine Bedeutung geschenkt, da sie für mich nebensächlich war.

Mittwoch, 26. Februar 2014

Ein passendes Gehäuse finden


Nachdem der TFT Maximite als blanke Platine geliefert wird, stand für mich von Anfang an fest, dass das Gerät möglichst schnell in ein adäquates Gehäuse gesetzt werden muss. Nicht nur zum Schutz der Schaltung sondern auch zur besseren Handhabung.

Die erste Frage, die sich dabei stellt ist: Kunststoff oder Metall?

Ich habe mich sehr schnell für ein Metallgehäuse entschieden. Kunststoff lässt sich zwar leichter bearbeiten, verkratzt aber auch leichter. Weiterhin bietet Metall auch eine elektrische Abschirmung. Und außerdem sieht es besser aus.

Da das Gehäuse nicht wesentlich größer als der TFT Maximite sein sollte gestaltete sich die Suche entsprechend schwierig. In die enger Wahl kamen letztendlich:
  • KOH-Profilhalbschalengehäuse von fischer
  • Euroflachgehäuse EFG 1 von proMa bzw. gie-tec
Leider gab es für die von mir gewünschte Kombination von fischer-Gehäusehalbschalen keinen passenden Deckelsatz, so dass ich letztendlich das EFG 1 genommen habe.

Euro-Flachgehäuse EFG 1 von proMa bzw. gie-tec

Rückblickend war das die richtige Entscheidung, da das fischer-Gehäuse einiges dicker und damit nicht nur schwerer und klobiger sondern auch schwieriger zu bearbeiten gewesen wäre.

Dienstag, 25. Februar 2014

3. Überraschung: Pin 20 funktioniert nicht

Der TFT Maximite verfügt wie alle Maximites über 20 MMBASIC-Pins die relativ frei als Ein- und Ausgänge programmiert werden können. Will man z.B. COM2 nutzen ist Pin19 RX und Pin20 TX, zumindest in der Theorie.

RX funktionierte problemlos, aber aus TX kam nichts raus. Eine Recherche im Netz brachte es dann an den Tag: Die Leiterplatte hat einen Fehler, MMBASIC-Pin20 ist am PIC auf Pin 11 statt auf Pin 17 gelegt.

Nachdem sicher war, dass es sich dabei wirklich um einen Fehler auf der Leiterkarte handelt habe ich beschlossen das Problem mittels hardwiring zu lösen. Dazu wird die Leiterbahn unterbrochen und eine neue Verbindung zum richtigen Anschluss am PIC gelegt. Hört sich einfach an, ist ohne das richtige Werkzeug aber nur sehr schwer machbar.

Man benötigt:
  • einen SMD-Lötkolben mit dünner Spitze (Bleistiftspitze)
  • SMD-Lötzinn
  • evtl. etwas Flussmittel
  • dünnen Draht (Fädeldraht o.Ä., dünner als 0,5mm)
  • Skalpell o.Ä. zum durchtrennen der Leiterbahn
  • Pinzette mit feinen Spitzen (am besten gebogen)
  • evtl. Lupe oder Mikroskop
  • eine ruhige Hand
  • einen Whisky oder ein Bier (für hinterher)
Als erstes identifiziert man die richtige Leiterbahn und den richtigen Anschluss am PIC.

Die fehlerhafte Leiterbahn und die zugehörigen Beinchen am PIC.

Diese Leiterbahn muss nun irgendwo unterbrochen (Skalpell) und mit dem richtigen Pin neu verbunden werden (Fädeldraht).

Ich habe die Bahn auf dem geraden Stück direkt nach Pin 11 unterbrochen und eine kurze Brücke zu Pin 17 gelegt.

Leiterbahn direkt nach PIC aufgetrennt und neue Brücke eingelötet

Damit funktioniert jetzt auch die TX-Leitung von COM2 bzw. Pin20.

Zum Wohl!

Samstag, 15. Februar 2014

2. Überraschung: USB-Verbindung funktioniert nicht

Der TFT Maximite lässt sich auch über eine serielle Konsole steuern. Wie das unter windows und mac osx geht dazu findet sich haufenweise Material im Netz. Zu linux hatte ich damals nichts gefunden. Und warum? Weil's so einfach ist??? Ja, das ist wirklich so!!! Auch ältere Distributionen haben bereits alles Nötige an Board.

Der kernel muss den Treiber ''cdc-acm'' als Modul oder statisch enthalten (ist bei praktisch allen mitgelieferten Standard-kernels der Fall). Ansonsten braucht man noch ein Terminal-Programm seiner Wahl. Ich verwende ''minicom''.

Alles was man dann tun muss ist den Maximite mit einem USB-Kabel mit dem Rechner zu verbinden. Es wird ein neues Gerät erzeugt, ''/dev/ttyACM0''. Bevor man versucht darauf zuzugreifen sollte man sicherstellen, dass man über die entsprechenden Rechte (lesen und schreiben) verfügt, sprich, zur richtigen Gruppe gehört. Dann startet man das Terminal-Programm, wählt als Anschluss ''/dev/ttyACM0'' und als Parameter 115200 Baud, 8 Bits, keine Parity und 1 Stopbit. Für minicom reicht z.B. folgende Zeile:

minicom -D /dev/ttyACM0 -b 115200

Und los geht’s. Zumindest in der Theorie. Der Kernel hat zwar das device angelegt, ich hatte auch die richtigen Rechte, bekam aber trotzdem keine Verbindung mit dem Maximite.

Meine erste Befürchtung, der VIA-Chipsatz meines Rechners, der mich schon die letzten 10 Jahre ständig geärgert hat (ich sage nur sandisk USB-Stick), würde auch diesmal für Datenmüll sorgen hat sich zum Glück nicht bestätigt.

Es liegt an der Spannungsversorgung. Wenn am Maximite zu wenig Spannung ankommt stellt sich der PIC in Sachen Datenübertagung taub. Ansonsten funktioniert er aber tadellos. Da der TFT Maximite wegen seines Displays relativ viel Strom zieht (im Durchschnitt knapp 300 mA) reicht es wenn:
  • der Rechner zu wenig Strom liefert
  • das USB-Kabel zu schlecht ist
  • das USB-Kabel zu lang / verlängert ist
Dadurch kann die Spannung am Maximite soweit absinken, dass es zu Problemen kommt. Man kann das auch leicht nachmessen, z.B. an PL6 Pin 23. Wenn dort statt 5V weniger als 4,6V anliegen gibt’s Probleme. Dann hat man folgende Möglichkeiten:
  • anderen USB Port am Rechner verwenden (hilft selten)
  • anderes / kürzeres / besseres USB-Kabel verwenden (hilft meistens)
  • aktiven (!) USB-Hub dazwischen schalten (muss nicht zwangsläufig helfen, kann auch zu Timing-Probelmen führen)
  • 5V über PL4 einspeisen (hilft immer, vorausgesetzt die Spannungsquelle kann genügend Strom liefern)

Dienstag, 11. Februar 2014

Erstinbetriebnahme

Erstinbetriebnahme, das hört sich recht sperrig an (schönes Beamtendeutsch) ist aber notwendig, sonst funktioniert später nicht alles so wie es soll.

Die Reihenfolge der einzelnen Schritte ist wichtig! Die Kalibrierung des Touchscreens z.B. funktioniert nur nachdem man Datum und Uhrzeit gesetzt hat.

  1. TFT Maximite soweit wie gewünscht zusammen löten.
  2. Batterie einlegen.
  3. PS2-Tastatur einstecken.
  4. USB-Kabel einstecken oder Strom an PL4 anlegen.
  5. Startbildschirm erscheint.
  6. Datum und Uhrzeit setzen:
    DATE$="TT-MM-JJJJ"
    TIME$="hh:mm:ss"
  7. Tastatur auf deutsches Layout stellen:
    config keyboard gr
  8. Touchscreen kalibrieren
    touch calibrate
  9. fertig
PS: Ja, das Datum wird tatsächlich im Format "TT-MM-JJJJ" eingegeben, auch wenn im Netz genügend andere Varianten kursieren. Wer's nicht glaubt kann gerne mal die Uhrzeit auf "23:59:50" o.Ä. setzen und schauen welche Zahl sich ändert.

Sonntag, 9. Februar 2014

Der Bausatz : Zusammenbau und die 1. Überraschung

„Was kommt denn jetzt wohin?“ Dies Frage bleibt erst mal leider genauso unbeantwortet wie: „Was davon braucht man wirklich, was kann später nachrüsten und was kann man sich getrost sparen?“

Nachdem sich weder bei segor noch bei c't (!) noch sonst irgendwo was brauchbares findet (Geoff verweist in Sachen TFT Maximite auch nur auf die c't-Seiten weil er das Teil nicht verbrochen hat) habe ich mir die Informationen selbst zusammen geklaubt. Für Ungeduldige gibt’s unter der Tabelle die Zusammenfassung.

TeilBeschreibungPlatzStatusBemerkung
B1Batteriehalterrechts obennotwendigfür die RTC
BZ1Buzzer / Summerunter Batteriehaltersehr nützlichweglassen spart keinen Platz
XTAL232,768 kHz Quarzganz unten rechtsabsolut notwendigohne Quarz funktioniert die RTC nicht
LED1SD-Zugriff, rotganz unten linksnützlichmuss Richtung Display schauen
LED2Power, grünganz unten linksnützlichmuss Richtung Display schauen
JP1Boot Loaderneben PL10sehr nützlich-
PL1PS/2 Tastaturlinks obensehr nützlichkann man weglassen, wenn man den Maxi nur über USB ansteuern will
PL2USBlinks Mittesehr nützlichspätestens zum Firmwareupdate notwendig
PL3SD-Kartelinks untensehr nützlich-
PL45V Poweroben linkssehr nützlichkann man weglassen wenn man den Maxi nur über USB betreibt
PL5ICSPüber Potientbehrlichbraucht man eigentlich nur wenn man den bootloader geschrottet hat
PL6MMBASIC Pinsoben Mittesehr nützlich-
PL7CTLABunten Mittenützlich-
PL8PWM outneben PL6nützlich-
PL9Switchesneben BuzzerentbehrlichWie spricht man die überhaupt an?
PL10Displayüber Quarzschon vorhanden-
PL11Resetneben PL4nützlich-
PL12Unbekanntunter SD-KarteentbehrlichWas ist das für ein Stecker?
JP1Boot Loaderneben PL10sehr nützlichspätestens zum Firmwareupdate


Minimalstbestückung A: Quarz, Batterie, Poti, PS/2, und PL4
Minimalstbestückung B: Quarz, Batterie, Poti, und USB

Minimalbestückung: Quarz, Batterie, Poti, Buzzer, PL1, PL2, PL3, PL4, PL6

Normalbestückung: Quarz, Batterie, Poti, Buzzer, LED1, LED2 PL1, PL2, PL3, PL4, PL6, PL7, PL8, PL11, JP1

Ich habe aktuell den Stand "Minimalbestückung"

1. Überraschung: Was bitte ist PL12?

Dieser Anschluss befindet sich direkt unter dem SD-Karten-Slot und ist nach dessen Auflöten nicht mehr zugänglich. Und wieso taucht er weder im Schaltplan noch im Bestückungsplan auf, dafür aber auf dem Silk-Layer? Für was ist der gut? Braucht man den?

Verfolgt man die Leiterbahnen stellt man fest, dass auf dem Anschluss die Leitungen von PS/2, USB und SD-Slot liegen.


Damit könnte man sich also die 3 Buchsen auf der Platine sparen und sie per Kabel an eine günstigere Stelle legen.

Schade, dass so etwas nicht offiziell dokumentiert ist.

Der Bausatz : bestellen, warten, auspacken

Die Bestellung bei segor verlief soweit ganz unspektakulär und problemlos, per Vorkasse und DHL-Paket. Nach ein paar Tagen war dann das Paket da.

Offensichtlich hat DHL bzw. die Post immer noch Probleme mit Sendungen, die die nicht der Standardgröße entsprechen:


Zum Glück ist segor nicht erst seit gestern im Geschäft und kennt seine Pappenheimer. Das Paket war locker gepackt und allein die halbe Länge wurde für Polsterung genutzt. Weder der TFT Maximite noch der Rest der Bestellung (ich hatte noch ein bisschen Kleinkram mitbestellt) waren beschädigt.

So, was bekommt man denn jetzt genau, wenn man sich den TFT Maximite 5“ Touch bestellt?

 Eine Tüte mit einem rosa Päckchen und einer Schachtel voll Bauteile.

In der Schachtel findet man alle bedrahteten Bauteile (die SMD-Bauteile sind alle schon aufgelötet), Steckverbinder und die passenden Anschlusskabel.

Gerade das Beilegen der passenden Anschlusskabel ist sehr löblich da man sonst immer Probleme hat die exakt passenden „Molex-Stecker“ (Unwort des Jahrhunderts!!!) zu bekommen und stattdessen irgendwas hinfrickeln muss.
Ebenso genial ist die Idee, das Display nicht mit Doppelseitigem-Klebeband fest mit der Platine zu verbinden sondern dafür Klett-Streifen zu verwenden, so dass man nachträglich noch problemlos an die Platine kommt um z.B. einen Anschluss nachzurüsten.

In dem rosa Päckchen befinden sich das Display ...

… und die Platine.


Ein Gehäuse gibt es nicht.

Samstag, 8. Februar 2014

Wie es dazu kam

Als ich in der letzten c't Hardware Hacks (4/2013) über den BASIC-Touchpanel-Computer gestolpert bin dachte ich zuerst, das wäre ein Scherz. BASIC und Touch, das passte irgendwie so überhaupt nicht zusammen. Andererseits gab es früher ja den Lichtgriffel oder lightpen als eines der ersten Eingabegeräte überhaupt (noch lange vor der Maus). Das hat aus einem Röhrenmonitor ja so eine Art touchdisplay gemacht. Hm, das könnte ja doch ernst gemeint sein.

Als ich dann beim überfliegen des Artikels aber was von PIC-Prozessor und 3% Rechenzeit während Grafikausgabe gesehen habe war für mich alles klar: Wenn so ein schwachbrüstiger PIC auch noch ein Grafikdisplay steuern muss bleibt noch 3% Rechenzeit übrig, ganz wie früher. Hinzu kommt, dass BASIC von Haus aus sehr langsam ist, weil es als Interpreter arbeitet. Also kann man das Teil vergessen, oder?

Nein kann man nicht. Bei genauerem Lesen stellte ich fest, dass der PIC für die Grafikausgabe nur 3% Rechenzeit braucht. Die restlichen 97% bleiben für das Programm übrig! Und den Interpreter hatte der Autor selbst geschrieben. Langsam begann mich die Sache doch zu interessieren.

Was soll ich sagen. Nachdem ich den Artikel komplett gelesen und noch etwas im Netz recherchiert hatte stand fest: Das Teil ist für mich die ideale Alternative zu einem Arduino weil es gleich ein Display (sogar in Farbe!!!) mitbringt und einfach zu programmieren ist. Hinzu kam, dass es als Bausatz angeboten werden sollte, was einem die u.U. schwierige und langwierige Bauteilbeschaffung ersparen aber trotzdem den Bastelspaß erhalten würde.

TFT Maximite - Zusammenbau-Doku

Nachdem es im Netz keine vernünftige Anleitung zum Zusammenbau des TFT Maximite gibt (auch der Artikel in der c't Hardware Hacks ist in der Richtung sehr sparsam) habe ich mich entschlossen meinen Zusammenbau zu dokumentieren und dem Rest der Welt zur Verfügung zu stellen.

Der geübte Bastler mag darüber lachen und es als unnötig abtun. So schwer ist der Zusammenbau schließlich nicht. Aber wenn ich mich in die Rolle eines Neueinsteigers mit wenig Erfahrung hineindenke käme ich mir ganz schön alleine gelassen vor. Und außerdem, wir haben alle klein und waren froh für jeden noch so kleinen hilfreichen Tipp.