Dfplayer ve WTV020-sd-mını sd kart modülünün pic ile kontrolü

Başlatan F®T, 01 Mart 2013, 20:30:45

gogoce

CHECKSUM=KLASOR+SARKI+$114
CHEC=0-CHECKSUM
SerOut PORTC.6,T9600,[$7E,$FF,$06,$0F,$00,KLASOR,SARKI,CHEC.HIGHBYTE,CHEC.LOWBYTE,$EF];

crc olayını bu şekilde hallettim

klasör isimleri 01-02-03-04.... şeklinde
içerisindeki mp3 ler 0001.mp3 , 0002.mp3....şeklinde . Bir problem yaşamadım
klasör değişkenine klasör numarası
şarkı değişkenine de şarkı numarası yazılırsa problem çıkmayacaktır (en azından benimkinde çıkmadı

Checksum hesabı ise
checksum=$FF+$06+$0F+$00+klasor+sarkı

chec=0-checksum
bu şekilde görmüştüm bir forumda...


saygılar
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

İlyas KAYA

Her klasör için 5000 dosya desteği var bu nedenle farklı klasör icin hatta farklı dosya isimleri içinde ayrı hesapları var. Mp3 klasörü standart olarak direk okudugu klasör. Bu nedenle klasör seçmeye gerek kalmıyor. Eğer 5000 den fazla dosya var ise mecburen farklı bir klasore geçmeniz gerekir
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

zeus48

Arkadaşlar mrb. Modülde karışık çal  (random) şeceneğini çalıştıramadım.  Aşağıda gönderdiğim komutları gönderiyorum . Sisteme enerji veriyorum biraz bekledikten sonra parça ileri komutu gönderiyorum 1. parça çalmaya başlıyor , 5 saniye sonrada random seceneğini gönderiyor  bu komutu alınca modül 3. parçayı çalmaya başlıyor.Nerde yanlış yapıyorum. Bilemedim.  Sağlama  hesaplama İlyas KAYA arkadaşın  hesaplamasını kullandım

zeus48

@ DEVICE pic12F675 ;
@ DEVICE pic12F675, MCLR_OFF
@ DEVICE pic12F675, PROTECT_OFF
@ DEVICE pic12F675, XT_OSC ;
@ DEVICE pic12F675 , INTRC_OSC_NOCLKOUT
DEFINE OSC 4
DEFINE OSCCAL_1K 1
TRISIO=%110110
CMCON=7
ANSEL=0
OPTION_REG=7
GPIO=0


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SYMBOL PY  =GPIO.5 ;parça ileri
SYMBOL PA  =GPIO.4 ;parça geri
SYMBOL SY  =GPIO.1 ;ses yüksel
SYMBOL SA  =GPIO.2 ;ses alçal
SYMBOL DT  =GPIO.0 ;data çıkış

SES VAR WORD
HESAP VAR WORD
M VAR WORD

pause 2000 ;modülün hazır olmasını bekledim
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ses=15       ;ilk açılışta ses seviyesi 15 den başlasın
M=06
hesap=$FF+$06+M+$00+ses.highbyte+ses.lowbyte

;bilgiyi ikikez gönderdim 1. modülü uyandırma

serout2 DT,84,[$7E, $FF, $06, M, $00 ,$00, SES,255-hesap.highbyte, 256-hesap.lowbyte, $EF]   
PAUSE 200
serout2 DT,84,[$7E, $FF, $06, M, $00 ,$00, SES,255-hesap.highbyte, 256-hesap.lowbyte, $EF]
PAUSE 200


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BASLA:

IF PY =0 THEN M=1:SES=0:GOTO GON   ;parça ileri
IF PA =0 THEN M=2:SES=0:GOTO GON   ;parça geri

IF SY =0 THEN M=4:SES=0:GOTO GON   ;ses yüksel
IF SA =0 THEN M=5:SES=0:GOTO GON   ;ses alçal

GOTO BASLA


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GON:

hesap=$FF+$06+M+$00+ses.highbyte+ses.lowbyte

serout2 DT,84,[$7E, $FF, $06, M, $00 ,$00, SES,255-hesap.highbyte, 256-hesap.lowbyte, $EF]
PAUSE 5000     



ses=03
M=08
hesap=$FF+$06+M+$00+ses.highbyte+ses.lowbyte

serout2 DT,84,[$7E, $FF, $06, M, $00 ,$00, SES,255-hesap.highbyte, 256-hesap.lowbyte, $EF]
PAUSE 500
GOTO BASLA

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




ete

Modülü tanımıyorum ve henüz inceleme fırsatım olmadı. Ancak kodlara bakınca dikkatimi çekenbir husu var neden öyle yapıldığını merak ediyorum.
hesap=$FF+$06+M+$00+ses.highbyte+ses.lowbyte şeklinde bir hesap yapılıyor. Bu hesap değeri komut verilirken,
serout2 DT,84,[$7E, $FF, $06, M, $00 ,$00, SES,255-hesap.highbyte, 256-hesap.lowbyte, $EF]
şeklinde 255-Hesap.Lowbyte olarak uygulanıyor. Kısaca gönderme komutu içinde işlemciye bir çıkartma hesabı yaptırıyorsunuz. 
Gönderme işlemi zaman bazında çalışan bir komuttur. Oradaki sayılar bit - bit  ve her birisi için Baud rate üzerinden hesaplanan bir süre tanımlanarak yollanır. Tam bilgi yollamaya başlamışken orada işlemciye hesapyaptırırsanız o bitlerde şaşma olur diye düşünüyorum.
Neden şöyle yapmıyorsunuz?
hesap=$FF+$06+M+$00+ses.highbyte+ses.lowbyte  yerine
hesap=$FF+$06+M+$00+ses.highbyte+ses.lowbyte:hesapA=256-hesap.lowbyte:HesapB=255-Hesap.Highbyte
serout2 DT,84,[$7E, $FF, $06, M, $00 ,$00, SES,HesapB, HesapA,$EF]
kısaca hesabı önceden yapın net hesaplanmış değeri komuta yazın demek istiyorum.

yada hesap şöyle yapılabilir Hesap=65535+1-($FF+$06+M+$00+ses.highbyte+ses.lowbyte) , sonra komut içinde
serout2 DT,84,[$7E, $FF, $06, M, $00 ,$00, SES,hesap.highbyte, Hesap.lowbyte,$EF] şeklinde kullanılır.

Ete

zeus48

Ete hocam cekumsun hesaplamalarını  İlyas KAYA arkadaşımız yapmıştı ben ondan almıştım. Senin yazdıklarını şimdi deneyeceğim.
Modülü incelemek istersen data bilgileri ekte hocam

ete

Data sheet de genellikle verdikleri kodlarda check sum kısmını xx xx diye geçiştirmişler. Tutarlı bir check sum hesabı da vermemişler.
Chekck Sum genellikle bütün verilerin toplanması ile elde edilir. Burada bulunan sonuçta bitler ters çevirlerek sonucun 2 li sistemdeki tamamlayıcısı bulunuyor. Ancak data sheet de bazı komut lar verilmiş içinde Check sum değerleride mevcut. Ne yaptım ise aynı sonucu bulamadım. Hiç bir şekle uymuyor. Mesela;
7E FF 06 09 00 00 04 FF DD EF bu komut setinde Check sum değeri FF DD dir. Aynı hesabı yapalım;
FF+06+09+00+00+04= $112 bunun tamalayıcısı $FE EE  şeklindedir. Onlar ne hesaplamış FF DD hangisi doğru şimdi bunun.
Başka örnek değerler de var onlarda da aynı sorun var gibi bence check sum farklı hesaplıyorlar yada data sheet de verilen değerler rastgele verilmiş.
Mesela; 7E FF 06 03 00 00 01 FF E6 EF komut setinde Checksum = $FFE6 olarak hesaplanmış bulunbakalım aynı değeri bulunuyormu? Benim hesabım Toplam=$109 ve checksum=$ FEF7 bu çok yakın değer  ama yinede farklı

Ete


İlyas KAYA

Hocam o modülü datasheetten verdiği örneğe bakarak formül çıkarttım. 1 nci şarkı için örnek vermiş birde 5nci şarkı için. Aynı sonuca ulaşana kadar çeşitli formüller denedim. Formül sorunlu olabilir ama ben ustüne hiç düşmedim. Hatta sadelestirilebilirde ama çalıştırana kadar akla karayı seçtim. Sonuçta calistirdim ve burada yayınladım :) datashette biraz bilgi eksiği var.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

ete

Checksum 8 bit olabileceği gibi 16 bit de olabilir. Data sheet şu olacak dememiş ama örneklere bakınca 16 olacağı belli oluyor yada sonuç 8 bit çıkarsa 8 bit de verilebilir belki. Şurası kesin verdikleri örneklerdeki checksum değerleri hep yanlış sanki özellikle kafa karıştırsın diye verilmiş sanki. Diğer sitelerdeki örnek hesaplamalara da baktım İlyas ın metodu kullanılmış. Yani hepsini topla , 16 biti aşan miktar otomatikman atılsın ve kalanın bitlerini ters çevir tamamdır.
Bazı yerlerde checksum olmadanda sistem çalışıyor denmiş ama deneyen oldumu acaba.
Ete

gogoce

Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

zeus48

Arkadaşlar mrb. Karışık çal (rondom)  modunu çalıştırabilen oldumu. Ben denedim çalıştıramadım yukarıda nasıl yazdığımı göndermiştim.

İlyas KAYA

Alıntı yapılan: zeus48 - 19 Mayıs 2017, 18:35:32
Arkadaşlar mrb. Karışık çal (rondom)  modunu çalıştırabilen oldumu. Ben denedim çalıştıramadım yukarıda nasıl yazdığımı göndermiştim.
M=05 demişsiniz ancak bu kodün çalıştığından emin değilim. Pc de olmadığım için inceleyemiyorum. İncelediğim vakit size dönüş yaparım.

Ayrıca ; konu başlığı wt için oldugundan google aramalarından bu modül için buraya ulaşılamıyor. Dfplayer için ayrı bir başlık iyi olacaktır yahut başlığa dfplayer da eklenebilir ise aramalardan ulaşım kolay olur.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

zeus48

İlyas arkadaşım yazdığım kodlarda  M=05 yok yanlış görmüş olabilirmisin. Başlığı söylediğin gibi değiştirdim . Doğrusuda buydu

fatih88

merhaba arkadaşlar
ben bu modülün dfplayer olanını kullandım ve c olarak kütüphanesini oluşturdum baya zor haberleşmesi var checksum olayı gogoce arkadaşımızın yaptığı gibi checksum=0-checksum olmalı ve checksum  16 bit olmalı
iyi çalışmalar
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

F®T

Konu başlığını değiştirdim.

Ete hocam başlığı değiştirmek istedim ama değişmemiş görünüyor.İlgilenebilirmisiniz?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal