Jump to content
prog

Tutorial microcontrolere PIC (actualizat periodic)

Recommended Posts

Am gasit in propriul calculator cateva tutoriale pe care vreau sa le pun cap la cap, sa le actualizez si sa va prezint, special pentru incepatori, ce sunt si cum se programeaza microcontrolerele PIC. Tutorialul asta il voi actualiza periodic.

 

Microcontrolerele sunt componente electronice care inglobeaza in ele majoritatea componentelor dintr-un calculator PC, bineinteles toate de mai mici dimensiuni. Astfel acestea au: unitate centrala, porturi, memorii, convertoare analog numerice (o parte din ele) etc. Ele pot fi programate simplu iar numarul de instructiuni ce pot fi utilizate intr-un program este destul de mare pentru aplicatii obisnuite. Spre exemplu, PIC16F84 are o memorie de program de 1024 de locatii ceea ce foarte multi nu o vor folosi niciodata la intreaga capacitate. Dar cum arata intern un PIC16F (vedeti imaginea de mai jos):

post-7268-0-39541300-1369462727_thumb.jpg

Asadar, intentia mea este de a aduce ceva completari didactice cursurilor pe care le-am citit, venind si cu propriile pareri. Am sa rog adminul sa ma ajute sa postez un curs care este ceva mai mare de 1.5Mb. Dar asta mai tarziu.

Microcontrolere PIC de la A la Z.pdf

 

In primul rand voi prezenta foarte clar ce anume este nevoie sa stii ca sa poti lucra cu microcontrolere PIC:

a) sunt componente electronice ieftine (~2...5euro) cu ajutorul carora se poate inlocui vechea si greoaia logica cablata in proiectarea digitala cu logica programata.

Pentru profesionisti, este bine sa se studieze structura interna a acestuia (vezi documentatia in engleza pe site-ul www.microchip.com ), mai ales cele doua porturi (interfata cu lumea exterioara PIC-ului dar si partea de tact si metode de obtinere corecta a resetului).

 

b) de asemeni este necesara cunoasterea:

- registrilor speciali,

- a setului de instructiuni,

- a simularii cu MPLAB,

- modul in care se realizeaza "varsarea" programului in microcontroler utilizand un programator profesional sau artizanal si softul de programare (eu folosesc ic-prog din site-ul www.ic-prog.com). Voi prezenta si modul de utilizare a acestuia.

 

Pentru amatori voi da in curand strictul necesar pentru a putea realiza proiecte proprii de mici dimensiuni, dar si pentru realizarea proiectelor din revistele pentru amatori (ex.Electronique pratique) care presupun cunostinte de "varsare" a programului, dat de autorii articolelor, cu ajutorul programatorului, in PIC.

Pentru cei care cunosc Basic sau C++, exista programe cu ajutorul carora pot fi programate microcontrolerele PIC fara a cunoaste limbajul de asamblare. Un astfel de program, practic si la obiect este mikroBASIC for PIC si mikroC for PIC, de pe site-ul mikroe.com. Tot pe site-ul asta veti gasi si placi de dezvoltare aplicatii cu microcontrolere.

Pentru cei mai lenesi, mai exista programe care transforma o schema logica (organigrama) in cod sursa (limbaj asamblare).

 

Dotare necesara pentru aplicatii cu microcontrolere PIC:

 

1. Programator pentru PIC: Se poate cumpara de pe net, spre exemplu de pe ebay.com (gasiti unele programatoare destul de ieftine).

2:

- Programul MPLAB (este gratis pentru microcontrolerele pana la PIC18...). Programul il puteti sa-l descarca de la Microchip (www.microchip.com).

- Programul ic-prog (sau altul similar). Este gratis si se descarca de aici: www.ic- prog.com

Nu in ultimul rand, aveti nevoie de microcontrolerul de programat, conform aplicatiei. Microcontrolere la preturi bune gasiti la diverse magazine web.

 

DIFERENTE INTRE DIFERITELE TIPURI DE MICROCONTROLERE.

 

Arhitectura Harvard contra Von Neuman.

Majoritatea microprocesoarelor si microcontrolerelor actuale utilizeaza arhitectura Von Neuman. Memoria de program (care este de fapt, in acest caz si memorie de date) contine atat instructiunile cat si datele iar pentru a le vehicula este folosit un singur bus (cu o lungime in functie de tipul microprocesorului sau microcontrolerului). Deci, este nevoie ca mai intai sa vehiculezi instructiunile, apoi datele s.a.m.d. Asta poate insemna o reducere de viteza.

Rupand o traditie de multi ani (arhitectura Von Neuman este utilizata si in calculatoarele PC), Microchip utilizeaza o arhitectura Harvard in care instructiunile si datele au memorii diferite, sunt vehiculate inspre si dinspre unitatea de calcul pe doua bus-uri diferite iar executarea unei instructiuni nu are nevoie de mai multe cicluri masina pentru ca, gratie celor doua bus-uri, intr-un singur ciclu masina se poate manipula atat codul instructiunii de executat cat si datele utilizate.

Asta inseamna ca majoritatea instructiunilor (mai sunt cateva care au nevoie de 2 cicluri masina: instructiunile de salt (go to, call etc.)) pot fi prelucrate intr-un singur ciclu masina. Astfel se poate mari viteza de lucru a microcontrolerului.

Va veti intreba totusi, pe buna dreptate, de ce microcontrolere clasice cu arhitectura Von Neuman si mai ales PC-urile, care au aceeasi arhitectura au viteze mai mari, totusi. Raspunsul este simplu: microcontrolerele clasice si PC-urile sunt mai complexe si mai scumpe. PIC-urile reprezinta un compromis rezonabil intre performante si pret. Pentru extrem de multe aplicatii acestea sunt mai mult decat suficiente iar pretul si faptul ca au dimensiuni foarte mici le fac extrem de utilizate in ultimii ani.

In plus, acestea au un set de instructiuni extrem de redus (max. 35), mai usor de utilizat si de invatat pe de rost. Minimul necesar de stiut din sisteme de numeratie, coduri specifice electronicii digitale, operatii aritmetice etc.

