Jump to content
ELFORUM - Forumul electronistilor

Care-i greseala ??? Need help...


Guest pai

Recommended Posts

Cel mai simplu cod.Si nu functioneaza!Unde este greseala???#include "p12f629.inc"__config _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUTorg 0 goto mainorg 4 goto intservbank0 macro bcf STATUS,RP0endmbank1 macro bsf STATUS,RP0endmmain: bank1;calibrare oscilator intern: call 0x3FF movwf OSCCAL bank1 bcf TRISIO,4 bank0 clrf GPIO bsf GPIO,4 goto finishintserv:retfiefinish:end Cand simulez(folosind PicSimulatore) observ ca executia acestui program se termina imediat dupa "call 0x3FF". De ce?

Link to comment
  • Replies 32
  • Created
  • Last Reply

Top Posters In This Topic

Să ne uităm puţin la secvenţa de iniţializare dată în foaia de catalog:bcf STATUS,RP0 ;Bank 0clrf GPIO ;Init GPIOmovlw 07h ;Set GP<2:0> tomovwf CMCON ;digital IObsf STATUS,RP0 ;Bank 1clrf ANSEL ;Digital I/Omovlw 0Ch ;Set GP<3:2> as inputsmovwf TRISIO ;and set GP<5:4,1:0> as outputsLăsăm la o parte CMCON (valorile default sunt foarte bune) şi ANSEL (nu e cazul). Aparent şi tu ai setat tot ce trebuie. Numai că primele 2 instrucţiuni la tine sunt după setarea TRISIO. Şi eu am zis prima oară că n-are importanţă. După ce am trecut prin aceeaşi dilemă am constatat că are.Deci: şterge întâi GPIO (pe Bank0) şi apoi setează TRISIO.

Link to comment

Cand faci acel call 0x3ff, se presupne ca la locatia 0x3ff se afla o instructiune retlw, care intoarce valoarea de calibrare lasata acolo de producator. Daca ai sters-o, locatia e goala deci revenirea din call nu se mai face si programul o ia razna. Mplab o ia si el razna razna ptr ca sare la o zona de memorie unde nu e cod. Pune la sfarsitul programului ceva de gen:

org 0x3ffretlw 0x80

si e pos sa mearga. Valoarea "intoarsa" in cazul asta va fi 0x80, dar acolo trebuie sa ai val de calibrare. Daca ai sters-o, o refaci. E un post pe tema asta.

 

Cirip

Link to comment

am gasit prin datasheet ca valoarea pentru calibrare este chiar 0x80, si am modificat programul corespunzator dar la scriere in pic primesc eroare de verificare la adresa 0x8 (folosesc ic-prog si binecunoscutul programator jdm). codul arata acum asa:#include "p12f629.inc"__config _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUTorg 0 goto mainorg 4 goto intservbank0 macro bcf STATUS,RP0endmbank1 macro bsf STATUS,RP0endmmain: bank1;calibrare oscilator intern: call 0x3FF movwf OSCCAL bank0 clrf GPIO bsf GPIO,4 bank1 bcf TRISIO,4finish: goto finishintserv:retfieorg 0x3FF retlw 0x80end banuiesc ca de vina este ultimul org...ce parere aveti?

Link to comment

Nu vad legatura intre ultimul org si eroarea de programare de la adresa 8. Poate vrei sa elaborezi putin de ce crezi ca e vreo legatura.Daca timingul nu este critic, elimina complet calibrarea. Oricum, valoarea originala e pierduta. Pur si simplu elimina call 0x3FF si elimina si orgul de la coada ptr ca nu mai are obiect si testeaza.

am gasit prin datasheet ca valoarea pentru calibrare este chiar 0x80

Cred ca e o neintelegere. 0x80 e valoarea de reset si care "e p-acolo". Dar pentru compensarea distributiei statistice a frecventei datorata procesului de fabricatie, valoare aia trebuie alterata. Valoarea aia e ca un trimer care vine din fabrica pe mijloc. Daca vrei precizie mai mare, mai bagi surubelnita si mai dai putin stanga-dreapta.Cirip
Link to comment
Daca timingul nu este critic, elimina complet calibrarea. Oricum, valoarea originala e pierduta. Pur si simplu elimina call 0x3FF si elimina si orgul de la coada ptr ca nu mai are obiect si testeaza.

 

adica pot sa renunt la calibrare, la acele 2 instructiuni din cod?

Link to comment

pai,Ca sa faci GP4 iesire digitala, mai trebuie sa resetezi AN3 din registrul ANSEL. Dupa reset ala aloca toti pinii ca intrari analogice.De asemenea, dupa finish: baga un goto $, ca sa opresti procesorul la adresa aia, altfel o ia in balarii.Trebuie sa pui _MCLRE_OFF ca sa nu ai nevoie de rezistenta la +5VCirip

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines