Sari la conținut
ELFORUM - Forumul electronistilor

Probleme programare PIC18F2550


Postări Recomandate

Buna seara !

 

Am schimbat picul de curand, pentru ca am nevoie de viteza ( si asta suporta din ce am vazut frecventa pana la 48Mhz ), e vorba de citirea unor senzori si am nevoie sa se miste cat mai repede posibil.

 

Am cristale de 4,15,20 si 48 Mhz.

 

Darnu reusesc cu niciunul sa il fac sa mearga.

 

In rest totul e corect, sunt sigur, nu e prima data cand folosesc picuri, doar ca asta are foarte multi configuration bits si nu reusesc sa il fac sa mearga.

 

Folosesc MikroC si Pickit2 ( daca are vreo relevanta ).

 

Daca puteti sa ma ajutati, as aprecia, mutlumesc mult si o seara buna !

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

Top autori în acest subiect

Pai am tot schimbat alea, cum ar trebui sa fie?

 

Posted Image

void main() {
            CMCON = 0x07; // Disable comparators
ADCON1 = 0x0F; // Disable Analog functions
TRISA=0;
while(1){
         PORTA.F0=0;
         Delay_ms(100);
         PORTA.F0=1;
         Delay_ms(100);
}
}
 
 
Asta e codul de test. Ca pana acum ma chinuiam sa interfatez picul cu un driver pentru motoare ( L298 ), si cu alt pic reuseam, dar aveam nevoie de unul sa aiba 2 pini de PWM ( CCP ), ca sa pot sa le " egalez " ca viteza.  M-am chinuit o zi si dupa am realizat ca paote nu e bine configurat picul... 

Vad ca daca adaug si OSSCON=0x70; imi merge bine, dar eu la pic16f690 si la alte picuri folosite nu adaugam nimic legat de oscilator in cod.  Si care ar fi codul pentru oscilator de 48 de Mhz in cazul asta? Ca asta 0x70 cred ca epntru 8 Mhz. Incerc sa vad logica din 0x70 dar nu o vad, banuiesc ca e doar un cod. daca transform in decimal, nu da 8 Mhz. 

Link spre comentariu

3 chestii de verificat:

1. De ce frecventa definita este de 15MHz (am reusit cu greu sa vad valoarea ta in poza minuscula).

2. Ai in configurare un PORTA/D enable. Cum e la tine.

3. MCLR - cum e configurat si cum este legat hardware.

 

Iti atasez ceva functional (configuratie) cu 18F2550.

18F2550.rar

Editat de thunderer
Link spre comentariu

Acolo testam cu un cristal de 15 mhz.. De asta era pusa 15mhz. Scuze pentru poza.

 

Pai ce inseamna mai exact cu PORTB A/D ( portb analog/digital?) dar de ce are o cinfugratie aici in loc sa il faci analog digital din ANCON?

 

MCLR legat printr-o rezistenta de 10k la ground.

Mai am o problema pic-ul ebine pus in circuit, insa nu imi da decat 0.98 v pe iesiri ( si pe ccp1/ccp2 si pe RB-uri ).

 

void main() {
            CMCON = 0x07; // Disable comparators
ADCON1 = 0x0F; // Disable Analog functions
TRISA.F1=1;
TRISA.F0=0;
TRISC.F6=0;
TRISC.F7=0;
TRISB.F7=0;
TRISC.F1=0;
TRISC.F2=0;
TRISC=0;
PWM1_Init(5000);
PWM2_Init(5000);
PWM1_Set_Duty(255);
PWM2_Set_Duty(240);
PWM1_Start();
PWM2_Start();
OSCCON = 0x70;
while(1){
PORTB.F7=1;
/*if(PORTA.F1==1){
PORTA.F0=0;
PORTC.F6=0;
PORTB.F7=1;
PORTC.F7=1;
}
else 
{
PORTB.F7=0;
PORTC.F7=0;
PORTA.F0=0;
PORTC.F6=0;
} */
}
}
 
 
 
 
Repet, programul este doar PENTRU TESTARE, nu este un algoritm gandit, momentan ma intereseaza sa functioneze corect, dupa e partea mai interesanta.
Link spre comentariu

1. MCLR daca este ENABLE in cuvantul de configuratie, trebuie legat la Vdd cu acea rezistenta, nu la ground.

2. Foloseste LATA in loc de PORT la familia 18F.

         LATA.F0=0;         Delay_ms(100);         LATA.F0=1;         Delay_ms(100);

3. OSCCON e inutil daca ai pus bine valoarea oscilatorului in Edit Project. 

4. Scuze cu PORT A/D, nu ar trebui sa aiba treaba cu problema ta, decat daca este ENABLE (in proiectul meu folosesc ADC-ul).

 

Pana nu faci acea iesire sa schimbe starea, uita de PWM-uri. Ceva este inca gresit acolo.

Editat de thunderer
Link spre comentariu

Da, MCLR-ul la Vcc, scuze, dar sunt obosit ca ma chinui cu picul asta de vreo 3-4 ore, prima data am facut montajul ma gandeam ca l-am gresit, stai si depaneaza-l... 

 

O sa incerc sa folosesc LAT in loc de PORT.

 

Mersi pentru ajutor !

 

Mai continui maine dimineata ca nu mai pot.

Editat de Iliescu Mihai
Link spre comentariu

Schema e in capul meu, ca nu o proiectez in proteus inca, e experimentala dupa cum ziceam.

 

E doar integratul, la pinii osc1 si osc2 are oscilatorul ( fara condensatori ), MCLR-ul legat printr-o rezistenta de 10k ( apropo, are vreo importanta cat de mare/mica e rezistenta asta? ), alimentarea facuta cu un LM7805 si asta e tot. E tare ciudat, acum pare ca merge oscilatorul, masor tensiunea pe un pic pe care l-am pus sa "clipoceasca" si am odata 2,20 odata 0, si tot asa, dar nu inteleg de ce nu are 5V cum ar trebui si ar fi logic sa fie...

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