Tabla de contenido:

Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic: 3 pasos
Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic: 3 pasos

Video: Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic: 3 pasos

Video: Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic: 3 pasos
Video: Pepe Quintana - Ella Y Yo Remix FT Farruko, Ozuna, Arcangel, Anuel AA, Ñengo, Kevin Roldan, Y Mas 2024, Mes de julio
Anonim
Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic
Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic
Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic
Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic
Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic
Texto a voz Haga clic en un UChip con alimentación ARMbasic y otros SBC con alimentación ARMbasic

Intro: Buen día. Mi nombre es Tod. Soy un profesional aeroespacial y de defensa que también es un poco friki de corazón.

Inspiración: Proveniente de la era de BBS de acceso telefónico, microcontroladores de 8 bits, computadoras personales Kaypro / Commodore / Tandy / TI-994A, cuando las tiendas de Radio Shack eran abundantes (los buenos tiempos), uno de mis primeros proyectos integrados de pasatiempos fue trabajando con un kit de capacitación de microprocesador Motorola MEK6800D2, que había comprado mientras trabajaba como cooperativa en los laboratorios de MSU EE (después de completar mi capacitación de VoTech en electrónica de la escuela secundaria en Southern Lower MI). Ese proyecto involucró mi prototipo del PROCESADOR DE VOZ NARRATOR ™ Radio Shack SP0256 en el MEK6800D2, conectándolo y programando el 6800 para que emita pseudo-habla (aquellos que han trabajado con el HW basado en SP0256 saben exactamente a qué me refiero). Funcionó de maravilla y progresé por el camino de cortarme los dientes en microcontroladores integrados y ensamblaje. Después de la escuela secundaria, la vida se interpuso en el camino, el ejército, la guerra, los cónyuges, los hijos, el ingreso al sector civil, el inicio de una carrera, etc., todo contribuyó a que dejara de lado mi pasatiempo a favor de perseguir los esfuerzos de la vida en una cultura occidental (aquí en los EE. UU.).

Salte hacia adelante 20 años, llegando al momento inevitable en el que los niños están madurando hasta el punto en que la Novia y yo somos distracciones, las facturas de la hipoteca / vehículos / universidad se están pagando lentamente, las ganancias mejoran con los avances y yo tengo suficiente dinero disponible. En el momento en que pude empezar a volver a centrarme en algunos esfuerzos egoístas, retomé el trabajo de electrónica de pasatiempo. De todos modos, dado mi linaje e historia, busqué y encontré un entorno de desarrollo con el que me vinculé rápidamente, ARMbasic, BASIC fue mi primer amor y esto encajaba no solo en readaptarme a la programación, sino también en trabajar con hardware que era mucho más más poderoso que con lo que había comenzado décadas antes, y así comenzó el viaje.

Esto fue alrededor de 2006-2009. Luego, por razones que escapan a nuestro control, la vida cambió (como lo había hecho para muchos durante esos años). Pasatiempos archivados: enfóquese en una nueva carrera, recuperándose de las luchas financieras (estaba fuertemente investido en el dominio inmobiliario y lo tomamos en corto y los jóvenes estaban llegando al punto en que la financiación universitaria era un imperativo). Básicamente, los problemas de la vida y del primer mundo (estamos realmente bendecidos, considerando los desafíos y las fatigas con los que las personas en otras partes del mundo luchan a diario) se manifestaron y … la afición quedó archivada. Lo retomé brevemente en 2011-2012-ish y luego me encontré con otro cambio de carrera: el pasatiempo se archivó una vez más.

Avance rápido otra década y … estoy de regreso y, Dios mío, con suerte, mientras dure (hasta que tome esa proverbial siesta de tierra y empiece a empujar margaritas desde abajo). Aqui estamos. Wow - Arduino (¿cuál es esa palabra extraña?) Había irrumpido en el mercado. ¿Creadores? ¡¿Qué diablos son?! …:) Mis amigos de Coridium Corp (propietarios de placas de desarrollo de microcontroladores basados en ARMbasic y ARM) se habían mantenido firmes y fieles. Ahora, en lugar de la serie de controladores LPC2xxx, existe esta nueva (para mí) entidad de ARM, y Cortex M0 / M3 / M4, y Arduino, y… ¡GUAU! La cultura se ha transformado bastante y de muchas maneras excelentes. Los píos están colaborando de forma remota y, de hecho, a nivel mundial. El hardware se está volviendo increíblemente rápido y poderoso, y ARMbasic, que ha madurado y se ha endurecido firmemente con el empleo en muchas familias diferentes de silicio, es algo hermoso para mí y para muchos otros.

Entonces, para hacer una historia corta muy larga, recientemente me topé con el clic de TTS de MikroElectronika y sentí una oleada de nostalgia fluir sobre mí. Ordené uno en cuestión de minutos y estuvo ansioso durante los días siguientes hasta que llegó la unidad. De ahí comienza la historia …

Suministros

  • 1 ea MikroElectronika Text To Speech Click, contiene la Epson S1V30120 - el TTS ASIC del módulo
  • 1 ea ARMbasic Target, cumpliendo el rol de TTS Host
  • 1 ea Uno Breakout Shield (o una placa de prototipos, o …)
  • 1 cada altavoz, o un juego de altavoces, sugieren altavoces de escritorio para PC con enchufe TRS de 1/8 ".
  • 1 lote de productos de prototipos de alambre, soldadura, fundente, mecha, soldador, cabezales, enchufes IC y similares.
  • 1 lote Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope, etc. - para nuevos MCU de host TTS

Paso 1: interconexiones de hardware

Interconexiones de hardware
Interconexiones de hardware
Interconexiones de hardware
Interconexiones de hardware
Interconexiones de hardware
Interconexiones de hardware

Para replicar esto usando un objetivo ARMbasic en un factor de forma Uno, o con un Itaca uChip, probablemente sería mejor utilizar un escudo de prototipos, como lo he hecho en las imágenes de arriba (enlace simple de Amazon)

Algunos verán el alambre enrollado enroscado y se preguntarán por qué: el rechazo de ruido en modo común es la respuesta simple. Sí, no estamos tratando con señales balanceadas aquí, pero pensé que no podría hacer daño (?), Así que lo hice cuando estaba construyendo el tablero.

Es un diseño bastante benigno. Las impresiones se adjuntan aquí, en forma de gráfico (AutoCAD 2D es a lo que estoy más acostumbrado, después de haber trabajado con él durante décadas en mi trabajo diario, todavía me estoy cortando los dientes de KiCAD y esto fue un esfuerzo demasiado simple para justificar la curva de aprendizaje como un primer proyecto en KiCAD). De todos modos, elegí montar el zócalo de uChip directamente en el escudo para habilitar un caso de uso independiente al usar el uChip como host. Agregué un JST para alimentarlo a través de la batería, si quisiera hacerlo y, debido a que tengo algunos extras, agregué un Adafruit SWD Breakout para permitirme usar mi Segger J-Link EDU Debug Probe, si surgiera la necesidad. No fue así, pero me quedo con la cara SWD para usarla en proyectos futuros.

Almenado significa, en este contexto, limar los bordes de la PCB para que los orificios pasantes plateados se reduzcan a medios cilindros, lo que permite soldar en una PCB portadora, en este caso, la placa de protección. Elegí hacer esto porque las porciones de distribución plana del escudo no se alineaban del todo con el espacio entre las dos filas de encabezado en el SWD BOB. Rompió un archivo plano y 5 minutos de archivo y problema resuelto.

Paso 2: programación y prueba

Programación y prueba
Programación y prueba
Programación y prueba
Programación y prueba
Programación y prueba
Programación y prueba

Una vez que se construye el hardware, será necesario que suene completamente para validar que el cableado es bueno. Entonces, siempre hago una verificación de energía y tierra. Esto no solo asegura que la energía y la tierra estén donde se supone que deben estar, sino que cualquiera de las otras terminaciones que no deberían tener energía / tierra no lo tiene. No es una tarea tediosa en un proyecto pequeño como este, pero con sistemas de sistemas más grandes, si bien es un paso tedioso, es absolutamente necesario garantizar que ningún subconjunto o sistema conectado se elimine por un error tonto que podría y debería haber sido capturado. Por lo general, obtengo el mínimo de productos conectados para que se genere energía en la placa y luego verifico cada pin / terminación en busca de energía y tierra antes de enchufar subconjuntos, chips, etc., asegurándome de que la energía sea del nivel adecuado. (considerando dispositivos / IO no tolerantes a 5V, requisitos 1v8 y 3v3, etc.) y esa tierra es donde debe estar y solo donde debe estar. He sido testigo de una cascada de fallas en un avión de personas que no realizaron las comprobaciones previas a la conexión adecuadas. En un caso, sacó más de $ 100K en LRU, lo que no es un momento divertido para estar a cargo de un proyecto y hacer que se desvíe en un instante porque alguien provocó un cortocircuito en el proceso. Otra cosa de la que soy culpable es de realizar tediosas 'comprobaciones de proximidad', asegurándome de que los contactos / terminaciones no estén en cortocircuito con contactos / terminaciones adyacentes. Esto se vuelve crítico si se trata de ensamblajes coaxiales, arneses multiconductores / blindados, etc. Ok, estoy fuera de la caja de jabón …

Una vez que la seguridad está garantizada, conecte las cosas, enciéndalo y luego comience a programar el host TTS (ARMbasic Target MCU) tal como lo haría con muchos objetivos de MCU integrados. Grabé un video que muestra la programación y el uso simple del TTS Click. Puedes verlo aquí.

El código fuente de ARMbasic se puede descargar desde aquí, una publicación en el foro que tiene detalles adicionales. Coridium publicó una publicación en el blog sobre estos esfuerzos, a la que puede acceder haciendo clic aquí.

Paso 3: Modificación de la fuente para otros objetivos de ARMbasic y varias reflexiones

Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones
Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones
Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones
Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones
Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones
Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones
Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones
Modificación de la fuente para otros objetivos ARMbasic y varias reflexiones

No voy a insistir en los pasos necesarios para modificar el código fuente para que funcione con otros objetivos de ARMbasic, aparte de indicar que hablé sobre hacerlo en una gran cantidad de comentarios de código fuente allí. Tómese el tiempo para abrir el archivo tts.bas y lea acerca de los cambios necesarios si elige transferir el código a otro controlador con ARMbasic.

Se adjuntan algunas imágenes que tomé durante el ciclo de desarrollo para hacer que esto funcione.

Lecciones aprendidas:

  1. Si tiene un analizador lógico con entradas no utilizadas y tiene IO de destino adicionales que no se utilizan para el trabajo en cuestión, no tenga miedo de usar esos IO como herramientas de depuración; rociar un movimiento de IO en varios puntos del código puede ser una gran ayuda para rastrear lo que funciona y lo que no funciona como se esperaba, para identificar problemas de sincronización tontos (es decir, interrupciones que afectan las comunicaciones en serie con bits) y, en general, para obtener una mejor comprensión de sus esfuerzos en su conjunto.
  2. No todos los controladores ARM son iguales. Esto es obvio. Sin embargo, me molestó hacer el desarrollo inicial en un LPC1765 Coridium SuperPRO. En retrospectiva, lo que hizo que esta fuera una mala elección es que la implementación de este núcleo ARM permitía el acceso a la memoria no alineado con palabras. Al migrar el código C a ARMbasic, las cosas salieron bastante bien hasta que intenté usarlo con un objetivo SAMD21: se desató el infierno y las cosas se estropearon más allá de lo creíble debido al acceso no alineado al llenar búferes, manipular banderas, trabajar con la versión ARMbasic de estructuras / sindicatos que se me ocurrieron, etc. Fue una lección dolorosa. La conclusión aquí: si uno desea tener un código portátil, desarrolle el objetivo candidato más restrictivo, solo para asegurarse de que uno no se enfrente al drama al final del proyecto, cuando es probable que uno esté más emocionado de emplear los frutos de sus esfuerzos..:)
  3. Portar el código C a ARMbasic NO es imposible. Este esfuerzo fue en gran parte una gigantesca evolución de entrenamiento de portabilidad. Si uno se toma el tiempo para comparar las fuentes C originales con el código ARMbasic que diseñé, debería poder tener algunas ideas sobre cómo implementar cosas que podrían no ser parte del diseño central de ARMbasic (es decir, Estructuras).
  4. Aborde cosas como esta en partes manejables. Por defecto, soy alguien a quien le gusta ver la gratificación de forma regular. Es poco probable que un esfuerzo como estos esfuerzos de transferencia y desarrollo sea algo que se pueda lograr en una sola noche. Establezca metas realistas y trabaje en pos de las mismas, tratando de no sentirse abrumado por "el panorama general".
  5. Un analizador lógico fue crucial en este esfuerzo. Sí, tengo una unidad DS-Logic + de rango medio-bajo, pero puedo afirmar enfáticamente que una barata $ 12.50 24MHz Bandwidth LA de Amazonia hubiera sido más que suficiente. Combine eso con PulseView de Sigrok (gratis) (realiza decodificación de protocolo) y uno tendrá un sistema muy robusto que debería funcionar en una gran multitud de escenarios, como lo que traté de emprender con este proyecto. Asegúrese de obtener una unidad que tenga clips de prueba, o pida clips de prueba por separado, ya que son enormemente (cuán trumpfeldianos) beneficiosos.
  6. Una sonda lógica simple también es una herramienta muy útil. En la imagen general del espacio de trabajo, verá una sonda lógica Archer (Radio Shack) antigua en la esquina inferior derecha de la imagen. Realmente me sorprendió descubrir lo útil que es algo así a diario, incluso con un laboratorio bien equipado.

Es posible que me haya vinculado a estos anteriormente en esto, pero no puedo recordar y soy demasiado vago para mirar. Aquí hay una publicación de blog que tiene un video del módulo TTS en acción (Itaca uChip lo aloja en ese momento), y la publicación del Foro ARMbasic donde se puede descargar el código fuente portado de ARMbasic.

¡Cuídate y diviértete hackeando!

-Megahercio

Recomendado: