 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
frenky14 Član

Pridružen-a: Pet 28 Nov 2008 0:22 Prispevkov: 22 Aktiv.: 0.11 Kraj: Jesenice
|
Objavljeno: Čet Mar 19, 2009 6:14 pm Naslov sporočila: Delay_us() funkcija |
|
|
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 |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.41
|
Objavljeno: Čet Mar 19, 2009 6:29 pm Naslov sporočila: |
|
|
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 |
|
 |
frenky14 Član

Pridružen-a: Pet 28 Nov 2008 0:22 Prispevkov: 22 Aktiv.: 0.11 Kraj: Jesenice
|
Objavljeno: Čet Mar 19, 2009 6:44 pm Naslov sporočila: |
|
|
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 |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.41
|
Objavljeno: Čet Mar 19, 2009 6:59 pm Naslov sporočila: |
|
|
IR sprejemnik ti že demodulira signal in so frekvence precej nižje. _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Čet Mar 19, 2009 7:45 pm Naslov sporočila: |
|
|
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 |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Mar 19, 2009 8:06 pm Naslov sporočila: |
|
|
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 |
|
 |
frenky14 Član

Pridružen-a: Pet 28 Nov 2008 0:22 Prispevkov: 22 Aktiv.: 0.11 Kraj: Jesenice
|
Objavljeno: Sob Mar 21, 2009 5:52 pm Naslov sporočila: |
|
|
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 |
|
 |
sraka Član


Pridružen-a: Čet 20 Nov 2008 23:52 Prispevkov: 481 Aktiv.: 2.38 Kraj: PMAVs
|
Objavljeno: Sob Mar 21, 2009 7:47 pm Naslov sporočila: |
|
|
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 |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.05 Kraj: Divača (Kačiče)
|
Objavljeno: Sob Mar 21, 2009 7:47 pm Naslov sporočila: |
|
|
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 |
|
 |
frenky14 Član

Pridružen-a: Pet 28 Nov 2008 0:22 Prispevkov: 22 Aktiv.: 0.11 Kraj: Jesenice
|
Objavljeno: Pet Apr 17, 2009 5:28 pm Naslov sporočila: |
|
|
Po dolgem času spet nazaj
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 |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pet Apr 17, 2009 6:30 pm Naslov sporočila: |
|
|
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
Ko sem vse skupaj pravilno obrnil, je delovalo tocno tako, kakor pise v datasheetu. Ocitno so tile SFH5110 precej odporni na neumnosti  _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.41
|
Objavljeno: Pet Apr 17, 2009 7:33 pm Naslov sporočila: |
|
|
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 |
|
 |
MAAG Član

Pridružen-a: Čet 26 Jun 2008 14:18 Prispevkov: 178 Aktiv.: 0.86 Kraj: SG-MB
|
Objavljeno: Pet Apr 17, 2009 7:38 pm Naslov sporočila: |
|
|
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  |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pet Apr 17, 2009 7:53 pm Naslov sporočila: |
|
|
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 |
|
 |
frenky14 Član

Pridružen-a: Pet 28 Nov 2008 0:22 Prispevkov: 22 Aktiv.: 0.11 Kraj: Jesenice
|
Objavljeno: Sob Apr 18, 2009 11:50 am Naslov sporočila: |
|
|
Ne, sigurno imam sfh5110! Čudno se mi zdi to, da ko na senzor posvetim npr. z daljincem, se senzor odzove 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 |
|
 |
|
|
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
|