Sari la conținut

Programare PIC


adry
 Share

Postări Recomandate

Dupa vreo saptamana de chinuit, am zis sa posez pe forum. Pentru inceput, vreau sa programez un pic12c508a. Nu am un programator, asa ca am facut unul dupa tutorialul urmator: http://www.youtube.com/watch?v=rCNLQRCD2EQ.

Programare stiu C/C++, asa ca am zis sa programez si microcontrollerul in C. Ca sa ma prind cum merg treburile, am incercat sa scriu un program care sa faca un led sa clipeasca pe portul GP0. El arata cam asa:

 

#include<htc.h>

#include<pic.h>

#include<delay.c>

 

main(){

 

TRIS=0;

 

for(;;){

GP0=1;

DelayMs(1000);

GP0=0;

DelayMs(1000);

}

 

}

 

Acum...ar functiona toate acestea? programatorul pare cam indoielnic de simplu si programul...nu am nici o idee daca va merge. Si nu imi dau seama cum il pot incarca in microcontroller (mi-am cam prins urechile in MPLAB). Asadar, imi poate da cineva o mana de ajutor?

Link spre post
Distribuie pe alte site-uri

1. n-ar fi rau sa programezi pinul GP0 ca iesire.

2. pentru ca functia DelayMs() sa functioneze corect, compilatorul trebuie sa cunoasca frecventa clock-ului, prin urmare, ai nevoie de ceva de genul

#define CPUCLK xxxx

nu neparat cu sintaxa asta, cauta exemple pe net.

3. Nu e o idee buna sa pornesti la drum cu doua lucruri netestate, programatorul si codul. Deci cauta un exemplu de cod care esti sigur ca merge (si se potriveste cu placa ta) si testeaza programatorul, dupa care testezi codul tau. Altfel n-o sa mearga din prima si n-o sa stii care-i cauza, o sa devii frustrat si o sa renunti (speram sa nu renunti)

RR

Editat de roadrunner
Link spre post
Distribuie pe alte site-uri

Din ce am citit, instructiunea TRIS scrie in registrul corespunzator valoarea 0 in cazul acesta, si cu ea sterez toti pinii potrului gp ca iesire. Sau cel putin asa am inteles eu.

O alta problema e ca nu gasesc exemple pentru modelul meu de pic.

Link spre post
Distribuie pe alte site-uri

Citeste bine pdf-ul urmator:

PIC_Base.pdf

 

Si programul:

#include <12F509.h>
#define GP0 PIN_B0
#define GP1 PIN_B1
#define GP2 PIN_B2
#define GP3 PIN_B3
#define GP4 PIN_B4
#define GP5 PIN_B5

#fuses MCLR,NOPROTECT,NOWDT,INTRC

#use delay (clock=4000000) // frecventa oscilatorului pentru obtinerea delay_ms() - ex. 4MHz

unsigned int8 sGPIO = 0;

void main()
{
// Main loop
while (TRUE)
{
// toggle LED on GP1
sGPIO ^= 0b000010;
output_b(sGPIO);
// delay 500ms
delay_ms(500);
} // repeat forever
}

 

Succces si sa-mi spui daca functioneaza cum vrei. Daca doresti sa-l modifici citeste pdf-ul and then ask here. :ball:

Editat de prog
Link spre post
Distribuie pe alte site-uri

Am citit pdf-ul. Acum am cateva mici intrebari legate de program. Eu am un pic12c508a. Programul include un header 12f509.h, care banuiesc ca e facut pentru acel pic. Functiile sale sunt compatibile cu pic-ul meu? Functia output_b scrie in registrul gipo? Si nu trebuiau setati pinii ca iesire folosind TRIS?

Link spre post
Distribuie pe alte site-uri

1. da' ce te retine sa folosesti header-ul pentru pic-ul tau?

2. daca citeai documentul nu mai era nevoie sa sa intrebi "Functia output_b scrie in registrul gipo?" ca scrie clar acolo ce face (pag 15 sus)

si chiar daca nu scria, puteai sa te uiti in fiserul header sa vezi ce face, dar probabil ca e mai simplu sa arunci o intrebare si sa se uite altul pentru tine.

(din pacate la interviurile pentru job-uri va trebui sa te duci personal)

RR

Link spre post
Distribuie pe alte site-uri

Pentru inceput trebuie un programator si un PIC cu memorie flash (12Fxxx, 16Fxxx, etc.) care sa poata fi scris, citit, testat, sters, rescris, etc. Recomand PIC12F675 care este foarte ieftin si are si conversie analog-digitala. Programatorul poate fi pe mufa seriala, paralela sau USB si trebuie sa poata programa toate microcontrolerele sau memoriile de care va fi nevoie in viitor. Un programator USB este bine sa fie cumparat, desi este scump. Programatoarele pe mufa seriala sunt destul de simple, dar trebuie alimentate din sursa separata de +5V si +13V si nu din mufa seriala, deoarece calculatoarele actuale si laptopurile nu mai asigura tensiunile si curentii necesari programarii. Un programator pe mufa paralela poate primi mai multe comenzi si poate programa mai multe circuite. Trebuie alimentat, de asemenea, din sursa separata. Un programator functioneaza cu un anumit program (IC-Prog, etc.) care incarca programul in format .hex, il scrie in circuit, il verifica, etc. Pentru editarea si depanarea programului, MPLAB este foarte util. Poate simula functionarea microcontrolerului si poate executa programul instructiune cu instructiune. Este bine sa se invete si limbajul de asamblare, deoarece cu el se pot obtine cele mai compacte, rapide si precise programe.

Succes!

Link spre post
Distribuie pe alte site-uri

Am citit pdf-ul. Acum am cateva mici intrebari legate de program. Eu am un pic12c508a. Programul include un header 12f509.h, care banuiesc ca e facut pentru acel pic. Functiile sale sunt compatibile cu pic-ul meu? Functia output_b scrie in registrul gipo? Si nu trebuiau setati pinii ca iesire folosind TRIS?

Modifica codul urmator:

#include <12F509.h>

cu asta:

#include <12F508.h> 

Si zi-ne cum functioneaza.

Link spre post
Distribuie pe alte site-uri

Nu prea functioneaza. Am incercat in mplab cu XC8 compiler si primesc la compilare eroarea 939: no file arguments.

 

Ca sa imi fac o idee, ar trebui compilat programul cu mplab, apoi fisierul .hex obtinut sa il scriu in microcontroller folosind icprog, de exemplu?

Link spre post
Distribuie pe alte site-uri

Eroarea 939: no file arguments apare din cauza ca nu ati adaugat fisierul sursa in proiectul mplab pe care doriti sa-l compilati. Pentru detalii suplimentare priviti si urmatoarea imagine:

microchip.png

Si da, dupa compilare se va genera fisierul hex care va trebui sa-l scrieti ulterior in microcontroler (spre ex. cu ajutorul icprog).

 

Numai Bine

Link spre post
Distribuie pe alte site-uri

Nu prea am mai avut timp sa ma ocup, asa ca nu prea am mai facut nimic.

 

@donpetru, nu pot descarca atasamentul.

 

Am incercat sa compilez folosind HI-TECH C universal tool suite in mplab. Am cautat un header pentru pic-ul meu si am gasit asta. Am facut un fisier .h si l-am deschis in mplab. Acum...primesc cateva erori illegal # directive la use, fuses, list in programul de mai sus si device si nolist in fisierul .h.

Link spre post
Distribuie pe alte site-uri

  • 8 months later...

Buna. Am si eu o problema. Mi-am facut un yjdm si vreau sa incarc programul hex. pentru un ceas digital. Fisierul hex. il incarc cu icprog. Dau "programeaza tot" se incarca si la un moment dat imi apare "programare esuata la adresa de date 0000h". Ce e de facut? Ma puteti ajuta putin? Poat e de la programator, ca aceiasi eroare mi-a dat si la alte pc-uri, ati putea sa-mi dati un proframator mai usor de facut (ma ref la piese, pt ca sunt de la tara si nu sunt magazine de profil in orasul apropiat, Roman). Subliniez ca sunt incepator si ca abia am inceput studierea microcontrolerelor.

 

Proiect : http://www.electronicecircuits.com/electronic-circuits/pic-16f84-12-24-hour-clock-circuit-and-programming

JDM : http://www.electro-tech-online.com/microcontrollers/42642-16f628a-programmer.html (schema cu yjdm, singura schema de pe pagina)

Link spre post
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
 Share

  • Navigare recentă   0 membri

    Nici un utilizator înregistrat nu vede această pagină.

×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.