Din pacate electronica digitala are la baza un sistem de numeratie diferit de cel zecimal (care ulilizeaza o numeratie cu 10 cifre) utilizat in mod obisnuit, sistemul binar (care utilizeaza doar doua cifre 0 s 1.

In toate sistemele de numeratie pozitia cifrelor in scrierea numerelor are o mare importanta. Astfel, cu cat pozitia cifrei este mai la stanga intr-un numar, cu atat importanta acesteia este mai mare(are rang mai mare).

 

(va urma)

Edited by donpetru
adaugare curs in format PDF

Share this post


Link to post
Share on other sites

prog,

 

te felicit pentru initiativa.

dar,

fi atent cum structurezi tutorialul si pentru cine il scrii. Ai sarit de la un subiect la altul si incet incet te indepartezi de la subiectul principal. Nu diferentele intre arhitectura Von neuman si Hardward sunt importante pentru incepatori, si nici o paralela intre MCU si PC, eventual le pui in niste capitole separate. Un tutorial trebuie sa fiepentru incapatori un ajutor ca sa poata pornii lucrurile mai multe link-uri, eventual exemple, cum instalezi, cum incarci ("versi") softul in MCU, ce poate sa merga rau si cum repari ce merge rau.

Fa-ti o structura cu ce subiecte vrei sa acoperi (un plan) si urmeaza structura propusa cand scrii. - si cel mai important - nu scrie online. Scrie intr-un editor de text.

mult succes.

RR

 

ps - sunt o gramada de tutoriale bune pe net, inspirat-te din ele, macar pentru structura.

Edited by roadrunner

Share this post


Link to post
Share on other sites

Ini?iativa este bun?, dar m? tem c? e superflu?. Exist? at?ta documenta?ie pe net, ?nc?t

nu cred c? prog ar putea veni cu informa?ii noi. Dar trebuie s?-i d?m o ?ans?.

Eventual se poate inspira din cartea de mai jos.

Sugestia lui RR de a scrie ?nt?i ?ntr-un editor este foarte bun?. ?n felul acesta se pot corecta

eventuale erori de tastare sau de alt? natur?, ?nainte de a posta.

 

2uqnnlf.jpgmx1nrr.jpg

Share this post


Link to post
Share on other sites

Multumesc pentru sustinere. O sa ma stradui sa scot din cursurile si cartile pe care le-am citit cele mai importante notiuni utile incepatorului.

donpetru, multumesc pentru ca m-ai ajutat sa atasez acel curs. Mai am de lucrat la traducere (traducere care nu a fost inceputa de mine). Si scuze pentru eventualele acorduri gramaticale de traducere, care repet, nu au fost facute de mine. Scuze in privinta asta.

 

P.S. O sa folosesc un editor de text.

Share this post


Link to post
Share on other sites

Bine dom' profesor. P?n? postezi tu una mai bun?, eu zic s-o l?s?m acolo.

Sau po?i raporta porc?ria moderatorului ca s-o ?tearg?.

?i mai ?nva?? s? scrii ?i s? te exprimi, pentru c? se pare c? nu te pricepi dec?t la ?C.

Share this post


Link to post
Share on other sites

Nu stiu pe cine faci tu domn profesor dar din cauza unor oameni ca tine o sa las sa faca altcineva tutorialul asta despre microcontrolere PIC. E plina tara asta de mitocani si mocangii ca tine.

Share this post


Link to post
Share on other sites

prog, dac? citeai postarea de deasupra mai atent, vedeai c? nu m-am referit la tine.

Oricum, ?mersi? pentru etichete.

Share this post


Link to post
Share on other sites

M?i Mariane, chiar m-ai f?cut curios. Am parcurs numai cuprinsul c?r?ii ?i mi s-a p?rut interesant? de

aceea am postat-o acum c?tva timp, ?n speran?a c? va fi de vreun ajutor, dar n-am reu?it dec?t s? fiu un ?mocangiu?.

?ntr-adev?r ai dreptate, traducerea este varz? ?i citez de pe prima pagin?: ?este un circuit integrat ordinar?...

Curios cum de nu a remarcat nimeni asta p?n? acum! Probabil c? n-a citit-o nimeni.

Propun ?tergerea porc?riei ?i-mi cer scuze domnului Marian78.

Share this post


Link to post
Share on other sites

Laudabila intentie dar mai putin inspirata punerea ei in practica. Daca tot se doreste sa se adresa incepatorilor acest subiect atunci poate ca ar fi inspirat sa se coboare pana la nivelul lor cu explicatiile, sa se plece de la notiun ile de baza si informatiile postate sa fie cat mai atent editate, cu gandul de a face bine poti face mai mult rau, un singur exemplu cred ca este suficient, acel pdf cu ( cika ) cartea de microcontrollere de la A la Z, este pur si simplu un dezastru datorita lenei de a acorda atentie celor scrise in documentatia originala de aici http://www.mikroe.com/pic/books/ si deci grabei de a folosi pe gugle la traducere, este cel putin JENANT sa spui ca doresti sa ajuti incepatorii si sa atasezi o asemenea porcarie... oameni buni ganditi-va bine, drumul spre iad e pavat cu bune intentii...

 

Si ca sa nu fiu offtopik prea tare ( desi nu cred ca am fost ) un tutorial destinat incepatorilor trebuie sa... inceapa cu notiunile cele mai elementare despre ce se face cand se scrie un cod, de ce se scrie codul ala, cum se scrie codul ala... etc... cu alte cuvinte este complet inutil sa inveti fiecare element dintr-un microc pe de rost daca habar n-ai ce-i un limbaj de programare, si asta este subiectul cel mai important, si totodata primul pas care trebuie facut in acest sens, adica invatarea unui limbaj de programare si abea apoi trecerea la microc.

 

@Marian, ai perfecta dreptate, un tutorial pentru incepatori (utilizatori), ar trebui sa foloseasca la inceput, cuvinte simple (nu tehnice),

abia mai tarziu se va putea incerca scrierea unei linii de cod, deja esti avansat atunci...Iata un inceput prietenos pentru un tutorial:

"Dupa ce ati cumparat dela magazin un ATTiny2313, gol (neprogramat), si sunteti in posesia fisierelor hex si eep, mai aveti nevoie de:

un soft (PonyProg sau altul) si un programator (burner). Inainte de a se indica pasii ce trebuie urmati si succesiunea lor, se vor face

clarificarea unor termeni precum: JDM, JTAG, ICSP, STK200/300, USB ISP, setari fuse bits, si mai ales ordinea introducerii fisierelor."

Am inteles ca aproape nouazeci la suta din esecul programarii microcontrolerelor se produce din neinformarea (intentionata?) a avansatilor...

In general lumea este impartita in utilizatori obisnuiti (care nu trebuie sa aiba nici macar notiuni de aritmetica) dar care sa poata programa

cu usurinta un microcontroler, si savanti (cei care creeaza softuri, etc pentru utilizatori) sau inventatori. Americanii asa sunt, nu trebuie

sa stie cu cine se invecineaza statul lor natal dar au ajuns pe Luna.

Share this post


Link to post
Share on other sites

ce am invatat eu, (noi) din acest tutorial? ( comentarii .....)

fara suparare vreau sa invat sa programez pic-uri, memorii tv, si nu numai...

Share this post


Link to post
Share on other sites

Laudabila initiativa deschiderii unui astfel de topic, dar moarta in fasa.

Eu am o mare nedumerire, pe care nimeni nu o expica nicaieri, caci toti cred despre ceilalti ca sunt a tot stiutori.

Ei bine, eu habar nu am nimic despre PIC-uri.

Intrebarea mea este, orice PIC trebuie programat inainte de a fi utlilizat.

Mai concret PIC12F629 trebuie si el mai intai scris, ars, programat, sau cum vreti voi sa ziceti?

 

Multumiri anticipate pentru talamacire, explicatie, sau cum vreti voi sa ziceti, numai sa imi ziceti si mie sa nu mor destept..

Share this post


Link to post
Share on other sites

e confuzie din cauza cuvantului "programare" si "programator"

 

Primul sens:

Programare e procesul de scriere a instructiunilor intr-un limbaj de programaresi compilarea/vreificarea lor. Lucrul asta se petrece pe un PC si este executat de un programator (programator - o persoana capabila sa programeze)

Programul folosit de PC se cheama IDE (integrated development environment) si e de obicei descarcabil de pe site-ul fabricantului de microcontrollere. Unele IDE-uri au si simulator unde poti sa simulezi functionarea (cu ceva limitari) inainte sa ai microcontrolerul.

 

Sensul al doilea al cuvantului programare este transferul programului compilat la pasul anterior (paragraful de mai sus) in memoria de program a microcontrolerului. Procesul asta se face cu un cablu direct pe placa unde se afla microcontrolerul sau se infige microcontrolerul intr-un soclu cand se face cu ajutorul unui programator (programator - este un aparat sau o placa legata la PC care poate transfera programul in memoria microcontrolerului)

 

RR

Edited by roadrunner

Share this post


Link to post
Share on other sites

uite asa la ti facut pe prog sa abdice 

si vati batut joc de initiativa lui.

a incercat ceva,voi ce faceti ?

la-ti oprit...

trebuie facut de programator....?????

sunteti tari.

Share this post


Link to post
Share on other sites

Vad ca nu s-a obosit sa corecteze nimeni gramatical pdf-ul postat de mine, tradus automat in translate - si nu de mine - luat de pe net de nu stiu unde. Mai bine nu deschideam topicul asta.

Share this post


Link to post
Share on other sites

Vad ca nu s-a obosit sa corecteze nimeni gramatical pdf-ul postat de mine, tradus automat in translate - si nu de mine - luat de pe net de nu stiu unde. Mai bine nu deschideam topicul asta.

Ai si tu dreptate, mai bine nu-l deschideai (topicul) dar un lucru il stiu de la batrani, cand te apuci de un lucru, du-l la bun sfarsit, nu astepta sa-ti faca altii treaba.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.