Ccs c mcp4922 dac kullanımı

muratmert4

Usta Üye
Katılım
26 Eyl 2007
Mesajlar
1,107
Puanları
156
Yaş
50
Konum
ANTALYA
3 yıl önce mcp4922 için yaptığım kütüphane yazılımı **çalışıyor**
Bir arkadaşımıza lazım olmuş. Kendisine gönderdim.
belki başka arkadaşlarımıza lazım olur...

C:
#include <18F45K22.h>
#device ADC=10
#use delay(crystal=20000000)
//#use spi (MASTER, SPI1, MODE=3, BITS=8, STREAM=SPI_1)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)

int CS1=pin_D0, CS2=pin_D1, CS3=pin_D2;
#define LDAC pin_D3

#define DAC0  112           // dacA
#define DAC1  240          // dacB

#define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
#define SPI_MODE_1 (SPI_L_TO_H)
#define SPI_MODE_2 (SPI_H_TO_L)
#define SPI_MODE_3 (SPI_H_TO_L | SPI_XMIT_L_TO_H)

int16 veri1=0,veri2=0;

          

 void dac_out(int CS, int dac_kanal, long data)
    {
       int byte1, byte0;
       byte1 = dac_kanal | (make8(data,1)); 
       byte0=make8(data,0);
      
       output_low(CS);
       delay_us(100);
       spi_write(byte1);
       spi_write(byte0);
       output_high(CS);
       delay_us(100);
       output_low(LDAC);
       delay_us(100);
       output_high(LDAC);

    }


void main()
{
setup_spi(SPI_MASTER | SPI_CLK_DIV_16 | SPI_L_TO_H | SPI_SAMPLE_AT_END);
  // setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_4 );
   //setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_16);
   output_high(CS1);
   output_high(CS2);
   output_high(CS3);
   output_low(LDAC);
   veri1=100;
   veri2=200;
   while(TRUE)
   {
      printf("veri1= %lu    veri2= %lu\n\r",veri1,veri2);
    
      dac_out(CS1,DAC0,veri1);
      delay_ms(2);
      dac_out(CS1,DAC1,veri1);
      delay_ms(2);
      dac_out(CS2,DAC0,veri2);
      delay_ms(2);
      dac_out(CS2,DAC1,veri2);
      delay_ms(2);
      

      veri1+=10;
       veri2+=10;
      
      if(veri1>4095){veri1=200;}
      delay_ms(2);
      
      if(veri2>4095){veri2=100;}
      delay_ms(2);
      
   }

}
 
Selam hocam ccs de kod yazmaya yeni başladım editöre birkaç satır yazdım
output_b(0) ; ALTI KIRMIZI Çizgili olduğundan derlenmiyor hata alıyorum bunu nasıl düzeltirim.
Kodu bir türlü derleyemedim neden olabilir
 

Ekli dosyalar

  • Screenshot_20191010_013053_com.google.android.apps.photos~2.jpg
    409.2 KB · Görüntüleme: 37
Hocam merhaba @muratmert4. 16f877a kullanarak css c dilinde mcp4922 kullanmam gerekiyor ama MCP4922 den çıkış almayı bir türlü beceremedim. Yardımcı olursanız çok sevinirim. İyi Çalışmalar...
 
Hocam merhaba @muratmert4. 16f877a kullanarak css c dilinde mcp4922 kullanmam gerekiyor ama MCP4922 den çıkış almayı bir türlü beceremedim. Yardımcı olursanız çok sevinirim. İyi Çalışmalar...
!8f serisi kullanmaya geçmenizi tavsiye ederim...
pic16f877 ile ilgili şemanızı ve kodlarınızı paylaşırsanız yardımcı olmaya çalışırım...
 
!8f serisi kullanmaya geçmenizi tavsiye ederim...
pic16f877 ile ilgili şemanızı ve kodlarınızı paylaşırsanız yardımcı olmaya çalışırım...
Okul projem gereği 16f877a kullanmam gerekiyor maalesef. Şu an tek ihtiyacım olan mcp4922'nin çıkışından herhangi bir çıkış almak. Onu hallettikten sonra çok rahat ilerletebileceğim projeyi. (Fotoda terminali keyfi ekledim, şu an için lazım değil)
 

Ekli dosyalar

  • Screenshot_1.png
    73.6 KB · Görüntüleme: 32
CCS C ve proteusta bir similayon yapayım
 
PIC16F877A ile simülasyon dosyasını da ekledim. Kolay gelsin...
 

Ekli dosyalar

  • pic16f877A_mcp4922.zip
    71.3 KB · Görüntüleme: 21
PIC16F877A ile simülasyon dosyasını da ekledim. Kolay gelsin...
Hocam çok teşekkür ediyorum ellerinize sağlık. Süpersiniz.

Bir sorum olacaktı kodla ilgili,

#define DAC0 112 // dacA
#define DAC1 240 // dacB

Bu kısmı ve

byte1 = dac_kanal | (make8(data,1));
bu kısmı anlayamadım. dac_kanal dediğimiz şey ne oluyor tam olarak?
 
Son düzenleme:

#define DAC0 112 // dacA dac entegresinin a çıkışının register adresi
#define DAC1 240 // dacB dac entegresinin b çıkışının register adresi
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…