// 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); } }