[ ceso @ 21.06.2012. 22:03 ] @
Sobzirom da sam novi u radu sa microcontrolorima molim vas za pomoć oko ovog detektora.Dakle htjeo bi napravit detektor koji bi mi palio ledice kad netko prođe kraj detektora nešto poput brojača posjetitelja samo što bi kontrolor palio led a ne slao inpuls na displej.Kontrolor je 16F84A a IR diodu palim pomoću 555-ce. Znam da mi za to treba dva detektora na ulazu i dva na izlazu koji će da paze na smjer kretanje ali mi nije jasno kako da postavim kod za TSOP. Jel on radi kao običan taster ili nešto drugo tj jeli dovoljno da pinu dam uvjet: If PortB.0=1 then goto(na taj način sam pokušao ali led se ponaša prilično samovoljno tj. pali se i gasi sam) .Ili nekako drugačije.
[ rsinisa @ 21.06.2012. 23:13 ] @
Ako sam te dobro razumeo, ti imaš na jednoj strani predajnu IR koju pogoniš sa 555, a na drugoj TSOP prijemik priključen na PIC? Ako je tako, onda pogledaj prvo tehničke podatke za TSOP i videćeš da on u sebi ima demodulator za 38 kHz, što znači da ti moraš predajnu da pogoniš sa 38 kHz, što će reći da moraš 555 da podesiš da osciluje na upravo toj frekvenci.

Pozdrav.
Sinisha
[ ceso @ 22.06.2012. 23:17 ] @
Ma jesam dobio sam 38KHz.TSOP radi kad na njega spojim led preko tranzistora, ali preko kontrolora upalii led i onda se ugasi iako bi trebala ostati upaljena.
[ rsinisa @ 22.06.2012. 23:54 ] @
Daješ premalo informacija da bi zaista shvatio šta se dešava, ali probaj uz pomoć logičke sonde da vidiš o čemu se radi.
Predajnu diodu ostavi stalno uključenu preko NE555 na 38 kHz, a onda logičkom sondom posmatraj izlaz iz TSOP-a da bi video šta se tačno dešava. Ako imaš osciloskop, još bolje.

Pozdrav.
Sinisha
[ vukboban @ 23.06.2012. 22:46 ] @
Verovatno ti onda program negde ugasi LED,daj taj program da vidimo.
I jos nesto,TSOP ima log1 dok nema nikakvog signala,a kad primi signal,izlaz mu padne na log0,mozda te to buni...
[ ceso @ 26.06.2012. 19:54 ] @
Sory na kašnjenju

define osc 4

TRISB=%00000000
TRISA=%00011
pause 10000

pocetak:
high portb.5
if PortA.0=0 Then
GoTo p
endif
If PortA.1=0 Then
goto g

endif


goto pocetak
p:
If PortA.1=0 Then
high portb.4
goto pocetak
endif
goto p
g:
if PortA.0=0 Then
low portb.4
goto pocetak
endif
goto g


goto pocetak
p:
If PortA.1=0 Then
high portb.4
goto pocetak
endif
goto p
g:
if PortA.0=0 Then
low portb.4
goto pocetak
endif
goto g
[ rsinisa @ 26.06.2012. 22:52 ] @
He, zaista si škrt sa informacijama. Napiši šta je na kom pinu od ovih koje koristiš u programu. Što više informacija daš, pre ćeš da dobiješ pravi odgovor.

Pozdrav.
Sinisha
[ ZAS011 @ 26.06.2012. 23:00 ] @
Mnogo ti je dobro to programce
Da li si probao da ga iskompajliras i da vidis gde ces u startu da dobijes prijavljene greske?

p: i g: kao labele koristis 2 (dva) puta

Ubuduce stavi kod u "code" tagove, lakse se cita, npr:

Code:
define osc 4

TRISB=%00000000
TRISA=%00011
pause 10000

pocetak:
high portb.5
if PortA.0=0 Then
    GoTo p
endif

If PortA.1=0 Then
    goto g
endif

goto pocetak

p:
If PortA.1=0 Then
    high portb.4
    goto pocetak
endif

goto p

g:
if PortA.0=0 Then
    low portb.4
    goto pocetak
endif

goto g

goto pocetak

p:
If PortA.1=0 Then
    high portb.4
    goto pocetak
endif

goto p

g:
if PortA.0=0 Then
    low portb.4
    goto pocetak
endif

goto g 


A sto se kolicine informacija tice, vise bismo vode iscedili iz suve drenovine nego od tebe

[Ovu poruku je menjao ZAS011 dana 27.06.2012. u 13:32 GMT+1]
[ ceso @ 27.06.2012. 23:41 ] @
Sory što se tiče ponavljanja labela to je greška u kopiranju.Evo koda sa objašnjenjem
Code:
define osc 4

 TRISB=%00000000
 TRISA=%00011
 pause 10000 

 pocetak:
 high portb.5
 if PortA.0=0 Then 'ulaz s prvog TSOP 1838
 GoTo p
 endif
 If PortA.1=0 Then 'ulaz s drugog TSOP 1838
 goto g
 endif
 goto pocetak
 
 p:
 If PortA.1=0 Then
 high portb.4' pali led diodu
 goto pocetak
 endif
 goto p
 
 g:
 if PortA.0=0 Then
 low portb.4  'gasi led diodu
 goto pocetak
 endif
 goto g


Da to je kod samo za probu TSOP-a da vidim kako rade.A kasnije ću ja sam da probam nešto da skombinujem.
Nešto poput ovoga
Code:
'PortB 0,1,2,3 ulazi sa TSOP-a
'PortB 4,5,6,7 pale led diode
 DEFINE OSC 4
TRISB=%00001111

i var byte
 Minute   var     byte   
Second   var     byte   
Ticks    var     byte    
s var byte
 clear

 OPTION_REG = $55            
INTCON = $A0                
On Interrupt Goto TickInterrupt
  
 i=10

 OPTION_REG.7 = 1
 pocetak:
  If PortB.0=0 Then 
  goto paliodozgo
  EndIf
  If PortB.3=0 Then 
  Goto paliodozdol
  Endif
  If PortB.1=0 Then 
  Goto gasiodozgo
  Endif
  If PortB.2=0 Then 
  goto gasiodozdol
  endif
  If i<10 then
  i=10
  endif
  if s=30 then
  low PortB.4
  low PortB.5
  Low PortB.6
  Low PortB.7
  endif
  second=0 
  goto pocetak 
  
paliodozgo:
 Pause 10
 If Second = 10 Then
 goto pocetak
 endif
 If PortB.1=0 Then gosub pali
 goto paliodozgo
 pali:
 pause 10
  i=i+1
 If i>10 then
 High PortB.4
 low PortB.5
 low PortB.6
 Low PortB.7
 s=0
 Pause 100
 endif 
 goto pocetak

paliodozdol:
 Pause 10
 If Second = 10 Then
 goto pocetak
 endif
 If portB.2=0 Then gosub pali2
 goto paliodozdol

pali2
 pause 10
 i=i+1
 If i>10 then
 High PortB.5
 Low PortB.6
 Low PortB.7
 Low PortB.4
 s=0
 Pause 100
 endif
 goto pocetak
  
gasiodozgo:
 Pause 10
 If Second = 10 Then
 goto pocetak
 endif
 If PortB.0=0 Then gosub gasi
 goto gasiodozgo

gasi:
 pause 10
 i=i-1
 if i=10 then
 Low PortB.4
 Low PortB.5
 High PortB.6
 low PortB.7
 s=0
 Pause 100
 endif
 goto pocetak
 
gasiodozdol:
 Pause 10
 If Second = 10 Then
 goto pocetak
 endif
 If PortB.3=0 Then gosub gasi2
 goto gasiodozdol
 
 gasi2:
 pause 10
 i=i-1
 If i=10 then
 High PortB.7
 Low PortB.4
 Low PortB.5
 Low PortB.6
 s=0
 Pause 100

 endif
 goto pocetak
 disable 
TickInterrupt:
   Ticks = Ticks + 1                
   If Ticks < 61 Then ExitInterrupt  


   Ticks = 0
   Second = Second + 1
   s=s+1
   If Second >= 60 Then
      Second = 0
      Minute = Minute + 1
      If Minute >= 60 Then
         Minute = 0
      endif
   Endif
 

ExitInterrupt: 
    INTCON.2 = 0   
    Resume
 end 
 end


Možda treba još nešto doradit ali to je samo ideja za sada.