MCP 3204 İÇİN ÇALIŞAN HAZIR KOD -PROTON(çözüldü)

Başlatan Murat Mert, 20 Temmuz 2010, 18:54:35

Murat Mert

S.A.
Sn. Arkadaşlar protonda mcp3204 için uğraştım  SONUNDA ÇÖZDÜM  ;D  ;D
MCP3204:
 Low CS
 SHOut DIN, CLK,msbfirst, [SOR\5]
  DelayMS 5 
 SHIn DOUT,CLK,msbpost,[ADC\13]
 High CS
 DelayMS 5
 Return


İŞTE BU KADAR  ;)
Bunuda mantıken çözdüm 12 bit için 13 yazdım 4 bit referans bilgisinede 5 yaptım işlem tamam
işte proton kodu isis çalışması:
http://rapidshare.com/files/409009041/MCP3204-PROTON.rar

İnşallah ihtiyacı olanlara yaraması dileğiyle

mert07

Murat Mert

Alıntı yapılan: FxDev - 20 Temmuz 2010, 19:08:46
Forumda ben çalışmıştım, ayrıca ne ünlü entegreymiş bu herkes bunu kullanmaya çalışıyor.
Kullandığınız pic'de adc yok mu?
ADC portu yetersiz kalıyorsa ADC port çoğullama yapın sitemde bunun hakkında bilgi bulabilirsiniz.

S.A.
Sn. Fırat sizin projeyi protona uydurmaya çalıştım bişiler oluyor ama yinede yapamadım picde tabiki adc va ama bununla bir uygulama denemek için ve kendimi geliştirmek için bu entegreyi kullanmak istiyorum. Kolay gelsin.
mert07

t2

mcp3204 ün önemli ve üstün özellikleri nelerdir? öğrenebilir miyiz? yani picin içindeki adc den daha mı iyi oluyor, gerekirse bizde kullansak?

Murat Mert

Alıntı yapılan: t2 - 20 Temmuz 2010, 20:56:33
mcp3204 ün önemli ve üstün özellikleri nelerdir? öğrenebilir miyiz? yani picin içindeki adc den daha mı iyi oluyor, gerekirse bizde kullansak?

S.A.
Avantajı 12 bit olması, dijital olduğu için optokuplör ile izole edilebilir diye düşünüyorum. Geçenlerde seri bilgiye göre port çıkışı denedim. 2 bytelik bilgi yollayarak port b ve portd yi bunlardan gelen bilgiye göre çıkış verdirdim üst üste zorlayınca ( biraz abarttım) pic'in tx ledinin arada söndüğünü pc'in takıldığını fark ettim. Aynı olayı 74595 ile port çoğullamayı denemek için yaptığım kartta denedim onda olmadı. Yanlış değilsem seri gelen bilgileri pic aritmetik olarak çözüp portlara yönlendirene kadar işlemsel bir zaman kaybı yapıyor üst üste gelen bilgiler ile kilitlenmesinin sebebi ondan olabilir. Diğer bir tahmiminimde port çoğullamalı olanda pc: pic kardeş sana "55"> pic : 595 alsana "55" dediği içinfazla bir işlem yapmadığı için takılmıyor ve hızlı oluyordur hiç uğraşmıyor sadece alıyor veriyor 595 çıkış için debelensin.
Aynı şeyi analog içinde oluyorsa mcp3204 analog okusun pice yollasın pic kasılmasın hemde 12 bit düşüncem buydu.  :D
mert07

Murat Mert

S.A.
Arkadaşlar yok mu bu mcp3204 ile çalışan birtürlü okutamıyorum kafama takıldı  :) yardımcı olabilecek bir arkadaş yokmu? Birtürlü beceremedim spı okumada pc pic iletişiminde pice hız katıyormu denemem lazım takıntı oldu. :)
mert07

ftsahin

Eski bir kod. Üzerinde değişiklik yapılması gerekebilir.

saat var byte
i var byte
deger var word
j var byte
analog var word[4]
deger1 var bit
deger2 var bit
deger3 var bit
contor1 var word
contor2 var word
contor3 var word
eskideger1 var bit
eskideger2 var bit
eskideger3 var bit
zaman var byte

Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       1
Define  LCD_RWREG       PORTB
Define  LCD_RWBIT       2
Define  LCD_EREG        PORTB
Define  LCD_EBIT        3

trisa = %11011
trisc=%11111111
trisd = %11111000
porta=0
portc=0
portd=0


include "modedefs.bas"
pause 100
saat=50
contor1=0
contor2=0
contor3=0
'portd.0    CS_Low işlemi başlatır
'portd.1    Clock
'portd.2    D_in kanal seçme
'portd.3    Bilgi okuma
loop:
  for j=1 to 3
    portd.0=1'  CS_High........Önce Yüksek yapılır
    portd.0=0'  CS_low.........Low yapılarak İşlemi başlatır
    for i=1 to 21 
      portd.1=0
      if i=1 then portd.2=1
      if i=2 then portd.2=1
      if i=3 then portd.2=0' D2 biti.... Önemli değil
      portd.2=1
      if i=4 then portd.2=j.1
      if i=5 then portd.2=j.0
      if i=6 then portd.2=0
      if i=8 then deger.11=portd.3
      if i=9 then deger.10=portd.3
      if i=10 then deger.9=portd.3
      if i=11 then deger.8=portd.3
      if i=12 then deger.7=portd.3
      if i=13 then deger.6=portd.3
      if i=14 then deger.5=portd.3
      if i=15 then deger.4=portd.3
      if i=16 then deger.3=portd.3
      if i=17 then deger.2=portd.3
      if i=18 then deger.1=portd.3
      if i=19 then deger.0=portd.3
      analog[j]=deger
      portd.1=1
      pauseus saat
    next i
  next j
  lcdout $fe,2,#analog[1]," ",#analog[2]," ",#analog[3]," "
   pause 100 
goto loop
end


Murat Mert

Alıntı yapılan: ftsahin - 24 Temmuz 2010, 09:00:31
Eski bir kod. Üzerinde değişiklik yapılması gerekebilir.


S.A.
Sn. @ftsahin ilginiz için teşekkür ederim. İşlemi çözdüm. Allah razı olsun.
mert07