Inhaltsverzeichnis:

Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs - Gunook
Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs - Gunook

Video: Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs - Gunook

Video: Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs - Gunook
Video: Microcontroller-Based Hardware Design With Altium Designer - #4 Microcontroller 2024, Kann
Anonim
Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs
Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs
Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs
Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs
Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs
Text-to-Speech Klicken Sie auf einen ARMbasic Powered UChip und andere ARMbasic Powered SBCs

Einleitung: Guten Tag. Mein Name ist Tod. Ich bin ein Luft- und Raumfahrt- und Verteidigungsprofi, der im Herzen auch ein bisschen ein Geek ist.

Inspiration: Aus der Ära der DFÜ-BBS, 8-Bit-Mikrocontroller, Kaypro/Commodore/Tandy/TI-994A-PCs stammend, als es noch viele Radio Shack-Läden gab (die guten alten Tage), war eines meiner ersten Hobby-Embedded-Projekte mit einem MEK6800D2 Motorola Microprocessor Training Kit, das ich während meiner Arbeit als Co-op in den MSU EE Labs gekauft hatte (nachdem ich meine High School Electronics VoTech Ausbildung in Southern Lower MI abgeschlossen hatte). Dieses Projekt beinhaltete mein Prototyping des Radio Shack SP0256 NARRATOR™ SPEECH PROCESSOR auf dem MEK6800D2, die Verkabelung und die Programmierung des 6800, damit er Pseudo-Sprache aussendet (diejenigen, die mit der SP0256-basierten HW gearbeitet haben, wissen genau, worauf ich anspiele). Es hat wunderbar funktioniert und ich bin auf dem Weg vorangekommen, meine Zähne in eingebetteten Mikrocontrollern und in der Montage zu schneiden. Nach der High School kam mir das Leben in die Quere, Militär, Krieg, Ehepartner, Kinder, der Eintritt in den Zivilsektor, der Beginn einer Karriere usw. hier in den USA).

Springen Sie 20 Jahre vorwärts und kommen Sie zu der unvermeidlichen Zeit, in der die Kinder so weit heranreifen, dass die Braut und ich Ablenkungen sind, die Hypotheken- / Fahrzeug- / College-Rechnungen langsam abbezahlt werden, die Einnahmen mit Fortschritten besser werden und ich genug Reserve habe zu dem Punkt, an dem ich mich wieder auf einige egoistische Unternehmungen konzentrieren konnte, nahm ich wieder den Hobby-Elektronik-Gig auf. Wie auch immer, angesichts meiner Abstammung und Geschichte habe ich eine Entwicklungsumgebung gesucht und gefunden, mit der ich mich schnell verbunden habe - ARMbasic - BASIC war meine erste Liebe und dies passte nicht nur dazu, mich wieder an das Programmieren zu gewöhnen, sondern auch mit Hardware zu arbeiten, die wild mehr war kraftvoller als das, womit ich Jahrzehnte zuvor begonnen hatte, und so begann die Reise.

Das war ungefähr 2006-2009. Dann änderte sich das Leben aus Gründen, die weit außerhalb unserer Kontrolle liegen (wie bei vielen in diesen Jahren). Hobbys auf Eis gelegt - Konzentrieren Sie sich auf eine neue Karriere, erholen Sie sich von finanziellen Kämpfen (war stark im Immobilienbereich verwurzelt und wir haben es in die Shorts genommen und die Youngins kamen gerade an den Punkt, an dem die Finanzierung des Colleges ein Muss war). Grundsätzlich manifestierten sich die Probleme des Lebens und der Ersten Welt (wir sind wirklich gesegnet, wenn man die Herausforderungen und Mühen bedenkt, mit denen Menschen in anderen Teilen der Welt täglich zu kämpfen haben) und … das Hobby wurde auf Eis gelegt. Ich habe es 2011-2012 kurz wieder aufgegriffen - dann kam es zu einer weiteren beruflichen Veränderung - das Hobby wurde wieder auf Eis gelegt.

Schneller Vorlauf ein weiteres Jahrzehnt und … ich bin zurück und, Guter Gott, hoffentlich für die Dauer (bis ich dieses sprichwörtliche Schläfchen mache und anfange, Gänseblümchen von unten nach oben zu schieben). So hier sind wir. Wow - Arduino (was ist das für ein seltsames Wort?) hatte den Markt gestürmt. Macher?? Was zum Teufel sind sie?! …:) Meine Freunde von Coridium Corp (Besitzer von ARMbasic und ARM-basierten Mikrocontroller-Entwicklungsboards) waren standhaft und treu geblieben. Anstelle der LPC2xxx-Controller-Serie gibt es jetzt diese neue (für mich) Einheit von ARM und Cortex M0/M3/M4 und Arduino und … WOW! Die Kultur hat sich ziemlich gewandelt, und zwar in vielerlei Hinsicht. Peeps arbeiten aus der Ferne und tatsächlich weltweit zusammen. Hardware wird unglaublich schnell und leistungsfähig, und ARMbasic, gereift und durch den Einsatz in vielen verschiedenen Siliziumfamilien stetig gehärtet, ist für mich und viele andere eine schöne Sache.

Also, um eine kurze Geschichte sehr lang zu machen, bin ich kürzlich über den TTS-Klick von MikroElectronika gestolpert und fühlte einen Hauch von Nostalgie über mich hinwegfließen. Hatte in wenigen Minuten einen bestellt und war in den nächsten Tagen gespannt, bis das Gerät in der Hand war. Damit beginnt die Geschichte…

Lieferungen

  • 1 St. MikroElectronika Text To Speech Click, enthält den Epson S1V30120 - den TTS ASIC des Moduls
  • 1 Stück ARMbasic Target, das die Rolle des TTS-Hosts erfüllt
  • 1 Stück Uno Breakout Shield (oder Prototyping-Breadboard, oder …)
  • 1 Lautsprecher oder eine Reihe von Lautsprechern empfehlen PC-Desktop-Aktivlautsprecher mit 1/8" TRS-Stecker darauf
  • 1 Los Prototyping-Waren Draht, Lot, Flussmittel, Docht, Lötkolben, Stiftleisten, IC-Sockel und dergleichen.
  • 1 Los Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope, etc. - für neue TTS Host MCUs

Schritt 1: Hardware-Verbindungen

Hardware-Verbindungen
Hardware-Verbindungen
Hardware-Verbindungen
Hardware-Verbindungen
Hardware-Verbindungen
Hardware-Verbindungen

Um dies mit einem ARMbasic-Target in einem Uno-Formfaktor oder mit einem Itaca-uChip zu replizieren, wäre es wahrscheinlich am besten, einen Prototyping-Schild zu verwenden, wie ich es in den obigen Bildern getan habe (einfacher Amazon-Link).

Einige werden den verdrillten Drahtwickeldraht sehen und sich fragen, warum - Gleichtaktrauschunterdrückung ist die einfache Antwort. Ja, wir haben es hier nicht mit symmetrischen Signalen zu tun, aber ich dachte, es kann nicht schaden (?), also habe ich das beim Aufbau des Boards gemacht.

Es ist ein ziemlich gutartiges Design. Die Drucke sind hier in Form einer Grafik beigefügt (AutoCAD 2D ist das, was ich am meisten gewohnt bin - nachdem ich jahrzehntelang in meinem täglichen Job damit gearbeitet habe - schneide ich immer noch meine KiCAD-Zähne und das war zu einfach, um es zu tun begründen die Lernkurve als erstes Projekt in KiCAD). Wie auch immer, ich habe mich entschieden, den uChip-Sockel direkt an der Abschirmung zu montieren, um einen eigenständigen Anwendungsfall zu ermöglichen, wenn der uChip als Host verwendet wird. Ich habe ein JST hinzugefügt, um es über Batterie mit Strom zu versorgen, falls ich dies möchte, und weil ich ein paar Extras habe, habe ich ein Adafruit SWD Breakout installiert, damit ich meine Segger J-Link EDU Debug Probe verwenden kann, falls dies erforderlich ist. Hat es nicht, aber ich behalte das SWD i'face darauf für zukünftige Projekte.

Kastelliert bedeutet in diesem Zusammenhang, die Kanten der Leiterplatte so abzufeilen, dass die durchkontaktierten Löcher auf Halbzylinder reduziert wurden, was das Löten auf eine tragende Leiterplatte – in diesem Fall die Shield-Breakout-Platine – ermöglicht. Ich habe mich dafür entschieden, da die Flat-Pack-Fanout-Teile der Abschirmung nicht ganz mit dem Reihenabstand zwischen den beiden Kopfzeilen auf dem SWD BOB übereinstimmten. Brachte eine flache Akte heraus und 5 Minuten Archivierung und Problem gelöst.

