Índice:

Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic: 3 etapas
Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic: 3 etapas

Vídeo: Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic: 3 etapas

Vídeo: Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic: 3 etapas
Vídeo: Como Criar Seu Dropshipping e Começar a Vender Online! 2024, Novembro
Anonim
Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic
Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic
Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic
Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic
Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic
Texto para fala, clique em um UChip com tecnologia ARMbasic e outros SBCs com tecnologia ARMbasic

Introdução: Bom dia. Meu nome é Tod. Eu sou um profissional aeroespacial e de defesa que também é um pouco geek no coração.

Inspiração: Vindos da era do BBS discado, microcontroladores de 8 bits, computadores pessoais Kaypro / Commodore / Tandy / TI-994A, quando as lojas da Radio Shack eram abundantes (os bons tempos antigos), um dos meus primeiros projetos incorporados de hobby foi trabalhando com um kit de treinamento de microprocessador da Motorola MEK6800D2, que eu comprei enquanto trabalhava como co-op nos laboratórios MSU EE (depois de concluir meu treinamento High School Electronics VoTech em Southern Lower MI). Esse projeto envolveu a minha prototipagem do PROCESSADOR DE DISCURSO NARRATOR ™ Radio Shack SP0256 no MEK6800D2, conectando-o e programando o 6800 para fazê-lo emitir pseudo-fala (aqueles que trabalharam com o HW baseado em SP0256 sabem exatamente a que estou aludindo) Funcionou maravilhosamente bem e eu progredi no caminho de cortar meus dentes em microcontroladores embutidos e montagem. Depois do ensino médio, a vida atrapalhou, militar, guerra, cônjuges, filhos, entrar no setor civil, começar uma carreira, etc., tudo somado ao meu engavetamento meu hobby em favor de seguir os empreendimentos da vida em uma cultura ocidental (aqui nos EUA).

Avance 20 anos, chegando ao tempo inevitável em que as crianças estão amadurecendo a ponto de a Noiva e eu sermos distrações, as contas de hipotecas / veículos / faculdade estão sendo pagas lentamente, os ganhos melhorando com os avanços e eu tendo o suficiente de sobra Chegando a um ponto em que pudesse começar a me concentrar em alguns empreendimentos egoístas, voltei ao trabalho de eletrônica de passatempo. De qualquer forma, dada minha linhagem e história, eu procurei e encontrei um ambiente de desenvolvimento com o qual eu rapidamente me vinculei - ARMbasic - BASIC foi meu primeiro amor e isso se encaixou na conta de não apenas reajustar-me à programação, mas trabalhar com hardware que era muito mais poderoso do que o que eu havia começado décadas antes, e assim a jornada começou.

Isso foi por volta de 2006-2009. Então, por razões muito além do nosso controle, a vida mudou (como aconteceu com muitos durante aqueles anos). Hobbies engavetados - foco em uma nova carreira, se recuperando de dificuldades financeiras (estava fortemente investido no domínio imobiliário e pegamos no short e os jovens estavam chegando ao ponto em que o financiamento da faculdade era um imperativo). Basicamente, os problemas da Vida e do Primeiro Mundo (nós somos realmente abençoados, considerando os desafios e labutas que as pessoas em outras partes do mundo lutam diariamente) se manifestaram e … o hobby foi arquivado. Retomei brevemente sobre isso em 2011-2012-ish, em seguida, encontrei outra mudança de carreira - hobby engavetado mais uma vez.

Avance mais uma década e … estou de volta e, bom Deus, espero que por enquanto (até eu tirar aquela soneca suja proverbial e começar a empurrar margaridas para cima por baixo). Então aqui estamos nós. Uau - Arduino (que palavra esquisita é essa?) Invadiu o mercado. Makers ?? O que diabos são eles?! …:) Meus amigos da Coridium Corp (proprietários de placas de desenvolvimento de microcontroladores baseados em ARMbasic e ARM) permaneceram firmes e fiéis. Agora, em vez da série de controladores LPC2xxx, existe esta nova (para mim) entidade de ARM e Cortex M0 / M3 / M4 e Arduino e … WOW! A cultura mudou bastante, e de muitas maneiras excelentes. Peeps estão colaborando remotamente e, de fato, globalmente. O hardware está ficando incrivelmente rápido e poderoso, e o ARMbasic, tendo amadurecido e firmemente endurecido com o emprego em muitas famílias diferentes de silício, é uma coisa linda para mim e para muitos outros.

Então, fazendo um conto muito longo, recentemente me deparei com o clique TTS da MikroElectronika e senti uma onda de nostalgia fluir sobre mim. Recebeu um pedido em questão de minutos e ficou ansioso nos dias seguintes até que a unidade chegasse em mãos. Daí começa a história …

