Cuprins:

Faceți clic pe text pe vorbire pe o UChip alimentată ARMbasic și pe alte SBC-uri alimentate ARMbasic: 3 pași
Faceți clic pe text pe vorbire pe o UChip alimentată ARMbasic și pe alte SBC-uri alimentate ARMbasic: 3 pași
Anonim
Text către vorbire Faceți clic pe o UChip alimentată ARMbasic și pe alte SBC-uri alimentate ARMbasic
Text către vorbire Faceți clic pe o UChip alimentată ARMbasic și pe alte SBC-uri alimentate ARMbasic
Text către vorbire Faceți clic pe un UChip Powered ARMbasic și pe alte SBC-uri Powered ARMbasic
Text către vorbire Faceți clic pe un UChip Powered ARMbasic și pe alte SBC-uri Powered ARMbasic
Text către vorbire Faceți clic pe un UChip Powered ARMbasic și pe alte SBC-uri Powered ARMbasic
Text către vorbire Faceți clic pe un UChip Powered ARMbasic și pe alte SBC-uri Powered ARMbasic

Introducere: Bună ziua. Numele meu este Tod. Sunt un profesionist în domeniul aerospațial și al apărării, care are, de asemenea, un suflet ciudat.

Inspirație: provenind din era BBS dial-up, microcontrolere pe 8 biți, computerele personale Kaypro / Commodore / Tandy / TI-994A, când magazinele Radio Shack erau abundente (zilele bune), unul dintre primele mele proiecte încorporate în hobby a fost lucrând cu un kit de formare cu microprocesor Motorola MEK6800D2, pe care îl cumpărasem în timp ce lucram ca cooperativă la laboratoarele MSU EE (după ce am terminat cursul meu de liceu de electronică VoTech în sudul MI inferior). Acest proiect a implicat prototipul meu Radio Shack SP0256 NARRATOR ™ SPEECH PROCESSOR pe MEK6800D2, conectându-l și programând 6800 pentru ca acesta să emită pseudo-vorbire (cei care au lucrat cu HW bazat pe SP0256 știu exact la ce aluzez). A funcționat minunat și am progresat pe calea tăierii dinților în microcontrolere încorporate și Asamblare. După liceu, viața s-a împiedicat, militar, război, soți, copii, intrarea în sectorul civil, începerea unei cariere etc. toate au adăugat la raftul meu hobby-ul meu în favoarea continuării eforturilor vieții într-o cultură occidentală (aici în SUA).

Treceți înainte de 20 de ani, ajungând la momentul inevitabil în care copiii se maturizează până la punctul în care eu și Mireasa suntem distrageri de atenție, facturile ipotecare / vehiculelor / colegiului sunt încet plătite, câștigurile se îmbunătățesc cu avansurile, iar eu am suficientă rezervă timp până la punctul în care aș putea începe să mă concentrez asupra unor eforturi egoiste, m-am reluat la concertul electronic de hobby. Oricum, având în vedere descendența și istoria mea, am căutat și am găsit un mediu de dezvoltare pe care l-am legat rapid cu - ARMbasic - BASIC a fost prima mea dragoste și acest lucru nu se potrivea doar cu factura de a mă reconcilia la programare, ci și de a lucra cu hardware care era mult mai puternic decât ceea ce începusem cu zeci de ani mai devreme și astfel a început călătoria.

Aceasta a fost în jurul anului 2006-2009. Apoi, din motive care nu depășesc controlul nostru, viața s-a schimbat (așa cum s-a întâmplat pentru mulți în acei ani). Hobby-uri pe raft - se concentrează pe o nouă carieră, recuperându-se din luptele financiare (a fost puternic învestit în domeniul imobiliar și l-am luat în pantaloni scurți, iar tinerii tocmai ajungeau la punctul în care finanțarea colegiului era un imperativ). Practic, problemele vieții și ale primei lumi (suntem cu adevărat binecuvântați, având în vedere provocările și ostenelile cu care se luptă zilnic oamenii din alte părți ale lumii) s-au manifestat și … hobby-ul a fost abandonat. Am reluat-o pe scurt în 2011-2012-ish, apoi a fost întâlnit cu o altă schimbare de carieră - hobby abandonat din nou.

Avansează încă un deceniu și … M-am întors și, Good Lord Willing, sperăm pe toată durata (până când iau puiul acela de proverbial și încep să împing margaretele în sus de jos). Deci aici suntem. Uau - Arduino (ce este acel cuvânt ciudat?) A asaltat piața. Producatori ?? Ce naiba sunt ?! …:) Prietenii mei de la Coridium Corp (proprietari de plăci de dezvoltare ARMbasic și bazate pe ARM) au rămas neclintiți și adevărați. Acum, în loc de seria de controlere LPC2xxx, există această nouă (pentru mine) entitate ARM și Cortex M0 / M3 / M4 și Arduino și … WOW! Cultura s-a transformat destul de mult și în multe feluri minunate. Peeps colaborează de la distanță și, într-adevăr, la nivel global. Hardware-ul devine uimitor de rapid și de puternic, iar ARMbasic, după ce s-a maturizat și s-a întărit constant cu angajarea în multe familii diferite de siliciu, este un lucru frumos pentru mine și pentru mulți alții.

Așadar, făcând o poveste scurtă foarte lungă, recent am dat peste click-ul TTS de MikroElectronika și am simțit o spălare de nostalgie curgând peste mine. Făcuse o comandă într-un fel de minute și era neliniștit în următoarele zile până când unitatea a sosit în mână. De aici începe povestea …

Provizii

  • 1 clic MikroElectronika Text To Speech Click, conține Epson S1V30120 - modulul TTS ASIC
  • 1 ea ARMbasic Target, îndeplinind rolul de gazdă TTS
  • 1 ea Uno Breakout Shield (sau prototip de panou sau …)
  • 1 difuzor sau un set de difuzoare sugerează difuzoare alimentate de pe computer cu mufă TRS de 1/8"
  • 1 lot Sârmă, lipire, flux, fitil, fier de lipit, anteturi, prize IC și altele asemenea.
  • 1 lot de instrumente de dezvoltare încorporate DMM, sondă logică, analizor de logică, domeniu etc. - pentru noile MCU-uri gazdă TTS

Pasul 1: interconectări hardware

Interconectări hardware
Interconectări hardware
Interconectări hardware
Interconectări hardware
Interconectări hardware
Interconectări hardware

Pentru a reproduce acest lucru folosind o țintă ARMbasic într-un factor de formă Uno sau cu un Itaca uChip, cel mai bine s-ar servi cel mai bine folosind un scut de prototipare, așa cum am făcut în imaginile de mai sus (link simplu Amazon)

Unii vor vedea firul răsucit și se întreabă de ce - respingerea zgomotului în modul comun este răspunsul simplu. Da, nu avem de-a face cu semnale echilibrate aici, dar m-am gândit că nu poate face rău (?), Așa că am făcut asta când făceam acumularea plăcii.

Este un design destul de benign. Imprimările sunt atașate aici, sub forma unui grafic (AutoCAD 2D este ceea ce sunt cel mai obișnuit cu care am lucrat cu el timp de zeci de ani la locul de muncă de zi cu zi - încă îmi tăi dinții KiCAD și acest lucru a fost un efort prea simplu pentru a justificați curba de învățare ca prim proiect în KiCAD). Oricum, am ales să montez soclul uChip direct pe scut pentru a permite un caz de utilizare autonom atunci când folosesc uChip ca gazdă. Am adăugat un JST pentru alimentarea acestuia prin baterie, dacă doresc să fac acest lucru și, pentru că am câteva extras, am castelat un Adafruit SWD Breakout pentru a-mi permite să folosesc Segger J-Link EDU Debug Probe, dacă apare nevoia. Nu a făcut-o, dar păstrez SWD i'face pe acesta pentru a fi utilizat cu proiecte viitoare.

Castellated înseamnă, în acest context, să depuneți marginile PCB-ului astfel încât orificiile placate să fie reduse la jumătate de cilindri, permițând lipirea pe un PCB purtător - în acest caz placa de rupere a scutului. Am ales să fac acest lucru, deoarece porțiunile de ventilare a pachetului plat ale scutului nu s-au aliniat cu distanța dintre rândurile dintre cele două rânduri de antet de pe SWD BOB. A spart un fișier plat și 5 minute de depunere și a fost rezolvată problema.

Pasul 2: Programare și testare

Programare și testare
Programare și testare
Programare și testare
Programare și testare
Programare și testare
Programare și testare

Odată ce hardware-ul este construit, va trebui să existe un sunet complet pentru a verifica dacă cablajul este bun. Apoi, fac întotdeauna o verificare a puterii și a motivelor. Acest lucru nu numai că asigură faptul că puterea și solul sunt acolo unde ar trebui să fie, dar că oricare dintre celelalte terminații care nu ar trebui să aibă putere / împământare acolo nu. Nu este o sarcină plictisitoare pentru un proiect mic ca acesta, dar cu sisteme mai mari de sisteme, deși este într-adevăr un pas plictisitor, este absolut necesar pentru a se asigura că niciun subansamblu sau sisteme conectate nu pot fi scoase dintr-o greșeală stupidă care ar fi putut și ar fi trebuit prins. De obicei, am atașat minimul de mărfuri astfel încât să fie generată energie pe placă și apoi verific fiecare pin / terminație pentru alimentare și împământare înainte de a conecta subansambluri, cipuri etc., asigurându-mă că puterea este la nivelul adecvat. (luând în considerare dispozitivele care nu sunt tolerante la 5V / cerințele IO, 1v8 și 3v3 etc.) și acel teren este locul unde trebuie să fie și numai acolo unde trebuie să fie. Am asistat la o cascadă de eșecuri pe o aeronavă de la oameni care nu reușesc să facă verificări adecvate de preconectare. Într-un caz, a luat peste 100.000 de dolari LRU - nu un moment distractiv pentru a fi responsabil de un proiect și pentru a-l duce lateral într-o clipă, deoarece cineva a scurtcircuitat procesul. Un alt lucru de care sunt vinovat este să fac plictisitoare „verificări de vecinătate” - asigurându-mă că contactele / terminările nu sunt scurtcircuitate la contactele / terminările adiacente. Acest lucru devine critic dacă aveți de-a face cu ansambluri coaxiale, hamuri multi-conductoare / ecranate, etc.

Odată ce siguranța este asigurată, conectați lucrurile, alimentați-o și apoi treceți la programarea gazdei TTS (ARMbasic Target MCU) la fel cum s-ar face cu multe ținte MCU încorporate. Am înregistrat un videoclip care descrie programarea și utilizarea simplă a TTS Click. O puteți vizualiza aici.

Codul sursă ARMbasic poate fi descărcat de aici - o postare pe forum care are detalii suplimentare. Coridium a publicat o postare pe blog despre aceste eforturi, la care puteți ajunge făcând clic aici.

Pasul 3: Modificarea sursei pentru alte ținte ARMbasic și diverse meditații

Modificarea sursei pentru alte ținte ARMbasic și diverse meditații
Modificarea sursei pentru alte ținte ARMbasic și diverse meditații
Modificarea sursei pentru alte ținte ARMbasic și diverse meditații
Modificarea sursei pentru alte ținte ARMbasic și diverse meditații
Modificarea sursei pentru alte ținte ARMbasic și diverse meditații
Modificarea sursei pentru alte ținte ARMbasic și diverse meditații
Modificarea sursei pentru alte ținte ARMbasic și diverse meditații
Modificarea sursei pentru alte ținte ARMbasic și diverse meditații

Nu vă voi ajuta cu pașii necesari pentru a modifica codul sursă pentru a lucra cu alte ținte ARMbasic, în afară de a indica faptul că am continuat să fac acest lucru într-o abundență de comentarii referitoare la codul sursă. Vă rugăm să luați timp pentru a deschide fisierul tts.bas și citiți despre ce modificări sunt necesare dacă alegeți să portați codul către un alt controler alimentat de ARMbasic.

Atașat aici sunt câteva imagini pe care le-am făcut în timpul ciclului de dezvoltare pentru ca acest lucru să funcționeze.

Lecții învățate:

  1. Dacă aveți un analizor de logică cu intrări neutilizate și aveți IO-uri țintă suplimentare care nu sunt utilizate pentru munca la îndemână, nu vă fie teamă să utilizați aceste IO-uri ca instrumente de depanare - stropirea unei mișcări a unui IO în diferite puncte din cod poate fi un ajutor imens în depistarea a ceea ce funcționează și nu funcționează așa cum era de așteptat, pentru a identifica problemele de sincronizare tâmpite (adică întreruperile care afectează comunicările seriale de tip bit-banged) și, în general, pentru a înțelege mai bine eforturile dvs. în ansamblu.
  2. Nu toate controlerele ARM sunt la fel. Acest lucru este evident. Cu toate acestea, am obținut un pic făcând dev-ul inițial pe un LPC1765 Coridium SuperPRO. În retrospectivă, ceea ce a făcut din aceasta o alegere proastă este că implementarea acestui nucleu ARM a permis accesul la memorie fără alinierea cuvintelor. La portarea codului C în ARMbasic, lucrurile au mers destul de ușor până când am încercat să-l folosesc cu o țintă SAMD21 - tot dracul s-a dezlănțuit și lucrurile s-au stricat dincolo de credință din cauza accesului nealiniat la umplerea bufferelor, manipularea steagurilor, lucrul cu versiunea ARMbasic a structurilor / uniunilor cu care am venit, etc. A fost o lecție dureroasă. A lua aici: Dacă cineva dorește să aibă cod portabil, dev pe cel mai restrictiv țintă candidat, doar pentru a se asigura că nu se confruntă cu dramă la sfârșitul proiectului, atunci când este probabil cel mai încântat să folosească fructele eforturile lor..:)
  3. Portarea codului C în ARMbasic NU este imposibilă. Acest efort a reprezentat în mare parte o evoluție gigantică a antrenamentului. Dacă cineva își face timp pentru a compara sursele C originale cu codul ARMbasic pe care l-am creat, ar trebui să poată veni cu câteva idei despre cum să implementăm lucruri care s-ar putea să nu facă parte din proiectarea de bază a ARMbasic (adică Structuri).
  4. Abordă lucruri de acest fel în bucăți ușor de gestionat. În mod implicit, sunt unul căruia îi place să văd satisfacția în mod regulat. Un efort precum portarea și eforturile de dezvoltare nu este probabil să fie ceva care să poată fi realizat într-o singură noapte. Stabiliți-vă obiective realiste și lucrați la aceleași, încercând să nu fiți copleșiți de „imaginea de ansamblu”.
  5. Un analizor de logică a fost crucial în acest efort. Da, am o unitate DS-Logic + de gamă medie mai mică, dar pot afirma cu tărie că o lățime de bandă ieftină de 12,50 $ 24MHz LA din Amazonia ar fi mai mult decât suficientă. Cuplați acest lucru cu PulseView (gratuit) al Sigrok (gratuit) (face decodarea protocolului) și unul va avea un sistem foarte robust care ar trebui să funcționeze într-o multitudine de scenarii, cum ar fi ceea ce m-am străduit să întreprind cu acest proiect. Asigurați-vă că obțineți o unitate care are cleme de testare sau comandați cleme de testare separat, deoarece acestea sunt extrem de benefice.
  6. O sondă logică simplă este și un instrument foarte util. În imaginea de ansamblu a spațiului de lucru, veți nota o sondă logică Archer (Radio Shack) antică în colțul din dreapta jos al imaginii. Am fost cu adevărat surprins să aflu cât de util este ceva de genul acesta zilnic, chiar și cu un laborator bine echipat.

Poate că m-am legat de acestea mai devreme, dar nu-mi amintesc și sunt prea leneș ca să arăt. Iată o postare pe blog care conține un videoclip al modulului TTS în acțiune (Itaca uChip îl găzduiește la acel moment) și postarea Forum ARMbasic de unde se poate descărca codul sursă portat ARMbasic.

Aveți grijă și distrați-vă piratând!

-MHz

Recomandat: