Sari la conținut
ELFORUM - Forumul electronistilor

incepator pic


mihaipadawan

Postări Recomandate

  • Răspunsuri 92
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • mihaipadawan

    40

  • Liviu M

    33

  • MatyC

    8

  • Th3_uN1Qu3

    7

Top autori în acest subiect

Imagini postate

#include <htc.h>  //se ocupa el de pic el de fisierul necesar picului tau in functie de ce alegi in mplab#include <pic.h>__CONFIG(UNPROTECT & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO);#define _XTAL_FREQ    4000000 //4 MHz clock; schimba daca ai alta frecventa. Ai nevoie de asta pentru functia __delay_ms();void main(void){		TRISIO4=1; 					// Alternativ poti folosi TRISIO ca sa modifici toti bitii odata	TRISIO5=0;					//  TRISIO = 0b010000; 										while(1){ 					 // comutam GPIO5 la infinit, cu pauze de 0,5 secunde intre comutari     		GPIO5=1;		__delay_ms(250);		 // nu stiu ce ia __delay_ms() ca argument; daca e unsigned char, pot max. 255		__delay_ms(250);		GPIO5=0;		__delay_ms(250);		 // nu stiu ce ia __delay_ms() ca argument; daca e unsigned char, pot max. 255		__delay_ms(250);	}}

primesc aceleasi erori

Link spre comentariu

Interesant, nu mi s-a intamplat niciodata.

In mplab, in configuration, l-ai lasat sa-si ia configurarea din cod, da? N-ai modificat nimic de mana.

Oricum, incearca sa pui define-urile alea direct in program, sa vedem daca asa le ia.

 

#include <htc.h>  //se ocupa el de pic el de fisierul necesar picului tau in functie de ce alegi in mplab#include <pic.h>#define _XTAL_FREQ    4000000 //4 MHz clock; schimba daca ai alta frecventa. Ai nevoie de asta pentru functia __delay_ms();/* Configuration bit definitions */#define CONFIG_ADDR	0x2007 /* Protection of data block */#define CPD	0x3EFF		/* data protect on */ #define UNPROTECT	0x3FFF 	/* data protect off *//* Protection of program code */#define PROTECT	0x3F7F 		/* code protection on */#define UNPROTECT	0x3FFF 	/* code protection off *//* Brown out detection enable */#define BOREN	0x3FFF 		/* brown out reset enabled */#define BORDIS	0x3FBF 		/* brown out reset disabled *//* Master clear reset */#define MCLREN	0x3FFF 		/* master clear reset function enabled */#define MCLRDIS	0x3FDF 		/* master clear reset function disabled *//* Power up timer enable */#define PWRTDIS	0x3FFF 		/* power up timer disabled */#define PWRTEN	0x3FEF 		/* power up timer enabled *//* Watchdog timer enable */#define WDTEN	0x3FFF 		/* watchdog timer enabled */#define WDTDIS	0x3FF7 		/* watchdog timer disabled *//* Oscillator configurations */#define RCCLK	0x3FFF 		/* GP4 = clock out signal/GP5 = RC osc */#define RCIO	0x3FFE 		/* GP4 = IO/GP5 = RC osc */#define INTCLK	0x3FFD 		/* internal osc/GP4 = clock out signal/GP5 = IO */#define INTIO	0x3FFC 		/* internal osc/GP4 = IO//GP5 = IO */#define EC	0x3FFB 		/* external clock */#define HS	0x3FFA 		/* high speed crystal/resonator */#define XT	0x3FF9 		/* crystal/resonator */#define LP	0x3FF8 		/* low power crystal/resonator */__CONFIG(UNPROTECT & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO);void main(void){

LE Vad ca in codul tau (postat aici pe site), pe linia de dupa #define _XTAL_FREQ ai un __delay_ms();

Asta ar trebui sa fie in comentariul de deasupra (de la #define). Asigura-te ca asa e (altfel poate face probleme).

Link spre comentariu

da, delayul acela e comentat.nu inteleg la ce te referi? prin meiu gasesc Build Configuration, Configure, Configuration Bits... Spune mi la ce si fac print screen la tot.modific acum codulLE: da,

HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.82Copyright © 2011 Microchip Technology Inc.(1273) Omniscient Code Generation not available in Lite mode (warning)Memory Summary: Program space used 47h ( 71) of 400h words ( 6.9%) Data space used 5h ( 5) of 40h bytes ( 7.8%) EEPROM space used 0h ( 0) of 80h bytes ( 0.0%) Configuration bits used 1h ( 1) of 1h word (100.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%)Running this compiler in PRO mode, with Omniscient Code Generation enabled,produces code which is typically 40% smaller than in Lite mode.See http://microchip.htsoft.com/portal/pic_pro for more information.Loaded E:\Projects pic\LED1.cof.********** Build successful! **********

stii ce trebuie facut ca sa nu mai scriu tot ce am midificat acum?
Link spre comentariu

nu inteleg la ce te referi? prin meiu gasesc Build Configuration, Configure, Configuration Bits... Spune mi la ce si fac print screen la tot.

Cred ca e vorba de fereastra cu configuration bits (nu sunt sigur si n-am nici un mplab la indemana).

stii ce trebuie facut ca sa nu mai scriu tot ce am midificat acum?

Ar trebui sa ajunga includerea lui htc.h. A propos, la #include cred ca poti sa renunti, e suficient htc.h.LE A propos, circuitul fizic face ceva acum?
Link spre comentariu

nu inteleg la ce te referi? prin meiu gasesc Build Configuration, Configure, Configuration Bits... Spune mi la ce si fac print screen la tot.

Cred ca e vorba de fereastra cu configuration bits (nu sunt sigur si n-am nici un mplab la indemana).

 

stii ce trebuie facut ca sa nu mai scriu tot ce am midificat acum?

Ar trebui sa ajunga includerea lui htc.h. A propos, la #include cred ca poti sa renunti, e suficient htc.h.

 

LE A propos, circuitul fizic face ceva acum?

 

 

am uploadat tot ce e in meniu si contine cuvantul configuration.

 

da, am pus programul pe pic, urmeaza sa leg un led intre pinul al doilea si vss. anunt imediat daca merge

 

LE: nu :/ nu face nimic.... gpio5 e al pinul 2, ala de sub vdd?

 

Posted Image

post-53541-139829301333_thumb.jpg

Link spre comentariu

E ok, ma refeream la primul screen-shot, ala cu configuration bits. E bifat bine - Set configuration bits in code. Daca debifezi chestia aia, scrii directiva __CONFIG degeaba (trebuie sa selectezi in aceeasi fereastra diversele optiuni pe care altfel le setezi cu __CONFIG).Poti folosi si varianta fara __CONFIG(), da' mie mi se pare mai "portabil" cu (pe orice sistem incarci toate configurarile necesare cand incarci programul).LE Da, GP5 e pinul 2. Daca nu merge, nu mai am nici o idee.

Link spre comentariu

E ok, ma refeream la primul screen-shot, ala cu configuration bits. E bifat bine - Set configuration bits in code. Daca debifezi chestia aia, scrii directiva __CONFIG degeaba (trebuie sa selectezi in aceeasi fereastra diversele optiuni pe care altfel le setezi cu __CONFIG).Poti folosi si varianta fara __CONFIG(), da' mie mi se pare mai "portabil" cu (pe orice sistem incarci toate configurarile necesare cand incarci programul).LE Da, GP5 e pinul 2. Daca nu merge, nu mai am nici o idee.

asteapta numai putin, fac un screen cu ceva ce nu cred ca e in regulaL2: cred ca normal e ca programul sa fie scris pe primele, suficiente, spatiii de memorie, iar ce nu este folosit sa fie lasat liber (cu valoarea 3FFF).dupa ce dau import la b657i-1.hex, sunt ocupate cateva randuri din memorie iar restu ramane cu valoarea 3FFF (in afara de ultimul care e osccal).dar dupa ce dau import la hexul facut din buildul codului, sunt chestii scrise anapoda la sfarsitul memoriei. E posibil sa fie asta din cauza ca nu e setat bine aici -> download/file.php?id=2626&mode=view program memory areas? start- end?L3: am mai observat ca o diferenta este la configuration (in fereastra de la pickit2). asa ca am uploadat screen shot cu fereastra asociata

post-53541-139829301357_thumb.jpg

post-53541-139829301378_thumb.jpg

Link spre comentariu

Dupa parerea mea, nu-i absolut nici o problema in modul in care scrie programatorul datele (da' e numai parerea mea, poate fi gresita).Configuration word-ul e diferit de la proiect la proiect, in functie de optiunile setate in __CONFIG. Nu e cazul sa modifici nimic in softul de programare. Pe de alta parte, valoarea aia de osccal (34FF) pare rezonabila, asa ca as zice s-o scrii si in picul tau daca merge (folosind tu ceasul intern, sunt sanse mari ca nefunctionarea sa fie datorata chiar valorii asteia).Faptul ca memoria nu e ocupata continuu, iar nu e un semn de "proasta functionare". Compilatorul imparte datele in "grupe functionale" (cred ca se cheama psect, vezi in documentatia compilatorului) si le pune unde i se pare lui ca stau mai bine.

Link spre comentariu

am inteles.... il mai invart eu pana maine, daca observ ceva anunnt. daca nu merge nimic imi cumpar un pic mai commun pentru invatat, si probabil si un pickit2 in cazul in care e imposibil de facut ceva

 

 

postez codul

 

#include <htc.h>  //se ocupa el de pic el de fisierul necesar picului tau in functie de ce alegi in mplab#define _XTAL_FREQ    4000000 //4 MHz clock; schimba daca ai alta frecventa. Ai nevoie de asta pentru functia __delay_ms();/* Configuration bit definitions */#define CONFIG_ADDR   0x2007 /* Protection of data block */#define CPD   0x3EFF      /* data protect on */ #define UNPROTECT   0x3FFF    /* data protect off *//* Protection of program code */#define PROTECT   0x3F7F       /* code protection on */#define UNPROTECT   0x3FFF    /* code protection off *//* Brown out detection enable */#define BOREN   0x3FFF       /* brown out reset enabled */#define BORDIS   0x3FBF       /* brown out reset disabled *//* Master clear reset */#define MCLREN   0x3FFF       /* master clear reset function enabled */#define MCLRDIS   0x3FDF       /* master clear reset function disabled *//* Power up timer enable */#define PWRTDIS   0x3FFF       /* power up timer disabled */#define PWRTEN   0x3FEF       /* power up timer enabled *//* Watchdog timer enable */#define WDTEN   0x3FFF       /* watchdog timer enabled */#define WDTDIS   0x3FF7       /* watchdog timer disabled *//* Oscillator configurations */#define RCCLK   0x3FFF       /* GP4 = clock out signal/GP5 = RC osc */#define RCIO   0x3FFE       /* GP4 = IO/GP5 = RC osc */#define INTCLK   0x3FFD       /* internal osc/GP4 = clock out signal/GP5 = IO */#define INTIO   0x3FFC       /* internal osc/GP4 = IO//GP5 = IO */#define EC   0x3FFB       /* external clock */#define HS   0x3FFA       /* high speed crystal/resonator */#define XT   0x3FF9       /* crystal/resonator */#define LP   0x3FF8       /* low power crystal/resonator */__CONFIG(UNPROTECT & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO);void main(void){		TRISIO4=1; 					// Alternativ poti folosi TRISIO ca sa modifici toti bitii odata	TRISIO5=0;					//  TRISIO = 0b010000; 										while(1){ 					 // comutam GPIO5 la infinit, cu pauze de 0,5 secunde intre comutari     		GPIO5=1;		__delay_ms(250);		 // nu stiu ce ia __delay_ms() ca argument; daca e unsigned char, pot max. 255		__delay_ms(250);		GPIO5=0;		__delay_ms(250);		 // nu stiu ce ia __delay_ms() ca argument; daca e unsigned char, pot max. 255		__delay_ms(250);	}}
Link spre comentariu

Pana la urma cum iti dai seama ca nu merge?Cel luat de pe internet mergea?Pana la urma programezi cu un pickit2? Oricum nu conteaza, dupa parerea mea programatorul e OK.Ai incercat si cu montajul neconectat la programator? Adica programat picul, dezalimentat, deconectat de la programator, realimentat picul. Intreb pentru ca la ICD2-ul meu, dupa ce programez picul, trebuie sa "eliberez" montajul din reset, altfel nu functioneaza. Poate e si la pickit ceva asemanator (bifa aia la MCLR?).LE Uite ce scrie in documentatia pickit-ului (ti-am dat linkul zilele trecute)

1.4.6 Device MCLR StateThe /MCLR checkbox shown in Figure 1-4 and Figure 1-5 has the same functionalityas the menu selection Programmer>Hold Device in Reset. When the box is checkedthe target device will be held in Reset. When unchecked, the target circuit is allowed topull MCLR up to VDD to release the device from Reset. This function can be used toprevent a device from executing code before and after programming.

Link spre comentariu

Pana la urma cum iti dai seama ca nu merge?Cel luat de pe internet mergea?Pana la urma programezi cu un pickit2? Oricum nu conteaza, dupa parerea mea programatorul e OK.Ai incercat si cu montajul neconectat la programator? Adica programat picul, dezalimentat, deconectat de la programator, realimentat picul. Intreb pentru ca la ICD2-ul meu, dupa ce programez picul, trebuie sa "eliberez" montajul din reset, altfel nu functioneaza. Poate e si la pickit ceva asemanator (bifa aia la MCLR?).

programatorul e facut de noxxys (l am cumparat de la el, am pus linkul spre topicul unde a aratat ce vinde). da, cu hexul de pe internet merge. defapt hexul ala il am de la noxxys cand mi a demonstrat ca merge programatorul. am pus din nou si merge.verific asa: conectez programatorul la pic si la pic. pun tensiunea la pic, import hex + write. dezasamblez tot, leg alimentarea si conectez pinul lung de la un led cu pinul 2 si pinul scurt cu vss.LE: da, am bifat MCLR. pinul 1 de la programator e conectat cu pinul 4 de la pic. ambele se numesc MCLR (deci e bine).cum setez valoarea osccal?si inca ceva: odata ,cand eram mai incepator decat acum, am legat firu rosu la vss si firu negru la vdd, stiu doar ca sa incins (precizez ca acum functioneaza daca pun hexul acela, adica se aprinde un led pus intre pinul 7 si 8. -si intre probele cu hexul facut azi l am testat de cateva ori cu b857i-1.hex si mergea). e posibil sa aiba niste stricaciuni? eu nu m am mai gandit ca ar fi patit ceva dupa ce am vazut ca inca functioneaza.
Link spre comentariu

programatorul e facut de noxxys (l am cumparat de la el, am pus linkul spre topicul unde a aratat ce vinde).

Din cate stiu eu, e clona pickit, asa ca poti spune linistit ca programezi cu pickit2 (ca idee, cand zic icd2 ma gandesc la clona potyo pe care mi-am facut-o) si nu ai nevoie de alt programator.

da, cu hexul de pe internet merge. defapt hexul ala il am de la noxxys cand mi a demonstrat ca merge programatorul. am pus din nou si merge.

OK, atunci poate te ajuta noxxys mai departe, ca eu am ajuns cam la fundul sacului cu idei. :rade:

 

verific asa: conectez programatorul la pic si la pic. pun tensiunea la pic, import hex + write. dezasamblez tot, leg alimentarea si conectez pinul lung de la un led cu pinul 2 si pinul scurt cu vss.

Se pare ca verifici bine, da' complicat rau. Oricum rezistenta aia tot ti-ar trebui. :limb:

 

Sorry, cum ziceam, n-am idee ce nu-i place. Poate mai trebuie ceva configurat la pini, poate...

Incearca totusi si cu configul

__CONFIG(UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO);
Link spre comentariu

LE: da, am bifat MCLR. pinul 1 de la programator e conectat cu pinul 4 de la pic. ambele se numesc MCLR (deci e bine).

Eu ziceam ca dupa ce programezi picul, daca nu-l deconectezi de la programator, ca sa-l testezi trebuie sa debifezi MCLR in fereastra de programare (altfel programatorul tine picul in reset si nu-l lasa sa lucreze). Da' cum tu deconectezi programatorul, n-are importanta.

 

cum setez valoarea osccal?

Nu vrei sa citesi documentatia, nu? :aut:

Tools -> Set OSCCAL

Set OSCCAL Allows the OSCCAL value to be changed for devices where it is

stored in the last location of Program Memory.

Link spre comentariu

da, cu hexul de pe internet merge. defapt hexul ala il am de la noxxys cand mi a demonstrat ca merge programatorul. am pus din nou si merge.

OK, atunci poate te ajuta noxxys mai departe, ca eu am ajuns cam la fundul sacului cu idei. :rade:

 

prima data ma ajutat sa il construiesc (pe skype), mi a dat o gramada de planuri etc... dupa ce am stricat 2 placute de pcb in solutie dinaia maro (desenam circuitu cu o carioca), am renuntat. si ne am intalnit la gara in bucuresti si l-am cumparat. dupa ma ajutat sa pun hex`ul ala pe el. a zis ca programare nu stie, el zboara cu planorul, nu e de profesie, monteaza chestii de pe net ca hobby.

 

 

 

LE: da, am bifat MCLR. pinul 1 de la programator e conectat cu pinul 4 de la pic. ambele se numesc MCLR (deci e bine).

Eu ziceam ca dupa ce programezi picul, daca nu-l deconectezi de la programator, ca sa-l testezi trebuie sa debifezi MCLR in fereastra de programare (altfel programatorul tine picul in reset si nu-l lasa sa lucreze). Da' cum tu deconectezi programatorul, n-are importanta.

aaa, am inteles acum.

 

 

cum setez valoarea osccal?

Nu vrei sa citesi documentatia, nu? :aut:

Tools -> Set OSCCAL

Set OSCCAL Allows the OSCCAL value to be changed for devices where it is

stored in the last location of Program Memory.

 

ba vreau! numai ca o sa imi ia cateva zile. acum nu am putut sa citesc in intregime, doar sa rasfoiesc! zilele urmatoare ma apuc sa citesc!

 

 

am dat la fereastra programatorului, tools set osccal manually si scriu 34FF si apas ok, si imi spune ca da erase la pic... iar daca pun hexu din nou, se modifica iar!!! am incercat asta de mai multe ori!!!

 

numai suport!!! cat costa un pickit2? harbu asta nici macar nu citeste ce e scris pe microcontroler!

 

 

iti multumesc mult pentru rabdare si ajutor!

Link spre comentariu

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



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări