pic 16f877 ve seri ADC (AD7321) clock problemi

MetaL_HEAD

Üye
Katılım
18 Mar 2009
Mesajlar
32
Puanları
1
Yaş
37
Arkadaşlar merhaba,

seri olarak haberleşebilen AD7321 ADC'yi pic16f877 ile kullanmayı istiyorum. Gerekli datasheet araştırmalarını yaptım.
Kısaca şöyleki;

AD7321 SPI ile ile haberleşebiliyor. İlk olarak Range yazmacına hangi moda çalışacağının bilgisi,seri olarak verilip initialize ediliyor. Daha sonra da control yazmacına belirli parametreler girilerek Voltaj Referans uçlarından uygulanan gerilimin digital olarak seri çıkış portundan okunması gerekiyor.

Ancak, bendeki sıkıntı şu. Bu bahsetiğim yazmaçlar 16 bitlik yazmaçlar ve clock her yukarı geçtiğinde bir bitini kabul ediyor. Bu da demek oluyoki; her clock periyodunda bir biti AD7321 e göndermem gerekiyor. Peki bu durumu pic ile nasıl yapabilirim ?

SPI komutuyla denedim fakat spi komutuyla 8bitlik data gönderlebiliyor. (Daha fazlasını ben yapamadım.) peş peşe göndermek istediğimde de olmuyor çünkü ikinici göndermeyle birinci gönderme arasında clock da boşluk oluşuyor.

Kısacası, her clokck bir biti , pic 16F877 de nasıl gönderebilirim?

Not: CCS C kullanıyorum
 
CCS'in hazır spi fonksiyonları var.

Veri göndermek için spi_write, okumak için ise spi_read. Ancak en önemli nokta: spi modunun uygun seçilmesi gerekiyor. SCK'nın başlangıç durumu ve yükselen kenarda mı düşen kenarda mı okunacağı modu etkiliyor.

Datasheet'e göre MODE 2 gibi görünüyor. Hangi kenarda okuma yapıldığını pek anlayamadım. Hatalı bir çizim yapmışlar. Kesin bir fikir için datasheeti iyi okumak gerek.

Aşağıdaki linkteki SPI modlarını inceleyebilirsin.

Serial Peripheral Interface Bus - Wikipedia, the free encyclopedia
 
SPI komutuyla denedim fakat spi komutuyla 8bitlik data gönderlebiliyor. (Daha fazlasını ben yapamadım.) peş peşe göndermek istediğimde de olmuyor çünkü ikinici göndermeyle birinci gönderme arasında clock da boşluk oluşuyor.

Ardarda iki ve daha çok byte gönderebilirsiniz, tarif ettiğiniz sorun da SSPSTAT smp, cke ve SSPCON ckp bitleri uygun şekilde düzenlenerek çözülebilir.
 
Arkadaşlar verdiğiniz fikirler için teşekkür ederim.

Problemi hallettim. yukarıda iki kez üst üste spi komutu gönderdiğimde arada oluşan boşluk oluşacağı için problem çıkar sanıyordum fakat çıkmadı herhangi bir problem.. Önemli olan, çevirme zamanını tam olarak sabitleyebilmekteymiş. Bu şekilde hallettim problemi. Daha fazla detaylı bilgi isteyen arkadaş olursa yine buradan ya da özelden bana ulaşabilir..

İyi çalışmalar
 
haberleşmeyi nasıl yaptığını ayrıntılı olarak anlatabilir misin lütfen ?
 

Forum istatistikleri

Konular
128,946
Mesajlar
921,910
Kullanıcılar
451,132
Son üye
afozer

Yeni konular

Geri
Üst