Sari la conținut
ELFORUM - Forumul electronistilor

Cum sa programez un PIC


Postări Recomandate

  • Răspunsuri 602
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

Mplabul lucreaza cu un programator JDM?Din lista aia am incercat toate si nu merge.

pe xp și win7 mai trebuie și să ”descui” accesul direct la portul serial... în win98 nu aveai problema asta, aveai acces direct atât la COM (serială) cât și la LPT (paralelă)...dacă vrei să folosești ca programator una din multele variante JDM, folosești ceva gen winpic800, ponyprog, etc, ca soft de programare, și cauți pe internet progrămelul care o să-ți ”deschidă” porturile COM/LPT, by default, ”închise” de sistemul de operare...
Link spre comentariu

ce pic folosesti? ce limbaj de programare?LE:M-am tot gandit si razgandit si nu cred ca ai cum sa generezi un PWM doar cu o intrerupere.Oricum, iti spun pasii ce trebuie facuti pentru activarea TMR0.Registrii folositi de TMR0 sunt, in cazul lui 16f88:- TMR0 - cand acesta ajunge la 255+1 genereaza intrerupere. aici, daca vrei sa ai timpi mai scurti, poti baga o valoare dupa fiecarea generare de intrerupere- INTCON - ca sa ai intrerupere la fiecare overflow a lui TMR0 trebuie sa ai setati biti GIE, PEIE, si TRM0IE. Bitul TMR0IF se face 1 cand registrul TMR0 face overflow. Acesta, trebuie resetat in rutina de intrerupere.OPTION_REG - bitul 5 trebuie sa fie 0 ca sa foloseasca ceasul intern al pic-ului. Daca vrei sa folosesti prescaler trebuie ca bitul 3 sa fie 0 si implicit folosesti biti 0,1 si 2 ca sa ii spui ce raport sa aiba prescaler-ul.Acum ca ai setat cei 3 registri, trebuie sa iti faci o rutina care sa fie apelata la fiecare generare de intrerupere. Pentru asta, ai putea sa folosesti :ISR ORG 0x0004 ; interrupt vector location; Context saving for ISR MOVWF W_TEMP ; save off current W register contents MOVF STATUS,W ; move status register into W register MOVWF STATUS_TEMP ; save off contents of STATUS register MOVF PCLATH,W ; move pclath register into W register MOVWF PCLATH_TEMP ; save off contents of PCLATH register;------------------------------------------------------------------------------; USER INTERRUPT SERVICE ROUTINE GOES HEREcall rutina care vrei sa fie rulata la fiecare intrerupere aici trebuie sa fie printre altele si banksel INTCONbcf INTCON,TMR0IF;------------------------------------------------------------------------------; Restore context before returning from interrupt MOVF PCLATH_TEMP,W ; retrieve copy of PCLATH register MOVWF PCLATH ; restore pre-isr PCLATH register contents MOVF STATUS_TEMP,W ; retrieve copy of STATUS register MOVWF STATUS ; restore pre-isr STATUS register contents SWAPF W_TEMP,F SWAPF W_TEMP,W ; restore pre-isr W register contents RETFIE scuze de postul prea lung. sper sa ma fi facut inteles. daca nu, da un semn.spor la treaba

Link spre comentariu

da multe scuze :jytuiyuam uitat cu graba toate piesele sunt ok oare sa fie de la tranzistoare?ca sunt ctbc548c 2 bucati si bc5571 buct :sparge:

Daca ati montat tranzistorii corect, nu e nici o problema, merg orice BC NPN. Problema ar putea fi lipsa alimentarii, mai bine il faceati cu alimentare externa de 5V, portul serial poate fi mai slab de felul lui, la acel calculator ...
Link spre comentariu

Multumesc pentru timpul acordat Costi.Pic 16F88 are un canal PWM hardware din fabrica,vreau sa fac PWM la un Pic(12f675/629)care nu are canal PWM hardware.Se poate deoarece am un montaj in fata care face PWM pe 4 iesiri si este un 12F629,protejat la citire, e un montaj cumparat de la "Adela".Uite ce am reusit sa fac pina acum 4 zile,si de atunci ma tot invirt roata ca nu-i dau de cap la PWM din soft.Dupa cum am mai spus limbajul e JAL,picul e 12F629,iar ce am reusit pina acum e pt un pic cu canal PWM hardware.include 16f628ainclude chipdef_jallibpragma target clock 4_000_000 pragma target OSC INTOSC_NOCLKOUT pragma target WDT disabled pragma target LVP disabled pragma target MCLR internalenable_digital_io()include delayalias incrementare is pin_A2 --buton +alias decrementare is pin_A3--buton -alias pornire is pin_B0--buto pornire pwmpin_B0_direction=inputpin_A2_direction=inputpin_A3_direction=inputinclude pwm_hardware pwm_max_resolution(1) pwm1_on() forever loop if pornire==0 then --//--porneste pwm pin_ccp1_direction = output forever loop var byte i i = 0 while i < 25000 loop --250 --//--orice valoare daca valoarea incrementarii este 1 pwm1_set_dutycycle(i) --//-- creste intensitatea de la 0% la 100% delay_1ms(250) i = i --//--ca iesirea PWM sa ramina intr-o stare permanenta ca valoare --//-- valoarea lui i este egala cu i. if incrementare==0 then i=i+10 end if if decrementare==0 then i=i-10 end if end loop end loopend ifend loop

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