GeoMar Postat Martie 19, 2012 Partajează Postat Martie 19, 2012 Se pare ca baza lui Q2 (BC547) NU am conectat-o cu pin 3 (TXD) al mufei seriale, scuze, dar ai spus ca ai verificat si este ok.Realizeaza un strap ca in figura (traseul rosu) si testeaza. Link spre comentariu
pop_ady44 Postat Martie 19, 2012 Partajează Postat Martie 19, 2012 tot nu merge interesant este ca am verificat piesa cu piesada nu sunt multe si toate sunt ok am incercat si cu pic 16f628 si nici pe acel nu-l recunoaste Link spre comentariu
MifTy Postat Martie 19, 2012 Partajează Postat Martie 19, 2012 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
seichter Postat Martie 19, 2012 Partajează Postat Martie 19, 2012 nu am porturile blocate,folosesc un jdm de la adelaida,compilatorul e jaledit si programul de ars e winpic(nu e winpic 800)si are viteza cea mai mare de scriere fata de ic-prog/winpic800. Link spre comentariu
seichter Postat Martie 19, 2012 Partajează Postat Martie 19, 2012 Vreau sa fac un PWM software dar mi-am prins urechile,nu stiu cum sa activez tmrO.Un exemplu ar fi super.Pe google nu am gasit mare lucru. Link spre comentariu
costi002 Postat Martie 19, 2012 Partajează Postat Martie 19, 2012 citeste cu mare atentie documentatia pic-ului si ai sa vezi cat e de simplu. Link spre comentariu
seichter Postat Martie 20, 2012 Partajează Postat Martie 20, 2012 A studiat documentatia,trebuie sa folosesc intreruperile,un ceas intern.si daca e asa de simplu de ce nu postezi un exemplu?Eu incerc sa inteleg cum se face,dar am nevoi de un pic de ajutor. Link spre comentariu
costi002 Postat Martie 20, 2012 Partajează Postat Martie 20, 2012 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
Spitfire Postat Martie 20, 2012 Partajează Postat Martie 20, 2012 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 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
seichter Postat Martie 20, 2012 Partajează Postat Martie 20, 2012 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
costi002 Postat Martie 20, 2012 Partajează Postat Martie 20, 2012 poate daca imi spui cam ce vrei sa faci, o sa ma gandesc si eu un pic, asa de curiozitate sa vad ce iese. din cate imi aduc aminte, parca am facut si eu tot pe pic fara PWM, 2 canale de PWM. Link spre comentariu
seichter Postat Martie 20, 2012 Partajează Postat Martie 20, 2012 vreau sa reglez intensitatea unui led,apoi dezvolt schema cu un tranzistor si comand un bec sau motoras. Link spre comentariu
costi002 Postat Martie 21, 2012 Partajează Postat Martie 21, 2012 vrei comanda sa fie pe un singur canal? Link spre comentariu
seichter Postat Martie 21, 2012 Partajează Postat Martie 21, 2012 pt inceput da,apoi o sa dezvolt. Link spre comentariu
Liviu M Postat Martie 21, 2012 Partajează Postat Martie 21, 2012 Poate ca nu folosesti functiile care trebuie? include pwm_hardware 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