Suprimentos

  • 1 ea MikroElectronika Text To Speech Click, contém o Epson S1V30120 - o módulo TTS ASIC
  • 1 e um ARMbasic Target, cumprindo o papel de TTS Host
  • 1 ea Uno Breakout Shield (ou prototipagem de tábua de pão, ou …)
  • 1 alto-falante cada ou um conjunto de alto-falantes sugere alto-falantes com alimentação de desktop para PC com plugue TRS de 1/8 "nele
  • 1 lote de prototipagem wares wire, solda, flux, wick, soldering iron, headers, IC sockets e similares.
  • 1 lote Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope, etc. - para novos TTS Host MCUs

Etapa 1: interconexões de hardware

Interconexões de hardware
Interconexões de hardware
Interconexões de hardware
Interconexões de hardware
Interconexões de hardware
Interconexões de hardware

Para replicar isso usando um alvo ARMbasic em um fator de forma Uno, ou com um uChip Itaca, provavelmente seria melhor usar um escudo de prototipagem, como fiz nas fotos acima (link amazon simples)

Alguns verão o fio entrelaçado e se perguntarão por quê - a rejeição de ruído de modo comum é a resposta simples. Sim, não estamos lidando com sinais equilibrados aqui, mas achei que não poderia machucar (?), Então fiz isso quando estava fazendo a construção da placa.

É um design bastante benigno. As estampas estão anexas a este documento, na forma de um gráfico (AutoCAD 2D é o que estou mais acostumado - já trabalhei com ele por décadas no meu trabalho diário - ainda estou cortando meus dentes KiCAD e este foi um esforço muito simples para justificar a curva de aprendizado como um primeiro projeto no KiCAD). De qualquer forma, optei por montar o soquete do uChip diretamente no escudo para permitir um caso de uso autônomo ao usar o uChip como host. Eu adicionei um JST para alimentá-lo por bateria, caso deseje fazê-lo e, como tenho alguns extras, acastelado um Breakout SWD da Adafruit para me permitir usar minha sonda de depuração Segger J-Link EDU, se necessário. Não funcionou, mas estou mantendo o SWD que está em frente para usar em projetos futuros.

Castrado significa, neste contexto, limar as bordas do PCB de modo que os orifícios passantes laminados fossem reduzidos a meio-cilindros, permitindo a soldagem em um PCB de transporte - neste caso, a placa de quebra de blindagem. Decidi fazer isso porque as porções de fanout flat-pack do escudo não se alinhavam com o espaçamento entre as duas fileiras de cabeçalho no SWD BOB. Quebrou um arquivo simples e 5 minutos de arquivamento e problema resolvido.

Etapa 2: Programação e teste

Programação e Teste
Programação e Teste
Programação e Teste
Programação e Teste
Programação e Teste
Programação e Teste

Depois que o hardware estiver montado, será necessário um toque total para validar se a fiação está boa. Então, eu sempre faço uma verificação de energia e terreno. Isso não apenas garante que a alimentação e o aterramento estejam onde deveriam estar, mas que qualquer uma das outras terminações que não deveriam ter alimentação / aterramento não estejam. Não é uma tarefa tediosa em um projeto pequeno como este, mas com sistemas de sistemas maiores, embora seja uma etapa tediosa, é absolutamente necessário para garantir que nenhum subconjunto ou sistema conectado seja removido por um erro bobo de que poderia e deveria ter sido capturado. Normalmente, eu coloco o mínimo necessário para que a energia seja gerada na placa e, em seguida, verifico cada pino / terminação quanto à energia e aterramento antes de conectar subconjuntos, chips, etc., certificando-se de que a energia está no nível adequado (considerando dispositivos / IO não tolerantes a 5 V, requisitos 1v8 e 3v3, etc.) e esse aterramento está onde precisa estar e apenas onde precisa estar. Testemunhei uma cascata de falhas em uma aeronave, causadas por pessoas que não fizeram as verificações de pré-conexão adequadas. Em um caso, custou mais de US $ 100 mil em LRUs - o que não era um momento divertido para ficar no comando de um projeto e deixá-lo ir para o lado em um instante porque alguém deu um curto-circuito no processo. Outra coisa de que sou culpado é fazer tediosas 'verificações de vizinhança' - certificando-se de que os contatos / terminações não estejam em curto com os contatos / terminações adjacentes. Isso se torna crítico se alguém está lidando com montagens coaxiais, cabos multicondutores / blindados, etc. Ok, estou fora da caixa de sabão …

Uma vez que a segurança esteja garantida, conecte as coisas, ligue-o e então comece a programar o Host TTS (ARMbasic Target MCU) da mesma forma que faria com muitos alvos MCU incorporados. Gravei um vídeo que mostra a programação e o uso simples do TTS Click. Você pode ver aqui.

O código-fonte do ARMbasic pode ser baixado aqui - uma postagem do fórum com detalhes adicionais. A Coridium postou no blog sobre esses esforços, que você pode acessar clicando aqui.

Etapa 3: Modificando a fonte para outros alvos do ARMbasic e várias reflexões

Modificando a fonte para outros alvos do ARMbasic e várias reflexões
Modificando a fonte para outros alvos do ARMbasic e várias reflexões
Modificando a fonte para outros alvos do ARMbasic e várias reflexões
Modificando a fonte para outros alvos do ARMbasic e várias reflexões
Modificando a fonte para outros alvos do ARMbasic e várias reflexões
Modificando a fonte para outros alvos do ARMbasic e várias reflexões
Modificando a fonte para outros alvos do ARMbasic e várias reflexões
Modificando a fonte para outros alvos do ARMbasic e várias reflexões

Não vou insistir com você sobre as etapas necessárias para modificar o código-fonte para funcionar com outros destinos do ARMbasic, a não ser para indicar que estou falando sobre isso em uma abundância de comentários de código-fonte nele. Por favor, reserve um tempo para abrir o arquivo tts.bas e leia sobre quais mudanças são necessárias se você decidir portar o código para outro controlador com ARMbasic.

Em anexo, estão algumas imagens que tirei durante o ciclo de desenvolvimento para fazer isso funcionar.

Lições aprendidas:

  1. Se você tiver um Logic Analyzer com entradas não utilizadas e tiver IOs de destino extras não sendo usados para o trabalho em questão, não tenha medo de usar esses IOs como ferramentas de depuração - espalhar um balanço de IO em vários pontos do código pode ser uma grande ajuda para rastrear o que está ou não funcionando conforme o esperado, para identificar problemas de tempo estúpidos (ou seja, interrupções que afetam comunicações seriais com batida de bits) e para obter um melhor entendimento geral de seus esforços como um todo.
  2. Nem todos os controladores ARM são iguais. Isso é óbvio. No entanto, consegui um pouco ao fazer o desenvolvimento inicial em um LPC1765 Coridium SuperPRO. Em retrospectiva, o que fez desta uma escolha ruim é que a implementação deste núcleo ARM permitia acesso à memória não alinhado por palavra. Ao portar o código C para o ARMbasic, as coisas correram bem até que tentei usá-lo com um alvo SAMD21 - o inferno desabou e as coisas foram danificadas além da crença devido ao acesso desalinhado ao preencher buffers, manipular sinalizadores, trabalhar com a versão ARMbasic das estruturas / sindicatos que criei, etc. Foi uma lição dolorosa. A lição aqui: se alguém deseja ter um código portátil, dev no alvo candidato mais restritivo, apenas para garantir que não seja confrontado com drama no final do projeto, quando provavelmente está mais animado para empregar os frutos de seus esforços..:)
  3. Portar o código C para o ARMbasic NÃO é impossível. Este esforço foi em grande parte uma evolução gigantesca do treinamento desportivo. Se alguém dedicar algum tempo para comparar as fontes C originais com o código ARMbasic que criei, deve ser capaz de ter algumas idéias de como implementar coisas que podem não fazer parte do projeto central do ARMbasic (ou seja, estruturas).
  4. Enfrente coisas como essa em partes gerenciáveis. Por padrão, gosto de ver gratificação regularmente. Um esforço como esses esforços de portabilidade e desenvolvimento provavelmente não será algo a ser realizado em uma única noite. Estabeleça metas realistas e trabalhe para alcançá-las, tentando não ficar sobrecarregado pelo 'quadro geral'.
  5. Um analisador lógico foi crucial nesse esforço. Sim, eu tenho uma unidade DS-Logic + de médio-baixo alcance, mas posso afirmar enfaticamente que uma largura de banda LA de 24 MHz de $ 12,50 barata da Amazônia teria mais do que suficiente. Junte isso ao PulseView de Sigrok (gratuito) (faz decodificação de protocolo) e terá um sistema muito robusto que deve funcionar em uma vasta gama de cenários, como o que me esforcei para realizar com este projeto. Certifique-se de obter uma unidade que tenha clipes de teste, ou peça clipes de teste separadamente, pois eles são extremamente (como Trumpfeldian) benéficos.
  6. Uma sonda lógica simples também é uma ferramenta muito útil. Na foto de visão geral do espaço de trabalho, você notará uma antiga sonda lógica Archer (Radio Shack) no canto inferior direito da imagem. Fiquei genuinamente surpreso ao descobrir como algo assim é útil no dia a dia, mesmo com um laboratório bem equipado.

Posso ter vinculado a eles anteriormente, mas não consigo me lembrar e estou com preguiça de olhar. Aqui está uma postagem do blog que tem um vídeo do módulo TTS em ação (Itaca uChip hospedando-o na época), e a postagem do ARMbasic Forum onde é possível baixar o código-fonte do ARMbasic portado.

Tome cuidado e divirta-se hackeando!

-MHz

Recomendado: