Acasă » Microcontrollers » Development tools » Luptand pentru spatiul din PIC12F675 – Limbaje asemanatoare Pascal

Luptand pentru spatiul din PIC12F675 – Limbaje asemanatoare Pascal

1. Despre microcontrolerul in cauza

PIC12F675 este un microcontroler mic, in capsula DIP cu 8 pini, si cu facilitati interesante. Este foarte ieftin, atragator pentru incepatori, si este suportat gratis de multe dintre compilatoarele comerciale de pe piata.

PIC12F675
 Parameter name
 Value
 Program Memory Type Flash
 Program Memory (KB) 1.75
 CPU Speed (MIPS)  5
 RAM Bytes  64
 Data EEPROM (bytes)  128
 Timers  1 x 8-bit, 1 x 16-bit
 ADC  4 ch, 10-bit
 Comparators  1
 Temperature Range (C)  -40 to 125
 Operating Voltage Range (V)  2 to 5.5

12f675_pinoutimages

Microcontrolerul poate fi folosit intr-o varietate rezonabila de proiecte, ca controller/logger de turbina eoliana/panou solar/turbina hidro, controller pentru pompa de apa, driver pentru motoare pas-cu-pas, alarme si in general, in industria auto.

2. Misiunea noastra

Pentru un astfel de microcontroler cu resurse reduse, singurul lucru de dorit din partea compilatoarelor existente (comerciale sau freeware) este obtinerea la compilare a unui cod cat mai compact. Insa acest obiectiv vital este tot mai greu de obtinut de la o versiune la alta a compilatoarelor existente. Pentru a deveni competitive pe piata, compilatoarele vin cu biblioteci bogate in facilitati si usor de folosit de catre incepatori, biblioteci care trebuie sa suporte toata gama de microcontrolere si in felul acesta, contin si mult balast, care adauga la dimensiunea generala a codului. Si in general, nu este nimic rau in asta. Intotdeauna am spus ca este castigator acel producator care reuseste sa ofere o biblioteca cat mai completa in functionalitate si cat mai usor de folosit, pentru ca in ziua de azi avem acces la microcontrolere mai puternice, la preturi convenabile. O biblioteca completa poate asigura existenta unei comunitati online numeroase si toti stim cat de important este acest lucru in perpetuarea si propagarea microcontrolerelor oricarui producator. O parte din producatori au inteles acest lucru si au o prezenta activa online.

Ce se intampla insa cu suportul pentru device-urile noastre mai vechi si mai putin dotate? Este evident ca sunt „lasate in urma”, in favoarea acelor biblioteci complete care ofera usurinta si timp redus in proiectarea aplicatiei finale. Este foarte posibil ca un proiect vechi care incapea la limita in memoria microcontrolerului, sa nu mai incapa la o recompilare cu o versiune mai noua a compilatorului, folosind aceleasi functii oferite de producator. Care este solutia? Intotdeauna, una initial inaccesibila incepatorului – dezvoltarea de functii specifice microcontrolerului tinta. Si daca intrebam specialistii, fiecare are propriul set de functii dezvoltat de-a lungul timpului pentru un microcontroler sau altul.

Haideti sa vedem care este situatia exacta in ce priveste microcontrolerul PIC12F675 si compilatoarele cu limbaj asemanator Pascal. Vom folosi initial un proiect mic, un controler de turbina eoliana, si mai tarziu, un controler/logger mai complex, care sa necesite un spatiu de memorie mai mare (am pus la punct un astfel de proiect aici).

3. Compilatoarele si uneltele folosite

Mai jos este o lista cu doar trei compilatoare – personal nu cunosc sa fie mai multe (dati-mi de stire daca stiti mai mult)

  1. mikroPascal PRO 4.60
  2. Pic Micro Pascal 1.6.0.86
  3. JALv2 2.4n cu biblioteca Jallib 0.6

Uneltele pe care le-am folosit pentru a programa si testa microcontrolerul:

  1. Programatorul Pickit2
  2. Placa Microchip „Low Pin Count Demo”, modificata de mine pentru a oferi suport avansat microcontrolerelor pe 8 pini
  3. Controlerul meu de turbina eoliana si panou solar, folosit pentru test live.

4. Testare folosind bibliotecile producatorului

Exemplele de test vor folosi biblioteca ADC furnizata de catre producator. Sa nu uitam ca aceasta este proiectata sa ofere suport pentru TOATE microcontrolerele din lista compilatorului.

4.1 Controlor simplu de turbina eoliana si/sau panou solar

 Compiler  Code space used
(instructions)
 Data space used
(bytes)
 mikroPascal PRO 4.60  610  13
 Oshonsoft PIC Basic 6.91  460  30
 PMP 1.6.0.86*  –  –
 JALv2 2.4n  352  38

* Nota: Functiile ADC din biblioteca standard din pachetul Pic Micro Pascal nu pot fi folosite pentru PIC12F675 fara modificari, asa ca iese din calcul. In tabel apare si un test facut ulterior cu Oshonsoft Basic, va rog sa-l ignorati daca nu va este de folos (era pentru uz personal).

Sursele de test sunt incluse in interiorul arhivei standard.zip de aici.

5. Testare folosind functii ADC preparate de catre noi.

Exemplele vor folosi functii ADC create de noi, avantajul fiind evident: pentru ca sunt create in mod specific pentru microcontrolerul in cauza, nu contin balast si sunt optimizate. Dupa cum veti vedea in tabelul de mai jos, crearea de functii specifice este singura solutie in cazul in care spatiul de memorie constituie o problema. Partea proasta esta ca acest lucru nu este la indemana incepatorului.

5.1 Controlor simplu de turbina eoliana si/sau panou solar

 Compiler  Code space used
(instructions)
 Data space used
(bytes)
 mikroPascal PRO 4.60  587  12
 Oshonsoft PIC Basic 6.91  451  32
 PMP 1.6.0.86  293  31
 JALv2 2.4n  276  33

Sursele de test sunt incluse in interiorul arhivei custom.zip de aici.

Articolul ar trebui sa continue cu exemplul mai complex, care scoate si mai mult in evidenta importanta proiectarii de functii specifice microcontrolerului tinta, insa din lipsa de timp, continuarea este amanata pe timp nedeterminat (insa cred ca asa cum este, articolul isi atinge obiectivul)

Anunțuri

Discutii

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s