Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

SM125 yardım

Başlatan 122055221, 11 Ekim 2009, 22:36:39

122055221

Arkadaşlar merhaba;
Elimde sonmicro'nun SM125 RFID modülü var. Bu modülle çalışanınız varsa örnek uygulama gnderebilirmisiniz acaba. DataSheet ine göre günlerdir code yazmaya çalışıyorum ama olmuyor. Bu usart kafayı yedirtecek bana, modülün usart ve i2c desteği var. i2c ile deneme yapmadım henüz ama, internette de bu modülle ilgili hiç bi örnek bulamıyom.

teknikelektronikci

Alıntı yapılan: "122055221"Arkadaşlar merhaba;
Elimde sonmicro'nun SM125 RFID modülü var. Bu modülle çalışanınız varsa örnek uygulama gnderebilirmisiniz acaba. DataSheet ine göre günlerdir code yazmaya çalışıyorum ama olmuyor. Bu usart kafayı yedirtecek bana, modülün usart ve i2c desteği var. i2c ile deneme yapmadım henüz ama, internette de bu modülle ilgili hiç bi örnek bulamıyom.

forumda örnek kod mevcut
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

122055221

forumda usartla ilgili ornek kodlar mevcut, coguna baktım ve uyguladım. Bu modülle ilgili ornek yok.

122055221

Arkadaşlar son yazdığım kod aşağıda, HSEROUT ile gonderdiğim veri modülü kartı okumaya hazırlıyo. ve cevap olarak 5 byte lık hex formatında  FF 01 01 99 9B datasını PIC'e yolluyo. ve ben bu datayı alıp PIC'in eepromuna yazıyom. Nevarki gelen data ile yazdığım data çok farklı, hiçbi sayı biçimi ile birbirini karşılamıyor. Gondermede sorun yok, almada sorun yaşıyorum. İki tarafında baudrade leri aynı, gelen 5 byte lık data bikerede geliyo ve bunu bikerede buffer a atmam gerekiyo. Birtürlü yapamadım.

DEFINE OSC 4
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 25
DEFINE HSER_CLROERR 1
SYMBOL GIE =INTCON.7
SYMBOL PEIE =INTCON.6
SYMBOL RCIE =PIE1.5
SYMBOL RCIF =PIR1.5
buf var byte[5]
i var byte
TEMP var byte
ON INTERRUPT GOTO KESME
OPTION_REG.7=0
CMCON = 07
RCIE=1
PEIE=1
GIE=1

main:
pause 1000
HSEROUT [$FF]
HSEROUT [$01]
HSEROUT [$03]
HSEROUT [$10]
HSEROUT [$03]
HSEROUT [$02]
HSEROUT [$19]

write 0,buf[0]
write 1,buf[1]
write 2,buf[2]
write 3,buf[3]
write 4,buf[4]
high porta.0

main1:
i=0
for i=0 to 65000
pause 1
next
goto main1

DISABLE
KESME:
GIE=0
HSERIN [buf]

TEMP=RCREG
GIE=1
Resume
enable

END

teknikelektronikci

usart ile mi yapmaya karar verdiniz
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

teknikelektronikci

ID_OKU:
HSerIn  300,tekrar, [DURUM[1],DURUM[2],DURUM[3],DURUM[4],DURUM[5]]
If DURUM[1]=02 And DURUM[2]=03 And DURUM[3]=49 And DURUM[4]=00 And DURUM[5]=03 Then 
CARD=1
Else 
CARD=0
EndIf

If CARD=1 Then
Print At 1,0,Inverse 0,"NO CARD ",HEX2 DURUM[1],HEX2 DURUM[2],HEX2 DURUM[3],HEX2 DURUM[4],HEX2 DURUM[5]
Return
EndIf
 
If CARD=0 Then
GoSub GID_MODUL_SORGULA        
HSerIn 300,tekrar,[ID[0],ID[1],ID[2],ID[3],ID[4],ID[5],ID[6],ID[7],ID[8]]
Print At 1,0,HEX2 ID[1],HEX2 ID[2],HEX2 ID[3]," ",HEX2,ID[4],HEX2 ID[5],HEX2 ID[6],HEX2 ID[7]," ",HEX2 ID[8]
Return
EndIf
;Return


MODUL_SORGULA:
    G_BILGI[1]=02
    G_BILGI[2]=02
    G_BILGI[3]=49
    G_BILGI[4]=03
    G_BILGI[5]=0
    
        HSerOut  [G_BILGI[1],G_BILGI[2],G_BILGI[3],G_BILGI[4],13]
        HSerOut  [G_BILGI[1],G_BILGI[2],G_BILGI[3],G_BILGI[4],13]
        HSerOut  [G_BILGI[1],G_BILGI[2],G_BILGI[3],G_BILGI[4],13]
        HSerOut  [G_BILGI[1],G_BILGI[2],G_BILGI[3],G_BILGI[4],13]
        HSerOut  [G_BILGI[1],G_BILGI[2],G_BILGI[3],G_BILGI[4],13]
        HSerOut  [G_BILGI[1],G_BILGI[2],G_BILGI[3],G_BILGI[4],13]
        HSerOut  [G_BILGI[1],G_BILGI[2],G_BILGI[3],G_BILGI[4],13]
    Return 
    
    
GID_MODUL_SORGULA:
    
    GID_BILGI[1]=02
    GID_BILGI[2]=02
    GID_BILGI[3]=49
    GID_BILGI[4]=03
    GID_BILGI[5]=0
    
        HSerOut  [GID_BILGI[1],GID_BILGI[2],GID_BILGI[3],GID_BILGI[4],13]
        HSerOut  [GID_BILGI[1],GID_BILGI[2],GID_BILGI[3],GID_BILGI[4],13]   
        Return

ADMIN_KONTROL:
If ID[4]=$32 And ID[5]=$BA And ID[6]=$85 And ID[7]=$4B Then 
GoSub EKRAN_TEMIZLE
GoTo ANA_MENU
EndIf
Return

ID_KONTROL:
If ID[4]=$A2 And ID[5]=$7C And ID[6]=$AA And ID[7]=$B2 Then ID_DOGRU_DURUMU=1 
If ID[4]=$F2 And ID[5]=$2F And ID[6]=$B3 And ID[7]=$B2 Then ID_DOGRU_DURUMU=1 
If ID[4]=$32 And ID[5]=$BA And ID[6]=$85 And ID[7]=$4B Then ID_DOGRU_DURUMU=1 
If ID[4]=$22 And ID[5]=$F8 And ID[6]=$54 And ID[7]=$EO Then ID_DOGRU_DURUMU=1 ;(YANLIS)
Return


benim kod

size tavsyiem verielri en az 4 kez ard arda gönderin bendede ayni problemler vardi
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

122055221

Benim göndermede sorun yok. Bir kere göndermem yetiyor. Datayı alırken 5 byte ı bikerede almam gerekiyor. Sizin yazdığınız şekilde de denemiştim ama bir sonuç alamadım. Benim yazdığım programın neresinde yanlışlık var. Sonuçta kesme olduğunda gelen datayı bikerede alması gerekiyor. Kesme olmasıda gerekmiyor. Yeterki şu datayı alabileyim.

teknikelektronikci

söyle denermisiniz

HSERIN [buf[1],buf[2],buf[3],buf[4],buf[5]]

belliki verdigim kodu incelemediniz

edit:
bu arada rfid ye her defasinda sürekli sorgula komutu gönderiyormusunuz ? kodda göremedim de

edit2:

tamam sanirim sorgula
HSEROUT [$FF]
HSEROUT [$01]
HSEROUT [$03]
HSEROUT [$10]
HSEROUT [$03]
HSEROUT [$02]
HSEROUT [$19]
bunlar olsa gerek bunu tek satirdada yapabilirsiniz
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

122055221

ilginiz için teşekkürler, yazdığınız şekilde denemiştim ama tekrar deniyeceğim.
HSERIN [buf] komutu ile HSERIN [buf[0],buf[1],buf[2],buf[3]buf[4]] komutu arasındaki fark nedir acaba, yanlış hatırlamıyosam dediğiniz şekilde yazdığımda program HSERIN de çakılıyodu. Tekrar deneyip sonucunu yazarım...

teknikelektronikci

Alıntı yapılan: "122055221"ilginiz için teşekkürler, yazdığınız şekilde denemiştim ama tekrar deniyeceğim.
HSERIN [buf] komutu ile HSERIN [buf[0],buf[1],buf[2],buf[3]buf[4]] komutu arasındaki fark nedir acaba, yanlış hatırlamıyosam dediğiniz şekilde yazdığımda program HSERIN de çakılıyodu. Tekrar deneyip sonucunu yazarım...

aradaki farki bilmiyorum ama ben hserin dedigimde olmyuordu ama bahsettgim sekilde oluordu  bu arada cakilmasinin sebebini ben size söyliyeyim büyük olasilikla buf var byte[5] yerine buf var byte[4] yazarsaniz olur yalniz birde bilgileri ard arda göndermenizi tavsyie ederim yoksa byte ler bir ileri kayiyor aslinda tam ollarak ne oluyor bilmyiorum ama problem oluyor
edit:
bu arada gelen data birbirini tutmyuor demisiniz gönderdigniz bilgi sorgula dataasi gelendata ise kart yok veya akrt okundu + kard id si değilmi? sahsenbenim modüle önce sorgu göndeiyorum kart yoksa cevabi farkli oluyor eger kart var ise 8 byte lik bir veri gönderiyor
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

122055221

Dizi değişkenlerde parantez içine yazılan değer eleman sayısını gosteriyor ve eleman sayıları sıfırdan başlar. Dediğin gibi 4 yazarsam dort elemanlı değişken olur ve buda sıfırdan üçe kadardır. Yani benim beş yazmam doğru orda bi sorun yok.
Modüle gonderdiğim datanın hemen akabinde cevap olarak 5 byte lık komut başarılı uygulandı datası geliyor ve kartı okutana kadar modül hazır bekliyor. Kartı okuttuğum anda 10 byte lık data geliyor. Şu beş byte lık datayı sağlıklı alabilsem on byte lık datayı aynı yontemle alırım.

teknikelektronikci

Alıntı yapılan: "122055221"Dizi değişkenlerde parantez içine yazılan değer eleman sayısını gosteriyor ve eleman sayıları sıfırdan başlar. Dediğin gibi 4 yazarsam dort elemanlı değişken olur ve buda sıfırdan üçe kadardır. Yani benim beş yazmam doğru orda bi sorun yok.
Modüle gonderdiğim datanın hemen akabinde cevap olarak 5 byte lık komut başarılı uygulandı datası geliyor ve kartı okutana kadar modül hazır bekliyor. Kartı okuttuğum anda 10 byte lık data geliyor. Şu beş byte lık datayı sağlıklı alabilsem on byte lık datayı aynı yontemle alırım.

sanim calismasi benim modülden farkli benimkinde sürekli sorgulama yapiyorum ve pic devamli mesgul sanirim sizinkinde sorgulamayi modül kendisi yapiyor birde eger i2c destegi var ise onun üzerinde durun derim cünkü yarin öbür gün 1 den fazla modülü ayni hatta baglayabilirsiniz
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

122055221

Denemediğim şey kalmadı, USART dan bi sonuç alamadım. Yarın I2C desteğini deneyeceğim.

salih_arel

Merhaba. Bende de aynı modülden var ve i2c ile haberleştiremiyorum. yardımcı olabilirmisiniz..