bogdanel Postat Februarie 3, 2005 Partajează Postat Februarie 3, 2005 Salutare mesterilor Am shi eu o problema ca ma cam 'nevreaza: vreau o aplicatzie de comanda de triac, adica vreau un pic12f675 sa-mi comande in faza un triac. Vreau sa-mi aprinda progresiv becul, sa nu il mai arda ca e nasol de schimbat. Merge tot mai putin initzializarea portului. Vreau asa: ; GP0 analog maxi in - intrare analogica de la un cursor de potentziometru, ; GP1 analog rate in- intrare analogica de la un cursor de potentziometru, ; GP2 sync in, 3Mohm to phase- Intrerupere, de faza 0 a alimentarii ; GP3 on/off, connected to Vcc via 10Kohm resistor- nimplementat inca ; GP4 timeout shutdown reserve input jumper, uses internal pullup resistor - neimplementat ; GP5 triac pulse out, positive- ieshire de comanda a grilei triacului iata codul pentru initzializare init bcf INTCON, GIE ; disable all interrupts bsf STATUS, RP0 ; Bank 1 call 3FFh ; Get the cal value movwf OSCCAL ; Calibrate bcf STATUS, RP0 ; Bank 0 clrf GPIO ; clear port movlw 0x07 ; all digital/ no need for comparator movwf CMCON movlw 0xff ; prima secventza de test movwf GPIO ; bsf STATUS, RP0 ; bank1 dirset movlw b'00011111' ; all inputs but GP5 movwf TRISIO ; configure them bcf STATUS, RP0 ; bank0 movlw 0xff ; a doua secventza de test movwf GPIO ; bsf STATUS, RP0 ; bank1 anaset movlw b'00110011' ; AN0, AN1 analog input, rest digital, fRC ADC freq movwf ANSEL ; bcf STATUS, RP0 ; bank0 movlw b'00000001' ; enable ADC, Left justified movwf ADCON0 ; ; the timer0, timer0, GP2 must generate interrupts, so enable their interrupt movlw b'01110000' ; movwf INTCON ; enable the pheripheral interr, TMR0 and INT/GP2 bsf STATUS, RP0 ; bank1 movlw b'00000001' ; movwf PIE1 ; enable only timer1 interrupt bcf STATUS, RP0 ; return to bcf STATUS, RP1 ; bank0 movlw b'00000000' ; movwf T1CON ; timer, not enabled yet, no prescaler movlw 0x00 ; timer1 start HI byte movwf TMR1L ; movlw 0x00 ; timer1 start LO byte movwf TMR1H ; clrwdt ;Clear WDT clrf TMR0 ;and tmr0 bsf STATUS, RP0 ; bank1 movlw b'01000010' ; 8x prescaler, to TMR0 as timer, GP2 positive interr movwf OPTION_REG ; movlw b'00010000' ; WPU only GP4 movwf WPU ; bcf STATUS, RP0 ; return to bcf STATUS, RP1 ; bank0 bcf faza bcf eor ; movlw 0xFF ; test movwf GPIO ; test clrf GPIO ; test bsf GPIO, 0x05 ; test bcf GPIO, 0x05 ; test bsf INTCON, GIE ; toate secventzele de test sunt pentru a incerca controlul asupra lui GP5, shi fiecare e eshuata. chiar daca scriu pe tot portul GPIO, chiar daca fac bcf ori bsf. Portul este setat ca I/O general, dezactivat oscilator de clk, dezactivat oscilator ptr TMR1, nu este clock in ptr nimeni dar nu shtiu cine il controleaza. Unde am greshit? EDITAT: list p=12F675 radix hex include P12F675.INC __CONFIG _CPD_OFF&_CP_OFF&_BODEN_OFF&_MCLRE_OFF&_WDT_OFF&_INTRC_OSC_NOCLKOUT sa nu uit config wordul. Link spre comentariu
bogdanel Postat Februarie 3, 2005 Autor Partajează Postat Februarie 3, 2005 Stiu ca nu e bine sa itzi dai raspuns la topicul tau, mai ales ca nimeni nu mi*a raspuns inca, dar ma ... roade. Iaca ce am mai aflat pe net, tot despre GPIO lui 675: http://forum.microchip.com/tm.asp?m=69049 destul de naspa, nu? Link spre comentariu
cirip Postat Februarie 4, 2005 Partajează Postat Februarie 4, 2005 Initializeaza CMCON si ANSEL *inainte* sa incerci sa te joci cu GPIO. Cele doua secvente de test ale tale sunt ambele inainte de a configura corect ANSEL. La reset, ANSEL trece totul pe analogic si trebuie sa il comuti tu pe digital resetand la 0 I/O-urile corespunzatoare.Secventa asta merge la mine pe simulator. Folosesc MPLAB IDE 6.30.Cirip****************************;[initializarile tale din main... bla, bla....] bsf STATUS, RP0 ; bank1dirset movlw b'00000000' ; all inputs but GP5 movwf TRISIO ; configure them movlw b'00110000' movwf ANSEL ; bcf STATUS, RP0 ; bcf STATUS, RP1 ; bank0bucla movlw 0xff movwf GPIO ; clrf GPIO goto bucla Link spre comentariu
bogdanel Postat Februarie 4, 2005 Autor Partajează Postat Februarie 4, 2005 Salut Cirip shi merci fain de raspunsul rapid.Pana la urma inclin sa cred ca este ceva bug de MPLAB. Nu am nici un motiv sa cred ca secventza pe care mi-ai dat-o nu ar merge, mi se pare 100% ok, dar uite ca nici asta nu merge sub MPLAB 5.70. :shock: :shock: :shock: Eu folosesc 5.70 pentru ca (macar credeam...) este ultima versiune fara bug-uri care suporta ICD1, ca de ICD2 n-am inca bani.Ca sa revin la problema in cauza, am instalat acum o saptamana MPLAB v7.00. Aseara am intrat pe siteul microchip shi vad ca de doua zile au scos v7.01, , unul din bug-urile corectate privindu-l chiar pe 675 cu porturile lui. Astfel softul original merge brici in simulatorul lui V7.01 dar nu misca nimic in v7.00 :shock: Una shi mai tare: deshi intre cele doua versiuni se pare ca s-a schimbat ceva, asamblorul este acelashi, shi el cu ceva bug-uri, pentru ca hex-ul scos cu v7.0 este identic cu cel produs de 7.01, shi in plus nu misca defel.Voi ce propunetzi? Link spre comentariu
cirip Postat Februarie 4, 2005 Partajează Postat Februarie 4, 2005 Dupa cate stiu eu, MPLAB 5.xx nu suporta 12F675, asa ca n-are cum sa-l simuleze. Eu am instalate vers 5.6 si 6.3. 5.6 merge cu ICD1. 6.3 o folosesc cand vreau sa urnesc un 675. Asa ca, cel putin la mine, nu s-a manifestat nici un bug. Cand am avut de scris ceva ptr 675 am scris, am simulat (cu MPLAB6.3 si cu selectia corecta a cipanului) si am turnat in cip. A mers din prima. De altfel, daca nu selectezi cipul care trebuie in simulator, nici nu apar toate SFR-urile. ANSEL nu apare daca nu selectezi un cip care are "ANSEL".Cirip Link spre comentariu
bogdanel Postat Februarie 4, 2005 Autor Partajează Postat Februarie 4, 2005 5.70 shtie de 675, da' constat ca nu merge cum trebuie. 5.40 cred ca era cel ce nu shtia de 675. Shi cipul era selectat, era tot in regula. De altfel am portat totul pe 873 unde merge brici din prima, nici macar n-a fost necesar sa fac debug.Ash fi zis ca sunt eu de vina pana ce am testat cu 7.01, aparut alaltaieri , cu care merge pe simulator. In practica, tot aiurea, de aia m-am suparat shi l-am lasat cu 873. Probabil ca o sa folosesc acuma shi 6.30, alaturi de 5.70 shi 7.01. Mai bine faceau cei de la microchip cate o versiune de MPLAB pentru fiecare cip. Atunci foloseam MPLAB 12.508 pentru 12c508, 16.873 pentru 873, Link spre comentariu
cirip Postat Februarie 4, 2005 Partajează Postat Februarie 4, 2005 M-am uitat acum la versiuni. "5" este de fapt 5.62.00, iar "6" este 6.30.00. 5-ul meu n-are 675, ceea ce pare in concordanta cu ceea ce spui. 6 are si nu am avut probleme la simulare, cel putin pana acum.Cirip 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