Sari la conținut
ELFORUM - Forumul electronistilor

Probleme cu primul program


Romica_t

Postări Recomandate

Gata, a mers :aplauze .mpasmwin nu era bine pusa calea, era calea din MPLAB si nu cea din C18. Am schimbat MPLAB-ul cu ultima versiune cat si C18-le V2.20 cu Student Edition. Prima versiune de C18 avea lipsa chiar si headerul stdio :P.Astept sa ajunga clona pickit2 si o sa trec mai departe cu lucrul. Multumesc de ajutor.

Link spre comentariu
  • Răspunsuri 31
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Romica_t

    13

  • Liviu M

    7

  • MifTy

    4

  • GeoMar

    2

Top autori în acest subiect

Imagini postate

Am ridicat pachetul, e OK.Problema e ca la conectare imi da un avertisment (a doua poza), dupa ce dau ok imi scrie PicKit 2 Ready. Asta se intampla cu sau fara ZIF-ul atasat.Iar cand incerc sa programez imi da acelasi avertisment. Dupa ce dau OK becul rosu se stinge si apare o eroare (prima poza). Aceeasi chestie se intampla cu sau fara ZIF, ca si cand nu sesizeaza prezenta Zif-ului si implicit a pic-ului. PIC-ul ce vreau sa-l scriu e 18F2550.Unde am gresit? Va rog sa ma ajutati.

post-7097-139829433884_thumb.jpg

post-7097-139829433891_thumb.jpg

Link spre comentariu

S-a rezolvat si problema asta, pinii dintre programator si ZIF nu faceau bine contact. Am programat PIC-ul dar nu face nimic pus in circuit. Acesta e codul sursa#include #pragma config WDT = OFFvoid main (void){TRISB = 0;while (1){/* Reset the LEDs */int i=0,del=0;PORTB = 0;for(i=0;i<=10000;i++) del=del+1;/* Light the LEDs */PORTB = 0x5A;for(i=0;i<=10000;i++) del=del+1;}}Fereastra View/Program Memory nu se schimba chiar daca il sterg si apoi il rescriu. Sa fie asta un semn ca nu il scrie?

Link spre comentariu

Atasez poze cu montajul de proba, am pus oscilator de 20Mhz, doi condensatori de 22pF, un cond de 100n pe alimntare intre Vdd si Vss, o rezistenta de 10k de la Vdd la MCLR si un fir de reset de la MCLR la Vss. Alimentarea se face cu 5V stabilizati. Ar mai trebui altceva? Va rog ajutati-ma cu ceva sfaturi. Cand pun PIC-l in soclu nu se intampla nimic, oricat i-as da reset.

post-7097-139829435673_thumb.jpg

post-7097-139829435684_thumb.jpg

post-7097-139829435695_thumb.jpg

Link spre comentariu

Inca nu am ajuns sa realizez programe pentru PIC18F insa nu vad la programul tau configuratiile pentru FOSC, reset , LVP si alte setari care tin de biti de configurare. Insa am gasit pe net cateva programe de test la http://erricous.free.fr/ELECTRON/test4550_en.html. Are exemple simple scrise atat in assembler cat si in C. Sper sa te ajute sa intelegi cum se face configurarea si initializarea uC-lui.

Link spre comentariu

Pai ar mai fi asa:

- n-ai configurat nicaieri oscilatorul, asa ca sunt sanse sa nu fie chiar cum te astepti tu (da' te prinzi cand te uiti in data-sheet). In C18 asta se face cam asa (da' trebuie sa mai verifici cu data-sheetul, ca fiind copiat dintr-un alt proiect s-ar putea sa nu fie chiar ce-ti trebuie tie):

/** CONFIGURATION **************************************************/        #pragma config PLLDIV   = 5         // (20 MHz crystal on PICDEM FS USB board)        #pragma config CPUDIV   = OSC1_PLL2           #pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2        #pragma config FOSC     = HSPLL_HS

- n-ai dezactivat partea analogica. Daca tin eu minte bine, la seria asta si portul B e multiplexat - aceeasi pini pot, in functie de configuratie, I/O digitale sau analoge (ADC, comparatoare)...

Si pentru asta am niste cod, da' tot asa, trebuie verificat:

     ADCON1 |= 0x0F;                 // Default all pins to digital
Bucata asta merge in main, inainte de TRISB=0;

Si o mica observatie:

- la familia 18F se recomanda folosirea registrilor LAT pentru iesiri (adica atunci cand vrei sa modifici o iesire, scrii

LATB=0x00;
in loc de

PORTB=0x00;
Din motive de compatibilitate cu picurile mai vechi/programele existente functioneaza si cum ai scris tu, da' folosirea registrilor LAT te scapa de niste batai de cap (daca esti curios cauta read-modify-write cu gogu).

 

PS Ce lent sunt. :nas:

Link spre comentariu
:aplauze Multumesc baieti, mai ales Liviu M.Am adaugat toate directivele voastre si a functionat din prima, apoi am ales sa scot rand pe rand din ele si am ramas la varianta aceasta:#include #pragma config PLLDIV = 5 // (20 MHz crystal on PICDEM FS USB board)#pragma config CPUDIV = OSC1_PLL2 #pragma config USBDIV = 2 // Clock source from 96MHz PLL/2#pragma config FOSC = HSPLL_HS#pragma config WDT=OFF void delay(void){ unsigned int i; for(i=0; i<40000; ++i);}void main(void){ ADCON1 |= 0x0F; TRISB=0; LATB=0x00; while(1) { delay(); ++LATB; }}Problema ce o am acum e ca ledul nr. 6 nu se apinde deloc, am verificat cu voltmetrul direct pe pinul pic-ului dar ramane tot la 0V. In simulare acest bit trece prin 1. Vreo parare...?
Link spre comentariu

Ledul nr 6 este conectat la RB5 ????? Ca daca este asa citeste mai bine in datasheet capitolul Low Voltage Programming (LVP). Nu vad in codul tau ce se intampla cu bitul LVP si nu am gasit care este starea default dupa reset. Ma asteptam la o instructiune de genul "#pragma config LVP=OFF". Nu prea am idee cum ai conectat ledurile ( la VDD sau VSS?).

Link spre comentariu

Ledul nr 6 este conectat la RB5 ????? Ca daca este asa citeste mai bine in datasheet capitolul Low Voltage Programming (LVP). Nu vad in codul tau ce se intampla cu bitul LVP si nu am gasit care este starea default dupa reset. Ma asteptam la o instructiune de genul "#pragma config LVP=OFF". Nu prea am idee cum ai conectat ledurile ( la VDD sau VSS?).

Corect! Asta era problema. Cand am testata prima data nu am urmarit fiecare led, m-am bucurat si apoi am inceput sa simplific programul stergand din directive. Directiva "#pragma config LVP=OFF" este necesara. Acum numara bine. Se pare ca am inceput cu un PIC nu tocmai simplu. In pdf-ul de initiere in C18 nici nu aminteau de directivele astea desi se folosea deja placa de dezvoltare la pagina unde am ajuns. Multumesc mult de ajutor, s-ar putea sa mai am nevoie de sfturi cat de curand.
Link spre comentariu

Ce vreu eu sa mai zic e ca atunci cand vezi ca un port nu face ce te astepti, sa verifici in data-sheet ce functii mai stie el si sa incerci sa le dezactivezi pe cele nedorite/sa le activezi pe cele dorite. De cele mai multe ori (Murphy sta tot timpul la panda) functiile default sunt cele care nu-ti trebuie tie.

Link spre comentariu

Imi bat capul acum sa comand un led folosind un comutator:#include #pragma config PLLDIV = 5 // (20 MHz crystal on PICDEM FS USB board)#pragma config CPUDIV = OSC1_PLL2 #pragma config USBDIV = 2 // Clock source from 96MHz PLL/2#pragma config FOSC = HSPLL_HS#pragma config WDT=OFF #pragma config LVP=OFF void delay(void){ unsigned int i; for(i=0; i<40000; ++i);}void main(void){ADCON1 |= 0x0F;TRISB=0x10000000;LATB=0x00;while(1) { if(LATBbits.LATB7==0) { delay(); if(LATBbits.LATB7==0) LATBbits.LATB6=1; } }}Nu functioneaza nici cum. Am incercat si alte porturi (A0). Ce anume mai trebuie adaugat?

Link spre comentariu

Dupa cum am mentionat si in mesajul anterior (unul din ele), LATx se foloseste pentru iesiri. Ca sa testezi o intrare, folosesti in continuare PORTx.Cum e conectat butonul la pin?

Link spre comentariu
:aplauze Multumesc inca o data. Pana la urma asa l-am facut, ledul sta aprins cat e apasat butonul:void main(void){ADCON1 |= 0x0F;TRISB=0x80;LATB=0x00;while(1) { if(PORTBbits.RB7==0) { delay(); if(PORTBbits.RB7==0) { while(PORTBbits.RB7==0)LATBbits.LATB6=1; LATBbits.LATB6=0; } } }}Pinul e legat la Vdd prin 20k iar cand se apasa butonul, pinul se leaga la Vss(0 logic).
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