Sari la conținut
ELFORUM - Forumul electronistilor

ajutor DS18S20


kit

Postări Recomandate

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 spre comentariu
  • Răspunsuri 4
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • kit

    3

  • sofian

    1

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 spre comentariu

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 spre comentariu

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 spre comentariu
  • 3 săptămâni mai târziu...

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări