pic 16f88 ile spi haberleşmeli dac uygulaması ?

Başlatan ismailhtc, 05 Şubat 2014, 13:25:29

ismailhtc

spi konusunu yeni öğreniyorum. yapmak istediğim şey bir pic ile dac arasında bağlantı kurup analog olarak 0-5 v gerilim değeri almak.
internetten bir kod buldum.  fakat kotta rs-232 uygulması da var. ben bu kısmını kaldırıp sadece spi haberleşme yapmak istiyorum. yani dac'a spi ile bilgi gönderip 0-5v elde etmek istiyorum. kodları kendi istediğime göre düzeltemedim.  bı kısımda bana yardımcı olursanız sevinirim.
#include <16f88.h>

#fuses INTRC_IO,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock = 4000000)      
//#use i2c(MASTER,slow,sda=PIN_B1,scl=PIN_B4)
#use fast_io(B)

long val;
int vh,vl;
int dd;//dummy data

void main(){

    val=100;
   
    set_tris_b(0b10001011);
    
    //SPI_H_TO_L ??????????????????
    setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_CLK_DIV_4|SPI_SS_DISABLED);     
    set_tris_b(0b10001011);
    
    output_high(PIN_B5);
    output_low(PIN_B6);
    
    delay_ms(100); //wait for Client up  
       
    while(1){

         output_low(PIN_B5);//cs=L
         
         vh=val>>8;
         
         //
         vh |= 0b0110000;//select A,bufferd,gain=1;out enable           
      spi_write(val);
       
      //while(!spi_data_is_in());//read dummy
      //dd = spi_read(); 
          
      //output_high(PIN_B5);
      //output_low(PIN_B5);
      
      vl = val & 0xff;
      
      spi_write(val);
      
      //while(!spi_data_is_in());//read dummy
      //dd = spi_read();
                
      output_high(PIN_B5);//cs=H
      
      //output_low(PIN_B6);
      //output_high(PIN_B6);
      
      delay_us(10);
      val+=4;
      if(val > 0x7FF) val=0;
      
      if(val==0) output_toggle(PIN_A0);                         
         //delay_ms(200);

     }
         
}

[IMG]http://imagizer.imageshack.us/v2/xq90/703/d0yl.jpg[/img][/URL]