Schritt 2: Programmieren und Testen

Programmieren und Testen
Programmieren und Testen
Programmieren und Testen
Programmieren und Testen
Programmieren und Testen
Programmieren und Testen

Sobald die Hardware aufgebaut ist, muss ein vollständiger Ringout durchgeführt werden, um zu überprüfen, ob die Verkabelung in Ordnung ist. Dann mache ich immer einen Power- und Grounds-Check. Dies stellt nicht nur sicher, dass Strom und Masse dort sind, wo sie sein sollen, sondern auch, dass alle anderen Anschlüsse, die dort keine Stromversorgung / Masse haben sollten, dies nicht tun. Es ist keine mühsame Aufgabe bei einem kleinen Projekt wie diesem, aber bei größeren System-of-Systemen ist es, obwohl es ein mühsamer Schritt ist, unbedingt notwendig, um sicherzustellen, dass keine Unterbaugruppen oder verbundenen Systeme durch einen dummen Fehler herausgenommen werden hätte erwischt werden können und sollen. Normalerweise lasse ich das Nötigste an Zubehör anbringen, damit Strom auf der Platine erzeugt wird, und überprüfe dann jeden Pin / Abschluss auf Strom und Masse, bevor ich Unterbaugruppen, Chips usw (unter Berücksichtigung nicht-5V-toleranter Geräte/E/A, 1v8- und 3v3-Anforderungen usw.) und dieser Boden ist dort, wo er sein muss, und nur dort, wo er sein muss. Ich habe eine Kaskade von Ausfällen in einem Flugzeug erlebt, weil Leute es versäumten, die richtigen Pre-Connect-Checks durchzuführen. In einem Fall kostete es über 100.000 US-Dollar an LRUs – keine lustige Zeit, um ein Projekt zu leiten und es augenblicklich seitwärts gehen zu lassen, weil jemand den Prozess kurzgeschlossen hat. Eine andere Sache, derer ich mich schuldig mache, ist die Durchführung mühsamer "Umgebungsüberprüfungen" - sicherzustellen, dass Kontakte/Abschlüsse nicht mit benachbarten Kontakten/Abschlüssen kurzgeschlossen werden. Dies wird kritisch, wenn es sich um Koaxialbaugruppen, mehradrige/geschirmte Kabelbäume usw. handelt. Ok, ich bin aus der Seifenkiste…

Sobald die Sicherheit gewährleistet ist, schließen Sie die Dinge an, schalten Sie sie ein und beginnen Sie dann mit der Programmierung des TTS-Hosts (ARMbasic Target MCU) wie bei vielen eingebetteten MCU-Targets. Ich habe ein Video aufgenommen, das die Programmierung und einfache Bedienung des TTS Click zeigt. Sie können es hier einsehen.

Der ARMbasic-Quellcode kann hier heruntergeladen werden - ein Forumsbeitrag mit zusätzlichen Details. Coridium hat zu diesen Bemühungen einen Blogbeitrag verfasst, zu dem Sie hier klicken können.

Schritt 3: Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen

Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen
Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen
Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen
Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen
Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen
Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen
Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen
Ändern der Quelle für andere ARMbasic-Ziele und verschiedene Überlegungen

Ich werde Sie nicht mit den Schritten belästigen, die erforderlich sind, um den Quellcode so zu ändern, dass er mit anderen ARMbasic-Zielen funktioniert, außer dass ich in einer Fülle von Quellcode-Kommentaren darin herumschwebe. Bitte nehmen Sie sich die Zeit, die Datei tts.bas zu knacken und lesen Sie, welche Änderungen erforderlich sind, wenn Sie den Code auf einen anderen ARMbasic-basierten Controller portieren möchten.

Im Anhang sind einige Bilder, die ich während des Entwicklungszyklus aufgenommen habe, um dies zum Laufen zu bringen.

Gewonnene Erkenntnisse:

  1. Wenn Sie einen Logikanalysator mit ungenutzten Eingängen haben und zusätzliche Ziel-IOs haben, die nicht für die anstehende Arbeit verwendet werden, haben Sie keine Angst, diese IOs als Debugging-Tools zu verwenden eine große Hilfe, um herauszufinden, was wie erwartet funktioniert und was nicht, um alberne Timing-Probleme zu identifizieren (zB Interrupts, die Bit-Banged-Seriell-Kommunikation betreffen) und um insgesamt ein besseres Verständnis Ihrer Bemühungen als Ganzes zu erlangen.
  2. Nicht alle ARM-Controller sind gleich. Das ist offensichtlich. Ich habe jedoch etwas bekommen, indem ich die erste Entwicklung auf einem LPC1765 Coridium SuperPRO durchgeführt habe. Was dies im Nachhinein zu einer schlechten Wahl machte, war, dass die Implementierung dieses ARM-Kerns einen nicht wortausgerichteten Zugriff auf den Speicher ermöglichte. Bei der Portierung des C-Codes auf ARMbasic lief alles ziemlich reibungslos, bis ich versuchte, es mit einem SAMD21-Target zu verwenden - die Hölle brach los und die Dinge wurden unglaublich durch nicht ausgerichtete Zugriffe beim Füllen von Puffern, Manipulieren von Flags, Arbeiten mit der ARMbasic-Version gesperrt von Strukturen/Gewerkschaften, die ich mir ausgedacht habe usw. Es war eine schmerzhafte Lektion. Das Mitnehmen hier: Wenn man tragbaren Code haben möchte, entwickelt die Entwicklung auf dem restriktivsten Kandidatenziel, nur um sicherzustellen, dass man am Ende des Projekts nicht mit einem Drama konfrontiert wird, wenn man wahrscheinlich am meisten begeistert ist, die Früchte von. zu nutzen ihre Anstrengungen..:)
  3. Eine Portierung von C-Code auf ARMbasic ist NICHT unmöglich. Diese Anstrengung war im Wesentlichen eine gigantische Entwicklung des Portierungstrainings. Wenn man sich die Zeit nimmt, die ursprünglichen C-Quellen mit dem von mir erstellten ARMbasic-Code zu vergleichen, sollte man in der Lage sein, einige Ideen zu entwickeln, wie man Dinge implementieren kann, die möglicherweise nicht Teil des Kerndesigns von ARMbasic sind (z. B. Strukturen).
  4. Gehen Sie solche Dinge in überschaubaren Brocken an. Standardmäßig bin ich jemand, der regelmäßig Befriedigungen sehen möchte. Ein Unterfangen wie diese Portierungs- und Entwicklungsbemühungen ist wahrscheinlich nicht etwas, das in einer einzigen Nacht erreicht werden kann. Setzen Sie sich realistische Ziele und arbeiten Sie darauf hin und versuchen Sie, sich nicht vom „großen Bild“überwältigen zu lassen.
  5. Ein Logic Analyzer war dabei entscheidend. Ja, ich habe eine DS-Logic+-Einheit der unteren Mittelklasse, aber ich kann mit Nachdruck sagen, dass eine billige 24-MHz-Bandbreite LA für 12,50 US-Dollar von Amazonia mehr als ausgereicht hätte. Kombinieren Sie das mit Sigroks PulseView (kostenlos) (führt Protokolldecodierung durch) und Sie erhalten ein sehr robustes System, das in einer Vielzahl von Szenarien funktionieren sollte, wie ich es mit diesem Projekt versucht habe. Stellen Sie sicher, dass Sie ein Gerät mit Testclips kaufen, oder bestellen Sie Testclips separat, da sie (wie Trumpfeldian) enorm von Vorteil sind.
  6. Ein einfacher Logiktastkopf ist ebenfalls ein sehr nützliches Werkzeug. Auf dem Übersichtsbild des Arbeitsbereichs sehen Sie in der unteren rechten Ecke des Bildes eine alte Archer (Radio Shack) Logiksonde. Ich war wirklich überrascht, wie nützlich so etwas im Alltag ist, selbst mit einem gut ausgestatteten Labor.

Ich habe diese vielleicht früher verlinkt, aber ich kann mich nicht erinnern und bin zu faul, um zu schauen. Hier ist ein Blog-Beitrag, der ein Video des TTS-Moduls in Aktion zeigt (Itaca uChip hostet es zu dieser Zeit) und der ARMbasic-Forum-Beitrag, in dem man den portierten ARMbasic-Quellcode herunterladen kann.

Pass auf dich auf und viel Spaß beim hacken!

-MHz

Empfohlen: