pic ile tda7300 kontrolü_?

Başlatan mustafa_cmbz, 13 Mart 2009, 17:01:49

mustafa_cmbz

arkadaşlar elimde 2 adet tda7300 var...ben bu entegreyi microişlemci ile nasıl kontrol edebilirim_?

yani adres bilgilerini vs. leri nasıl gönderebilirim....


entegrenin datasheeti :

http://pdf1.alldatasheet.com/datasheet-pdf/view/25113/STMICROELECTRONICS/TDA7300.html

Tagli

Hocam anlaşılmayan kısım tam olarak neresi? Datasheet'e baktım, yanlış anlamadıysam I2C kullanılabiliyor. Dahili I2C modülü olan PIC'ler ile bu iş rahatlıkla yapılabilir, gerçi bu iletişimi destekleyen derleyiciler ile donanımsal desteğe gerek de kalmayabilir.
Gökçe Tağlıoğlu

Maxim

mustafa ,benimde I2C çalışması yapasım var ,
daha önce hiç uğraşmadım ,
yapalım birşeyler ,sen başla biryerlerden .

busin ve busout komutunu kullanıyorsun ,
dün verdiğim pdf dosyasında sayfa 117 de bir örnek var
http://picproje.org/index.php/topic,24215
hardware donanımı olan piclerde de hbusin vee hbusout komutu .

mustafa_cmbz

Alıntı yapılan: "maxiboost"mustafa ,benimde I2C çalışması yapasım var ,
daha önce hiç uğraşmadım ,
yapalım birşeyler ,sen başla biryerlerden .

busin ve busout komutunu kullanıyorsun ,
dün verdiğim pdf dosyasında sayfa 117 de bir örnek var
http://picproje.org/index.php/topic,24215
hardware donanımı olan piclerde de hbusin vee hbusout komutu .

tam bilmiyorum ama bu ıc2 desteği olan piclerin arasında 16f877 varsa bişiler yaparım...verdiğin döküman gerçektende güzel bir örnek...

bi tane ses sistemi geçti elime 5+1 kontrol kartı  yok ona bir tane ton kontrol kartı tasarlıyacağım...bu gün okulun deposunda baktım böle bir entegre var alım bakım bir incelim dedim belki işe yarar dedim...birde baktım ton kontrol entegresi tam üstüne geldi....bişeyler yapmak şart oldu...beraber bişiler yapalım hocam dediğin gibi...ben pcb tasarımına başlıyorum eklemek istediğin bişeyler varsa şemamatik bir şekilde ekleme yaparsan pcb çizer yayınlarım hem biz öğrenmiş oluruz hem diğer arkadaşlara faydası olur....

iyi çalışmalar...

nthere

Bence 18F458 ile yapın.
Artık 18 serisine geçme vaktide gelmiştir sanırım =)

mustafa_cmbz

zamanı geldi tabiki de ben 18f 452 ile tarsos'a glcd'li kontrol kartı tasarlamaya çalışıyorum ama işin komik tarafı 18f serisi daha hiç bir pic'in eli elime değmedi... :D

ne yapalım seneye izmir veya ist. yerleşirsek malzemecilerden çıkmayız durumu telaffi ederiz :D

hocam şu ıc2 hardware olayından biraz bahsedermisiniz_?

normal yazılımsal olarak ıc2 ile veri gönderdiğimiz bir eeprom uygulamasından örnek verecek olursak donanımsal bir ıc2 bulanan bir pic kullandığımızda bize ne gibi bir faydası olacak_?

ben donanımsal ıc2'ye umutla bakıyorum çünki yazılımsal pwm ile donanımsal pwm'li picler arasındaki pwm sinyaline baktığımızda çok şey fark ediyor...ıc2'de de  bu tarz bir durum söz konusu herhalde....iyi çalışmalar...

Tagli

Aslında I2C, PWM gibi sürekliliği bulunan birşey olmadığından yazılımsal olarak elde edilmesi ciddi bir soruna sebep olmayacaktır. Gerçi ben kodu ASM'de yazdığım için yazılımsal I2C yapmak protokolü tam olarak anlamayı, hatta bir derece ezberlemeyi gerektiriyordu; o yüzden 16F876A'nın dahili I2C modülü işimi çok kolaylaştırdı (DS1307 ile saat yapmaya çalışıyordum). Elbette kullanılan cihazda donanımsal I2C mevcut ve de ihtiyaç duyduğu bacaklar başka amaçla kullanılmıyorsa donanımsal olanı kullanmak daha iyi bir seçim olacaktır.

Bu entegreyi kontrol etmek sanırım I2C kullanan bir EEPROM ile hemen hemen aynı. Hatta entegreden veri okunmayacağı için daha kolay olacağını da söyleyebiliriz. Datasheet'te cihaza gönderilebilecek komutlar listelenmiş zaten. Yapılması gereken önce start işaretini gönderip sonra cihaz adresini (ki bu da datasheet'te mevcut) daha sonra da istenilen komutları sırayla göndermek. Cihazdan dönen acknowledge bitleri kontrol edilebilir, ama buna gerek olacağını pek sanmıyorum. İşlem bitince de stop işareti gönderilir. Daha sonra tekrar veri gönderilmek istenirse yukardaki adımlar tekrarlanır. Gerçi derleyiciler bu adımları tek bir komutta birleştiriyor da olabilir, onu bilmiyorum.

Bu arada, datasheet'te dediğine göre, I2C iletişimini kullanmak için SDA ve SEN bacaklarını birbirine bağlamak gerekiyormuş. Ayrıca azami clock hızı da 100 kHz olarak belirtilmiş.
Gökçe Tağlıoğlu

mustafa_cmbz

BusOut control,{address,} [data {,data}]

protonda şu şekilde bir tanımalama veriyor burada kafamı karıştaran nokta 2 adet data belirtmesi bunun sebebi nedir_?

birde busout komutuyla belirttiğimiz adrese yazdığımız datayı nasıl sileriz_?

Tagli

Bir veya daha fazla byte gönderilebilir demek istiyor. busout komutunda adı geçen adres cihaz içindeki adres değil, cihazın kendi adresi. Bu adres aynı hat (bus) üzerindeki farklı cihazlarla haberleşmeye olanak sağlıyor. Mesela aynı hat üzerinde bir I2C EEPROM da olabilir, ama onun adresi farklıdır (gerçi emin değilim, eğer yeterince şansızsan belki aynı da olabilir ama bu işin standartları olsa gerek, herhalde böyle çakışmalar pek olmuyordur). Sen cihaz adresini yolladığında adresi eşleşen cihaz yanıt verir sadece.

TDA7300 içinde register'lardan bahsedilmemiş, o halde cihaz içinde adres de yok diyebiliriz. Sadece komutlar yollanıyor, örneğin "sesi arttır" gibi. Eğer bir EEPROM'dan bahsediyor olsaydık komutta data olarak belirtilen ilk 1 veya 2 byte cihaz içindeki adres, sonraki byte ise adrese yazılacak veri olurdu. Silme diye birşey söz konusu değil (belki bunun mümkün olduğu cihazlar da vardır), yapılan şey üzerine yeni bir değer yazmak. Gerçi bir register'a 0 yazmak, onu silmek gibi düşünülebilir.
Gökçe Tağlıoğlu

mustafa_cmbz

Alıntı YapThe internal address if I2C EEPROM chips 24cXXX is
%1010xxx next 3 bits are the chip address set on your
hardware. The 24Cxxx chips have three lines for configuring
this address thus you can place up to 7 EEPROM
devices provided their chip addresses are set different. In
the circuit shown PIC Lab-II has set this address to 000.
thus the complete 7 bit address of this device would be %1010000, the write command is 0 and read command
is 1 as last bit of the address. So To write data we send %10100000 the last 0 is the bit to inform a
write, and to read data we issue %10100001.


hocam bu kısımdakileri tam olarak anlamış değilim...tam tercüme edemedim okumak için "0" yazmak için "1" mi gönderin diyor yoksa yazılacak veya okunacak adreslerin yerlerini mi gösteriyor tam anlayamadım....iyi çalışmalar...

Tagli

Daha önce I2C EEPROM ile deneyimim olmadı ama bildiklerimi paylaşayım: I2C cihazlarda adresler genelde 7 bit (galiba bazen de 10 bit) oluyor. Bu 7 bitin arkasından 1 bit de yazma veya okuma emrini ifade ediyor. Bazı EEPROM'ların üzerinde bulunan 3 adet giriş bacağı 0'dan 7'ye bir değer alabiliyor (toprağa veya +5V'a çekilerek), eklemiş olduğun alıntıdaki xxx bölümü de bu 3 biti gösteriyor. Böylece adresleri birbirinden farklı 7 adet EEPROM aynı I2C hattına bağlanabiliyor. 7 bitlik adreslemesi olan cihazlarda gönderilen bu ilk byte her zaman cihaz adresi oluyor. Burdan sonra iki ihtimal var: Okuma veya yazma.

Yazma işlemi alıntıda da alnatıldığı üzere adres byte'ının son biti 0 yapılarak belirtiliyor. Bundan sonra hedef cihaz ACK (acknowledge) yolluyor, tabi eğer veri alımı doğru olarak tamamlanmışsa. Aksi taktirde NACK yollar. Dahili I2C modülü olan PIC'ler ACK cevabını kendisi yakalıyor zaten, yapılması gereken tek şey bu bitin kontrol edilmesi. Gerçi ben DS1307 uygulamamda işin kolayına kaçıp bu kontrolü yapmamıştım. PIC, istediği miktarda byte'ı gönderene kadar bu iş devam ediyor, yani her byte'tan sonra hedef cihazdan ACK cevabı geliyor. PIC iletişimi kesmek istediğinde stop işareti veriyor. EEPROM'larda, hafıza büyüklüğüne göre cihaz adresinden sonra cihaza yollanan ilk 1 veya 2 byte adres değeri olur. Daha sonra da bunu veri izler. Genelde EEPROM'larda her byte için bu işlemi yapmak gerekmez. İlk adres değerinin yollanmasından sonra veriler birbiri ardına yollanır ve cihaz adres değerini kendi içinde otomatik olarak arttırır. Cihaz davranışı modele göre değiştiğinden ayrıntılı bilgi için datasheet incelenmeli.

Okuma işi için genelde önce bir yazma işlemi yapmak gerekir. Çünkü cihaza okumaya hangi adresten başlanması gerektiği bildirilmelidir. Sanırım bu bilgi verilmezse, yazma işleminin kaldığı adresten okumaya devam ediyor, ama elbette davranış cihaza göre değişebilir. Okumada da öncelikle start işareti verilir ve cihaz adresi yollanır, tabi bu sefer 0. biti 1 olacak şekilde. Daha sonra PIC hazır oldukça alım işaretini gönderir ve alım başlar. O byte'ın alımının bitmesi beklenir ve eğer alınması istenen başka veriler de varsa (mesela EEPROM'dan arka arkaya veri okunuyorsa, ki her okumada adres otomatik olarak arttırılır) ACK işareti verilir. İletişimi bitirmek için NACK ve ardından stop işaretleri verilir.

Yukarda "işaret vermek" derken hat üzerinde yapılabilecek öntanımlı bazı özel mesajları ifade etmeye çalıştım. Her ne kadar bu mesajların zamanlamaları ve diğer ayrıntıları datasheet'lerde mevcut olsa da PIC'in dahili I2C modülünü kullandığım için bu işaretleri sadece bir biti değiştirip eski haline dönmesini bekleyerek verebiliyorum ASM dilinde. Derleyicilerde bu işlemler muhtemelen yukarda anlattığım kadar karışık değildir, çok daha basittir. Yine de insanın işin gerisinde ne olduğunu bilmesinde yarar var.
Gökçe Tağlıoğlu

mustafa_cmbz

entegrenin datasheetinibugün okulda hoca ile inceledik...aslında çok güzel özellikleri olan bir entegre...genellikle mp3 cd çalar teyiplerde kullanılan bir sistem 8 kanaldan her birini seçme imkanıveriyor mesela radyoyu açtığımızda radyonun ses çıkışının bağlı olduğu pindeki swıtch'i aktif edip o kanaldaki sesi çıkışa aktarıyor...

birde ses açıp kıma ile ilgili olarak a ve b değişkenlerine verilen sayısal ifadelere göre kaçar kedeme kısıp kaçar kademe açacağını da gösteriyor...

datasheet okumayı bilmek bir sanat bence :D

Tagli

Alıntı yapılan: "mustafa_cmbz"datasheet okumayı bilmek bir sanat bence :D
Katılıyorum. Ama yazmak daha büyük bir sanat. Her ne kadar elektronik dünyasının içinde değilsem de, yani pek fazla datasheet okumamış olsam da, gördüklerime dayanarak söyleyebilirim ki hepsi aynı kalitede olmuyor. Bazıları sanki anlaşılmasın diye yazılmış. Şu ana kadar Microchip kadar iyi yazanını görmedim.
Gökçe Tağlıoğlu