Sari la conținut
ELFORUM - Forumul electronistilor

incepator pic


mihaipadawan

Postări Recomandate

Din ce scrie in manualul de la picc, ar trebui sa poti programa OSCCAL in cod.

Incearca sa modifici main() ca mai jos

void main(void){    OSCCAL = 0x34FF;    // ce era deja in main}
Poate ai noroc si merge.

 

LE Referitor la programator, ar trebui sa mearga fix ca un pickit2. Daca nu poti citi ce scrie in pic (nu merge nici cand picul e programat cu programul care altfel functioneaza?), inseamna ca ai si alte probleme.

 

LLE Am comparat cele doua cuvinte de configuarere (programul asta si cel care merge) si am ajuns la concluzia ca difera doar MCLR (pus pe disable in programul care merge si in ultimul meu __CONFIG) si la BOR, pus pe disable in programul care merge si activ la mine.

Asa ca daca scrii

__CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO);
, cuvatul de configurare ar trebui sa fie acelasi 0184 si la programul care merge si la cel care nu. Daca tot nu merge...
Link spre comentariu
  • 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

LE Referitor la programator, ar trebui sa mearga fix ca un pickit2. Daca nu poti citi ce scrie in pic (nu merge nici cand picul e programat cu programul care altfel functioneaza?), inseamna ca ai si alte probleme.

da, cand dau read (la pic) afiseaza o porcarie, dau un shot imediatsi modific codul imediatLE: am uploadat.deci am scris picul cu b657i-1.hex. am si testat, clipeste un led legat intre pinii 7 si 8. i am dat read si inafara de primele 2 spatii de memorie arata numai 0000. are toane programatorul ori eu gresesc ceva grav.imediat testez si codul

post-53541-13982930144_thumb.jpg

Link spre comentariu

Vezi ca l-am mai modificat o data. :rade:

 

Hm, interesant, cumva cumva reusim sa protejam picul la citire.

Ce zice el (si reiese si din CONFIG WORD-ul pe care-l afiseaza - 0084) e ca picul e protejat la citire (bitul 8 e zero), asa ca e normal ca pickit2-ul sa nu-l poata citi.

Intrebarea e, de ce e picul protejat la citire, ca atunci cand scrii in el, CONFIG WORD-ul e corect (bitii 7 si 8 sunt 1).

Vorbim aici despre variabila UNPROTECT din __CONFIG.

N-am deloc idee ce se intampla acolo. :(

Incearca te rog inca o data cu

__CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO & 0x0FFF);
LE Si dupa ce-l modifici, mai pune te rog un screen-shet cu fereastra programatorului dupa programare.
Link spre comentariu

#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 & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO);void main(void){	OSCCAL = 0x34FF;	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);	}}

nimic, e mort! nu face nimic...

 

 

ma uit pe data sheet acum, la pagina 21-22

 

LE: imediat vine print screenu

post-53541-139829301451_thumb.jpg

Link spre comentariu

Mai incearca, te rog, si ultimul CONFIG (ultimul meu post) si incearca sa citesti picul. Dupa asta te las in pace.

da asta am facut, am dat build acum il pun pe pic. nu trebuie sa ma rogi, eu te rog pe tine :88
Link spre comentariu

am incercat sa arat tot ce fac. observi este hexul de la 5 si 17. excat acela facut in screen shotu cu programu...LE: dau un refrest si vad vizualizat de 4 ori la uploaduri. avem spectatori :da

post-53541-139829301482_thumb.jpg

post-53541-139829301493_thumb.jpg

post-53541-139829301504_thumb.jpg

post-53541-139829301515_thumb.jpg

post-53541-139829301539_thumb.jpg

Link spre comentariu

Hm, se pare ca mi-am gasit de lucru deseara. Sper sa-mi fac niste timp sa ma joc si eu putin, ca e interesant ce se intampla. Iti arata 0084 la configuration word de fiecare data (ar trebui sa-ti arate 0184), desi toate define-urile mie mi se par corecte. Din pacate acum trebuie sa te las sa te chinui singur mai departe.Inceara sa te prinzi de ce nu merge numai cu si are nevoie de toate define-urile alea pe care le-ai adaugat de mana (in principiu e treaba de C, nu de microcontrolere). Succes!

Link spre comentariu

Hm, se pare ca mi-am gasit de lucru deseara. Sper sa-mi fac niste timp sa ma joc si eu putin, ca e interesant ce se intampla. Iti arata 0084 la configuration word de fiecare data (ar trebui sa-ti arate 0184), desi toate define-urile mie mi se par corecte. Din pacate acum trebuie sa te las sa te chinui singur mai departe.Inceara sa te prinzi de ce nu merge numai cu si are nevoie de toate define-urile alea pe care le-ai adaugat de mana (in principiu e treaba de C, nu de microcontrolere). Succes!

nici o problema! merci mult! mai umblu, insa iau o pauza ca sa ma deconectez pentru ca ma doare capul putin.
Link spre comentariu

La mine varianta

#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();__CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO);void main(void){      TRIS4=1;                // Alternativ poti folosi TRISIO ca sa modifici toti bitii odata   TRIS5=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);   }}
se compileaza fara probleme.

Poti te rog sa urci pe site fisierul pic12f6x.h de la tine din include?

Link spre comentariu

...\HI-TECH Software\PICC\9.82\includeIar asta primesc cand compilez cu codul postat de tine:

Build E:\Projects pic\LED1 for device 12F629Using driver C:\Program Files (x86)\HI-TECH Software\PICC\9.82\bin\picc.exeMake: The target "E:\Projects pic\main.p1" is out of date.Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\9.82\bin\picc.exe" --pass1 "E:\Projects pic\main.c" -q --chip=12F629 -P --runtime=default,+clear,+init,-keep,+osccal,-download,-resetbits,-stackcall,+clib --opt=default,+asm,-debug,-speed,+space,9 --warn=0 -D__DEBUG=1 --rom=default --ram=default --double=24 --float=24 --addrqual=ignore -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" Error [192] E:\Projects pic\main.c; 9.1 undefined identifier "TRIS4"Error [192] E:\Projects pic\main.c; 10.1 undefined identifier "TRIS5"********** Build failed! **********

in primul post am scris ce compilator am
Link spre comentariu

Hm, desi avem acelasi compiler, cele doua versiuni ale noastre arata/se comporta total diferit. De vina s-ar putea sa fie noul ide (mplabx) pe care il are microchip pe teava.

Codul pentru tine ar trebui sa fie:

 

#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();__CONFIG(CPD_OFF & CP_OFF & BOREN_OFF & MCLRE_OFF & PWRTE_OFF & WDTE_OFF & FOSC_INTRCIO);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);   }}
Altfel, codul e functional. L-am scris intr-un 12f675 (ca n-am 12f629) si am modificat MCLR_ON in __CONFIG() ca altfel nu-mi mergea ICD2 (si extern am legat, in plus fata de circuitul tau, o rezistenta intre VDD si MCLR si o rezistenta intre pinul 2 al picului si led) si ledul palpaie fericit.

De rezistenta intre MCLR si VDD n-ai avea nevoie, ca de-aia am facut MCLR_OFF in __CONFIG.

De citit datele din pic iarasi pot. Acum, daca folosim variabilele corecte, poate merge si la tine.

Link spre comentariu

da se compileaza programul ala. i am dat build si l am pus pe pic. configuration la softul de programat a fost 0194.nu se aprinde ledul... modific GPIO5 cu GPIO0 pentru pinul 7? poate o fi stricat pinul 2 sau ceva:-??zilele astea imi cumpar alt pic, poate e el de vina... si imi iau si unu 16f84 ca sa am multe tutoriale la indemana

post-53541-13982930157_thumb.jpg

Link spre comentariu

In cazul in care vrei sa folosesti alt pin, trebuie sa:- reconfigurezi registrul TRISIO a. i. pinul dorit sa aiba directia care trebuie (0 inseamna iesire, 1 inseamna intrare).- sa configurezi eventualele intrari analogice in digitale (12f629 are si un comparator. GPIO0..GPIO2 sunt, dupa reset, intrari/iesiri analogice). Asa ca trebuie sa schimbi si CMCON. Cred ca CMCON = 0x07 e o valoare tocmai buna (vezi in data sheet capitolul despre comparator).LE Cu noul cod reusesti sa citesti picul?LLE Cred totusi ca incercarile astea au fost instructive. Cred ca te-ai prins cam pe unde sa te uiti cand iti trebuie cate ceva. Cu __CONFIG, de exemplu, a fost suficient sa ma uit in fisierul .h care trebuie ca sa gasesc definitiile corecte si sa le folosesc. Cam la fel trebuie facut cam cu toate "problemele" - solutiile sunt in documentatii, trebuie numai corect cautate.Mult succes in continuare!

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