Jump to content
ELFORUM - Forumul electronistilor

ajutor DS18S20


kit
 Share

Recommended Posts

Incerc sa fac un termometru cu DS18S20 si PIC18f452. Am reusit sa scriu codul in ASM, merge brici, dar ma intereseaza sa-l scriu in C. Ma chinui de 1 saptamana si nu vrea si gata! Imi scapa ceva. Are cineva rabdare sa se uite peste cod? Mentionez ca rutinele de intrerupere le-am verificat pe osciloscop si par a fi bune... De asemenea, am folosit la greu rutinele oferite de MCC18. Concluzia-i ca m-am blocat si nu stiu cum s-o mai urnesc. Mizeria de cod atasat imi afiseaza -000,5 si in rest nu mai face absolut nimic. Multumesc anticipat.LE: cuartul este de 4MHz.

Link to comment
Share on other sites

pdf zice asa "Master applies strong pullup to DQ for the duration of the conversion (tCONV)"

 

deci tu vad ca tot citesti DQ sa vezi daca a terminat conversia, dar atunci cum mai sa mai aiba curent necesar conversiei saracu de DS ?

 

eu zic sa faci asa

comanda CC si 44 asteapta tu (tCONV) si dupa aia citeste temperatura

 

eu nu ma pricep bine la C dar "DQ_WaitConv" mi se pare ciudata

void DQ_WaitConv(void){	DQ_TRIS=1;	while(!DQ_PIN){		while(!DQ_PIN){;}		Delay15us();	}	DQ_PIN=1;	DQ_TRIS=0;}
Link to comment
Share on other sites

Uita-te ce genereaza in ASM compilatorul de C.De ex. daca ai setate diferite optimizari compilatorul face pe desteptul si nu mai pune nop-uri sau altele care uneori incurca.Mai pot fi greseli de C pe care nu le observi dar iti sar in ochi daca te uiti la sursa generata in asamblare.

Link to comment
Share on other sites

mda.1. SofianDe fapt rutina aia face o dubla citire. Citeste o data si daca este ok iese din bucla interioara, ajunge in cea exterioara si mai face o data citirea. Asa, ca sa elimin o eventuala eroare.2. RoGeorge. Am facut "greseala" sa iau in considerare sfatul tau. M-am pleostit rau de tot dupa aia. Inca ma uit nauc la listingul din Disassembly si ma intreb daca nu cumva isi bate joc de mine. Are cineva idee cum se poate convinge compilatorul sa scoata toata mizeria si sa-mi lase doar chestiunile esentiale?As prefera sa scriu sub C programele, dar ce face compilatorul este total necontrolabil!exemplu:dq_temp|=0x80;este interpretata caBSF 0x80, 0x7, BANKEDeste corect, dar eu am vrut sa fac un OR!Intr-un topic mai vechi era recomandat asm pentru aplicatiile cu timing critic. Ca a mea. Cu toate astea nu pricep un lucru: de ce se gasesc exemple la aplicatia aceasta in C? Care se presupune ca merg. Care-i noima? Eu unul sunt total in ceata.

Link to comment
Share on other sites

  • 3 weeks later...

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
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

 Share

×
×
  • 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