
// SPIDAC:MPCP4922マスターテストプログラム
//コマンドH (^A/B,buf,ga,^shdn,d11,d10,d9,d8)
//コマンドL (d7,d6, ,d0)
//^A/B: select out 0:A 1:B
//buf vrefへのバッファ回路 1:bufferd 0:unbufferd(default)
//ga:gain 1:d/4096 0:2*d/4096
//shdwn: 1:output enable 0:output is high impedance
//マスタの回路は、C4,C3をI2C接続
//ポートB(下位4bit)、A0 をLED表示(動作確認用)
#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=0;
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(vh);
//while(!spi_data_is_in());//read dummy
//dd = spi_read();
//output_high(PIN_B5);
//output_low(PIN_B5);
vl = val & 0xff;
spi_write(vl);
//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);
}
}