Silviu Sprinceana Postat Ianuarie 25, 2008 Partajează Postat Ianuarie 25, 2008 la un 12F629, dar la care CP_ON mai poate fi citit? Link spre comentariu
Abram Burel Postat Ianuarie 25, 2008 Partajează Postat Ianuarie 25, 2008 E o propozitie cam ciudata, dar incerc un pronostic:E la fel ca la 12F675, adica NU! De fapt e la fel si la 12F... si la 14F... si la 16F... si la... si la... :( Link spre comentariu
Vizitator blueboy35 Postat Iunie 7, 2008 Partajează Postat Iunie 7, 2008 nu stiu daca e cel mai bun loc pentru postul asta dar poate ajuta pe cineva povestea mea cu rezolvatu unui pic am avut si eu o problema cu un 12f629(asemanator cu 12f675 dar fara convertor A/D) E primul pic pe care incerc sa-l programez si nu mi'a mers din prima... Mi-am construit singur un programator asemanator cu o schema de COM84 gasita pe net. Am incercat sa citesc picul...balarii...poate nu'i bun programatoru', poate n'am configurat bine winpic... verificat diverse configuratii winpic(am crezut ca n'am acces la port pe XP...dar pana la urma, inlocuind o dioda din schema cu un led, am observat ca se aprinde daca testez interfata...deci aveam acces) am mai facut rost de un zener de 5.1...tot n'a mers da' macar tensiunile semanau mai mult cu alea cerute la data sheet/programming specs am mai bagat un condensator si....evrika... am reusit sa citesc osccal. bun...acu sa m'apuc de treaba Copy/paste de pe net la un program care cica blink'uie un led... corectat greselile aparute la compilare cu mpasm... am ars programul pe pic, verificat...ok facut schema(pic, baterie, rezistanta, led) conectat bateria si....n'a mers dupa multe incercari, reajustari ale programului, etc, crezand ca am ars picul(pt ca l'am alimentat pe dos la un moment dat si s'a incalzit) am dat de topicul asta si m'am inspirat dintr'un program postat aici sa vad unde gresesc. am rescris programul meu, sa arinda ledul si atat si am reusit. Diferentele erau urmatoarele(nu stiu exact care din ele e aia care m'a rezolvat): - eu foloseam _MCLRE_OFF...incercand sa reduc numarul de componente externe - aveam brown out detect pe off...nu cred ca era de la asta - aveam o portiune de cod incepand cu ORG 4 pe care am taiat'o...ceva cu interrupt vectors...am considerat ca n'aveam nevoie - label'urile n'aveau :(poate de la asta...) - aveam scrisa o rutina de delay mai ciudata dar oricum n'o apelam...cred dupa ce am facut toate modificarile astea, a mers. v'am zis ca nu stiu exact care era problema. cand o sa am timp, o sa testez diverse combinatii poate imi dau seama care din ele era fatala...sau poate stie cineva care a mai trecut prin asta. Link spre comentariu
Vizitator blueboy35 Postat Iunie 7, 2008 Partajează Postat Iunie 7, 2008 aaa...daca intereseaza pe cineva schema...e destul de simpla...3 rezistente, un led, un zenner,un stabilizator si un condensator. Link spre comentariu
Vizitator blueboy35 Postat Iunie 7, 2008 Partajează Postat Iunie 7, 2008 Mai am niste nelamuriri.Cat de bine se descurca winpic cu bitii de configuratie?Compilez un program in mpasmin, incarc hexul in winpic si daca incerc sa il scriu pe pic, imi da o eroare la bitii de configuratie.Dupa o studiere mai atenta, observ ca la unul din campurile de configuratie(RESERVED) imi zice invalid combination. daca selectez acolo reserved, programeaza fara erori.Fac eu o greseala, sau e un bug undeva?...ma gandesc ca mpasm scrie gresit niste biti in hex si ca picul ii ignora(fiind rezervati) si de aceea, la verificare, da eroare.Si inca o intrebare...cat de importanti sunt bitii de bandgap?multumesc Link spre comentariu
Vizitator zundapp Postat Mai 4, 2009 Partajează Postat Mai 4, 2009 Poate ma ajuta cineva... Mai jos este o parte dintr-un programel. Secventa descrisa ar trebui sa aprinda un LED timp de 3 minute. In realitate LED-ul sta aprins ~2'45". De programat il programez cu un programator "original" (PicKit...) care cica salveaza valoarea aia de calibrare a oscilatorului si a BandGap-ului... Are cineva idee unde gresesc? Multumesc! ==================================================================== #include "p12f675.inc" __CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT org 0x00 clrf GPIO ;*******************************BANK 1******************************* bsf STATUS, RP0 clrf PCON movlw b'10000111' movwf OPTION_REG clrf WPU clrf ANSEL movlw b'00001111' movwf TRISIO cblock 0x20 AA BB CC endc ;*******************************BANK 0******************************* bcf STATUS,RP0 movlw b'00000111' movwf CMCON clrf ADCON0 movlw b'10000000' movwf INTCON __START clrf AA clrf BB clrf CC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; bsf GPIO, GP4 clrf TMR0 bcf INTCON, T0IF __k btfss INTCON, T0IF goto __k call __INCREMENT ;************ 2747*65.536ms=3min // [bB][AA]=[10][187]=180.000ms (3minute) __88 movlw d'10'; subwf BB, 0 btfss STATUS, 2 goto __33m1 movlw d'187' subwf AA, 0 btfsc STATUS, 2 goto _PPP __33m1 btfsc INTCON, T0IF call __INCREMENT __33m2 clrwdt goto __k _PPP bcf GPIO, GP4 goto _PPP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; __INCREMENT bcf INTCON, T0IF incf AA clrw subwf AA, 0 btfss STATUS, 2 goto __H incf BB clrw subwf BB, 0 btfss STATUS, 2 goto __H incf CC __H ;clrwdt return end ==================================================================== Link spre comentariu
sofian Postat Mai 4, 2009 Partajează Postat Mai 4, 2009 degeaba o salveaza daca tu nu o folosesti trebuie sa setezi oscilatorul cu valoarea din fabrica ptr 4Mhz call 0x3FFmovwf OSCCAL definirea de variabile nu se face in mijlocul programului Link spre comentariu
Vizitator zundapp Postat Mai 4, 2009 Partajează Postat Mai 4, 2009 S?ru'-mâna!"Merge" 3 minute dom'le...De care variabile vorbesti?Multumesc! Link spre comentariu
sofian Postat Mai 5, 2009 Partajează Postat Mai 5, 2009 de astea : cblock 0x20AABBCCendc Link spre comentariu
Vizitator zundapp Postat Februarie 13, 2013 Partajează Postat Februarie 13, 2013 Ma mai chinuie un program... Masor tensiunea pe o intrare analogica la intervale de 500ms si daca diferenta intre 2 masuratori succesive este mai mare decit un prag ->BEEP, daca nu... nu. intrarea analogica e conectata la Vdd (din disperare!) masor intrarea analogica ADRESH=>M1 astept 500ms masor intrarea analogica ADRESH=>M2 scad cele 2 valori: M2-M1=DIF compar diferenta cu un prag DIF-PRAG daca DIF>PRAG ---> BEEP goto M1 daca DIF M2 devine M1 masor un nou M2 _________________ ignor ADRESL... PROGRAMUL: ;Pin functions for PIC 12F675 ; ; Vdd -|1 8|- Vss ; -|2 7|- GP0/IN_AN ; -|3 6|- GP1/OUT ; -|4 5|- ;*********************************************************************************** ;*********************************************************************************** #include "p12f675.inc" __CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT org 0x00 cblock 0x24 M1 M2 DIF PRAG endc bsf STATUS, RP0 clrf PCON clrf PIE1 call 0x3FF movwf OSCCAL movlw b'00001111' movwf OPTION_REG movlw b'00111101' movwf TRISIO movlw b'11111101' movwf WPU movlw b'11010001' movwf ANSEL bcf STATUS, RP0 movlw b'00000111' movwf CMCON ;================================================================================ _START movlw d'20' movwf PRAG ;-----------M1-------------- _M1 call __START_ADC ;start conversie movf ADRESH, 0 ;[ADRESH]>>[W] movwf M1 ;[W]>>[M1] ;---------------------------- _1 call _dly500ms ;-----------M2-------------- _M2 call __START_ADC ;start conversie movf ADRESH, 0 ;[ADRESH]>>[W] movwf M2 ;[W]>>[M2] ;---------------------------- ;[M2]-[M1]=[DIF] // compar [DIF]cu [PRAG] clrf DIF clrw addwf M1, 0 ;[M1]+0=[W] subwf M2, 0 ;[M2]-[M1]=[W] btfss STATUS, 0 goto _X ;[M2]<[M1] addwf DIF, 1 ;[W]+[DIF]=[DIF] // [M2]-[M1]>>[DIF] clrw addwf PRAG, 0 ;[PRAG]+0=[W] subwf DIF, 0 ;DIF-[PRAG]>>W btfss STATUS, 0 goto _X ;DIF call _BEEP ;DIF>=PRAG goto _M1 _X movf M2, 0 ;[M2]>>[W] movwf M1 ;[W]>>[M1] goto _1 ;================================== __START_ADC ;start conversie bcf PIR1, 6 ;[x1xx.xxxx] The A/D conversion is complete (must be cleared in software) movlw b'00000001' ;[xxxx.xxx1]= A/D converter module is operating movwf ADCON0 ;[xxxx.xxx0]= A/D converter is OFF ;[xxxx.xx1x]= START A/D conversion. This bit is automatically cleared by hardware when the A/D conversion has completed. ;[xxxx.00xx]= select channel 0/GP0/AN0 pin7 ;[0xxx.xxxx]= Left justified; [1xxx.xxxx]= Right justified ;[x0xx.xxxx]= Vref=Vdd bsf ADCON0, 1 ;[xxxx.xx1x]= START A/D conversion _cv CLRWDT btfss PIR1, 6 goto _cv bcf PIR1, 6 return ;================================== _BEEP bcf GPIO, GP1 ; call _dly500ms bsf GPIO, GP1 return ;************************************** Delay loops **************************** _dly500ms ;........ return ;*********************************************************************************** end Cum se comporta: Dupa primele 2 conversii (M1 si M2) diferenta M2-M1 muta M2 in M1 face conversie pentru M2 M2-M1>PRAG ????????????? face conversii pentru M1 si M2 si M2-M1 muta M2 in M1 face conversie pentru M2 M2-M1 etc. Nu inteleg de ce imi da acea diferenta M2-M1>PRAG atit timp cit intrarea analogica e legata la VDD Ii pusesem si un delay initial de... 10 secunde (sa se calmeze alimentarea=baterie...) - nu l-am "impresionat" Multumesc! 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