www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Delay_us() funkcija
Pojdi na stran 1, 2, 3, 4  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
frenky14
Član
Član



Pridružen-a: Pet 28 Nov 2008 0:22
Prispevkov: 22
Aktiv.: 0.11
Kraj: Jesenice

PrispevekObjavljeno: Čet Mar 19, 2009 6:14 pm    Naslov sporočila:  Delay_us() funkcija Odgovori s citatom

Sem še začetnik v programiranju PIC-ov in imam problem z uporabo vgrajene funkcije Delay_us() (programiram v MikroC); namreč rabim določeno frekvenco utripanja diode. Pri višjih frekvencah (15kHz in več) ta funkcija ni več natančna. Ima mogoče kdo kakšen predlog zakaj je to tako in kako to odpravit ali je stvar hardwersko pogojena (uporabljam 16F84A s 4MHz kvarcem)? Ali v takem primeru moramo uporabiti timer?

Hvala za vse odgovore!

LP Frenky
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.41

PrispevekObjavljeno: Čet Mar 19, 2009 6:29 pm    Naslov sporočila:   Odgovori s citatom

Pri 4MHz ti ostane nekje 33 ukazov za preklop pri 15kHz.
Zelo na tesno bo šlo, tudi če uporabiš timer in prekinitve. Sploh v C...

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
frenky14
Član
Član



Pridružen-a: Pet 28 Nov 2008 0:22
Prispevkov: 22
Aktiv.: 0.11
Kraj: Jesenice

PrispevekObjavljeno: Čet Mar 19, 2009 6:44 pm    Naslov sporočila:   Odgovori s citatom

Hm... problem je v tem, da jaz potrebujem še veliko višjo frekvenco. Izdelujem IR senzor in uporabljam sfh5100-38 diskretni sprejemnik. Veliko sem že bral o tej temi, ampak nikjer ne najdem primera v C jeziku. Ali je še kakšna druga možnost za izvedbo takega senzorja v C jeziku?

LP Frenky
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.41

PrispevekObjavljeno: Čet Mar 19, 2009 6:59 pm    Naslov sporočila:   Odgovori s citatom

IR sprejemnik ti že demodulira signal in so frekvence precej nižje.
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 19, 2009 7:45 pm    Naslov sporočila:   Odgovori s citatom

Frenky: Če uporabljaš 4MHz potem imaš en cikel dolg 1us. Perioda pri 38kHz je 26,315us torej boš prišel najbližje s 26us -->38,461kHz.

Torej, oddajni del boš moral napisati v assemblerju. Sprememba stanja na pinu, pavza (nop) sprememba stanja nop ... in nazaj loop.

Vse skupaj simuliraj pa boš videl ali prideš blizu 38kHz.

Dovolj teorije .... tole je za CCS koda, vrjetno ni dosti drugače v MikroC

Koda:
void send_bit(int bt)   //pošljemo x pulzov @38kHz (38.461 Hz)
{
   int b;

   for (b=1;b<=bt;b++)
   {
      #asm
      BSF    Port_A,0
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      BCF    Port_A,0
      nop
      nop
      nop
      nop
      nop
      nop
      #endasm
   }
   delay_ms(1);         // Počakamo za naslednji bit, ta vrednost se je izkazala za OK
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Čet Mar 19, 2009 8:06 pm    Naslov sporočila:   Odgovori s citatom

Jaz tega PICa nisem nikoli uporabljal, ker obstajajo boljsi za nizjo ceno (16F628A stane priblizno pol manj in premore HW PWM modul). Kjer sem pa zelel uporabiti IR komunikacijo, sem tako s PWM poganjal tranzistor na eni strani oddajne diode, s podatkovnim izhodom pa na drugi.

Oba tranzistorja sta nepotrebna, ce se zadovoljis z maksimalno 25 mA toka skozi oddajno diodo (jaz sem potreboval vec). V tem primeru PWM das na eno stran diode, v serijo z diodo upor, to pa na izhod, od koder prihajajo podatki.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
frenky14
Član
Član



Pridružen-a: Pet 28 Nov 2008 0:22
Prispevkov: 22
Aktiv.: 0.11
Kraj: Jesenice

PrispevekObjavljeno: Sob Mar 21, 2009 5:52 pm    Naslov sporočila:   Odgovori s citatom

Problem je, da jaz nimam pojma od assambler-ja. Kam naj napišem to kodo? Direktno vstavim v C kodo? Najbolje, da prilepim mojo kodo, ki jo ˝zgenerira˝ MikroC:

---------------------------------------------------------------------------------------------
; ADDRESS OPCODE ASM
; ----------------------------------------------
$0000 $2804 GOTO _main
$0004 $ _main:
;irdetektor.c,1 :: void main()
;irdetektor.c,3 :: TRISB=0;
$0004 $1303 BCF STATUS, RP1
$0005 $1683 BSF STATUS, RP0
$0006 $0186 CLRF TRISB, 1
;irdetektor.c,5 :: while(1)
$0007 $ L_main_0:
;irdetektor.c,7 :: PORTB.F5=0;
$0007 $1283 BCF STATUS, RP0
$0008 $1286 BCF PORTB, 5
;irdetektor.c,8 :: Delay_us(11);
$0009 $3003 MOVLW 3
$000A $00CA MOVWF STACK_10
$000B $0BCA DECFSZ STACK_10, F
$000C $280B GOTO $-1
$000D $0000 NOP
;irdetektor.c,9 :: PORTB.F5=1;
$000E $1686 BSF PORTB, 5
;irdetektor.c,10 :: Delay_us(11);
$000F $3003 MOVLW 3
$0010 $00CA MOVWF STACK_10
$0011 $0BCA DECFSZ STACK_10, F
$0012 $2811 GOTO $-1
$0013 $0000 NOP
;irdetektor.c,11 :: }
$0014 $2807 GOTO L_main_0
;irdetektor.c,13 :: }
$0015 $2815 GOTO $

-----------------------------------------------------------------------------------------------

Hvala za pomoč!
PS: Ne mi zamerit za neumna vprašanja:)

LP Frenky
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
sraka
Član
Član



Pridružen-a: Čet 20 Nov 2008 23:52
Prispevkov: 481
Aktiv.: 2.38
Kraj: PMAVs

PrispevekObjavljeno: Sob Mar 21, 2009 7:47 pm    Naslov sporočila:   Odgovori s citatom

frenky14 je napisal/a:
PS: Ne mi zamerit za neumna vprašanja:)LP Frenky

Ni neumnih vprašanj, so samo neumni odgovori.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.05
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Sob Mar 21, 2009 7:47 pm    Naslov sporočila:   Odgovori s citatom

sraka je napisal/a:
frenky14 je napisal/a:
PS: Ne mi zamerit za neumna vprašanja:)LP Frenky

Ni neumnih vprašanj, so samo neumni odgovori.

Eden takih je tvoj !

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
frenky14
Član
Član



Pridružen-a: Pet 28 Nov 2008 0:22
Prispevkov: 22
Aktiv.: 0.11
Kraj: Jesenice

PrispevekObjavljeno: Pet Apr 17, 2009 5:28 pm    Naslov sporočila:   Odgovori s citatom

Po dolgem času spet nazaj Smile

No, pravo frekvenco mi je uspelo nekako zgenerirati, sedaj pa se je pojavil nek drug problem; uporabljam sfh5110-38. Prikljucim tako kot je treba; 1 pin na pic-a, 2 na GND in tretji prek upora na +5V. Ko senzor ne zaznava signala naj bi na izhodu dal 5V, ko pa ga pa 0V.
Ko pa priključim IR diodo, izhodna napetost senzorja takoj pade pod 1V in tam tudi ostane neglede kaj počnem. To se zgodi tudi, če namesto IR priklopim LED diodo ali če senzor pokrijem, da nanj ne pade nič svetlobe.

Zelo bi bil vesel vaše pomoči!

LP
Frenky
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Pet Apr 17, 2009 6:30 pm    Naslov sporočila:   Odgovori s citatom

Narobe prikljucen senzor ? Jaz sem tudi ustvaril eno zmedo s tem senzorjem, ker je junak, ki je narisal knjiznico za Eagle (en Poljak, ce se prav spomnim), obrnil komponento narobe in je nekaj casa trajalo, da sem to ugotovil Brick wall

Ko sem vse skupaj pravilno obrnil, je delovalo tocno tako, kakor pise v datasheetu. Ocitno so tile SFH5110 precej odporni na neumnosti Laughing

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.41

PrispevekObjavljeno: Pet Apr 17, 2009 7:33 pm    Naslov sporočila:   Odgovori s citatom

Razlika med SFH 5110 in 5111 je samo ta, da sta pina 2 in 3 zamenjana...
Si prepričan, da imaš 5110?

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
MAAG
Član
Član



Pridružen-a: Čet 26 Jun 2008 14:18
Prispevkov: 178
Aktiv.: 0.86
Kraj: SG-MB

PrispevekObjavljeno: Pet Apr 17, 2009 7:38 pm    Naslov sporočila:   Odgovori s citatom

Imas IR diodo slucajno obkljopljeno s kaksno skrčko? S tem zmanjsas "sevanje" IR diode in jo se malce usmeris! Ce je nimas, se zna zgoditi, da ti senzor zaznava to "sevanje" od IR!
_________________
Samo da se kadi Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Pet Apr 17, 2009 7:53 pm    Naslov sporočila:   Odgovori s citatom

gumby je napisal/a:
Razlika med SFH 5110 in 5111 je samo ta, da sta pina 2 in 3 zamenjana...
Si prepričan, da imaš 5110?


Pri nas 5111 niti nisem zasledil v trgovinah ...

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
frenky14
Član
Član



Pridružen-a: Pet 28 Nov 2008 0:22
Prispevkov: 22
Aktiv.: 0.11
Kraj: Jesenice

PrispevekObjavljeno: Sob Apr 18, 2009 11:50 am    Naslov sporočila:   Odgovori s citatom

Ne, sigurno imam sfh5110! Čudno se mi zdi to, da ko na senzor posvetim npr. z daljincem, se senzor odzove Eh? Sicer bi pričakoval bolj dramatičen padec napetosti na senzorju (iz približno 5V pade na 3,6V), ampak stvar se vsaj odzove. Ko pa priklopim IR diodo (imam tudi oklopljeno s skrčko) se pa napetost sesede kot sem opisal v prejšnem postu.

Senzor sem povezal tako kot je prikazano v datasheet-u. S 1. pina na pic in prek pullup upora (22k) na +5V (probal sem tudi brez pull up upora), z 2. pina na GND in s 3. pina prek upora 47 Ohm na +5V in kondenzatorja 4,7uF na GND.

LP Frenky
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3, 4  Naslednja
Stran 1 od 4

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group