#define CHAN_A 0x00 #define CHAN_B 0x80 #define BUF_ON 0x40 #define BUF_OFF 0x00 #define GA_1 0x20 #define GA_2 0x00 #define DAC_ON 0x10 #define DAC_OFF 0x00 // Nastaveni Cable Select pinu ADC #define CS_DAC PORTDbits.RD2 void zapis_mcp4922(int hodnota, char flagy) { char dummy; CS_DAC = 1; // Vypnuti komunikace dummy = SSPBUF; // Precteni "neceho" jen pro vymazani SPI priznaku BF // Tady by mozna melo bejt cekani pred zapnutim CS, // predpoklada se, ze uz pred zavolanim funkce bylo CS == 1 CS_DAC = 0; // Zacatek komunikace SSPBUF = (char) ((hodnota & 0x0f00) >> 8) | flagy; // 4 konfiguracni bity a 11. az 8. bit pro DAC while (SSPSTATbits.BF != 1) ; // Dokud se komunikuje dummy = SSPBUF; // Precteni "neceho" jen pro vymazani SPI priznaku BF SSPBUF = (char) (hodnota & 0x00ff); // 7. az 0. bit pro DAC while (SSPSTATbits.BF != 1) ; // Dokud se komunikuje CS_DAC = 1; // Konec komunikace }