Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pitanja u vezi tutorijala | Programiranje PIC mikrokontrolera u jeziku C
#33
<blockquote class="ipsBlockquote" data-author="dlalkovic" data-cid="21336" data-time="1393149973">
<div>
<p>Moje pitanje skoro da nema veze sa tutorijalom, ali je ipak pitanje ( to se trazi u naslovu teme ).</p>
<p>U jednoj primeni potrebno je da izlazni pin ide direktno &nbsp;na ulazni pin ( koji prati pojavu prednje ivice sa izlaznog pina).</p>
<p>Kako optimalno povezati ova 2 pina?</p>
</div>
</blockquote>
<p>Pitanje je zašto povezivati ulazni pin na izlazni?</p>
<p>&nbsp;</p>
<p>Stanje izlaznog pina se može direktno saznati iz "LAT" registra.</p>
<p>&nbsp;</p>
<p>Dakle, na primer u C:</p>
<pre class="_prettyXprint">
If(output_pinX) uradi_nesto; // tako saznajes stanje, sa kasnjenjem od par stotina nS, sa 40MHz

//------------------------------------------------------------------------------

/* ako ti treba cekanje same tranzicije tog pina, i ako se ne bavis ni sa cim drugim u tom trenutku (MCU, ne ti :-) onda ovako: */

while(output_pinX); //cekamo da prestane prethodno pozitivno stanje
while(!output_pinX); //dogodila se silazna tranzicija
uradi_nesto; // dogodila se opet uzlazna tranzicija

// ili

while(!output_pinX); //cekamo da prestane prethodno negativno stanje
while(output_pinX); //dogodila se uzlazna tranzicija
uradi_nesto; // dogodila se opet silazna tranzicija

//--------------------------------------------------------------------------------

/* ako jos nesto obavljas u isto vreme (naravno opet MCU), onda ovako: */

unsigned char seq;

while(uslov){ //ovakva while "zuji" u krug sa par MHz, zavisno od kolicine toga u njoj.

radi_nesto_drugo_u_medjuvremenu; //sa korisnickog aspekta paralellni dogadjaj

switch(seq){
case 0:
if(!output_pinX)seq=1; //skoci u case 1 kada se dogodi silazak u nisko stanje
else seq=0; //inace cekaj
break;
case 1:
if(output_pinX)seq=2; //skoci u case 1 kada se dogodi uzlazna tranzicija
else seq=1; //inace cekaj
break;
case 2:
uradi_nesto; // uradi nesto na svaku uzlaznu tranziciju
seq=0; // vrati se na cekanje silazne
break;
}

radi_nesto_trece_u_medjuvremenu; //sa korisnickog aspekta paralellni dogadjaj

radi_nesto_N_u_medjuvremenu; //sa korisnickog aspekta paralellni dogadjaj

if(neki_uslov)break; //raskini while po potrebi

}
</pre>
<p>Kačenjem input pina na output pin, gubiš jedan pin bez potrebe, a ništa ne dobijaš na vremenu.</p>
<p>&nbsp;</p>
<p>Ali ako već želiš tako, onda input pin zakači na output pin kroz min. 220R.</p>
<p>Ako slučajno oba postaviš kao output, to će spasti MCU.</p>
<p>&nbsp;</p>
<p>Pozz</p>
Reply


Messages In This Thread
Pitanja u vezi tutorijala | Programiranje PIC mikrokontrolera u jeziku C - by Macola - 02-24-2014, 02:48 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)