Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 Puna __CONFIG inainte de main (la fel ca pe #include ...). Link spre comentariu
mihaipadawan Postat August 18, 2011 Autor Partajează Postat August 18, 2011 #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
Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 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
mihaipadawan Postat August 18, 2011 Autor Partajează Postat August 18, 2011 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
Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 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
mihaipadawan Postat August 18, 2011 Autor Partajează Postat August 18, 2011 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? Link spre comentariu
Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 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
mihaipadawan Postat August 18, 2011 Autor Partajează Postat August 18, 2011 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 Link spre comentariu
Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 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
mihaipadawan Postat August 18, 2011 Autor Partajează Postat August 18, 2011 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
Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 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
mihaipadawan Postat August 18, 2011 Autor Partajează Postat August 18, 2011 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
Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 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. 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. 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
Liviu M Postat August 18, 2011 Partajează Postat August 18, 2011 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? Tools -> Set OSCCAL Set OSCCAL Allows the OSCCAL value to be changed for devices where it isstored in the last location of Program Memory. Link spre comentariu
mihaipadawan Postat August 18, 2011 Autor Partajează Postat August 18, 2011 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. 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? Tools -> Set OSCCAL Set OSCCAL Allows the OSCCAL value to be changed for devices where it isstored 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
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum