ads1259
Dependents: Chromatograph_Mobile Chromatograph_Mobile
PGA280.cpp
- Committer:
- vitlog
- Date:
- 2020-06-22
- Revision:
- 1:533ce2102fcc
- Parent:
- 0:f9ba28ab9f4c
File content as of revision 1:533ce2102fcc:
#include "PGA280.h" #include <math.h> /*Повторное объявление структур, из-за матюгов линковщика*/ __PGA280_GPIO_t PGA280_GPIO; __PGA280_MUX_GAIN_t PGA280_MUX_GAIN; __PGA280_SPI_MODE_t PGA280_SPI_MODE; __PGA280_BUF_TIMEOUT_t PGA280_BUF_TIMEOUT; __PGA280_ERROR_t PGA280_ERROR; adress_t adress; void pga280_setAdress ( unsigned char adr ) /*Установить адрес микросемы на плате ТЭД-2 для работы*/ { adress.adr=adr; ADR0 = adress.adr0; ADR1 = adress.adr1; ADR2 = adress.adr2; } void pga280_resetAdress ( void ) /*Сбросить адрес микросхемы на плате ТЭД-2*/ { ADR0 = 0; ADR1 = 0; ADR2 = 0; } char pga280_sendCommandDevice ( unsigned char command, unsigned char adr ) /*Отправить устройству по адресу "adr" команду*/ { pga280_setAdress ( adr ); CS = 0; SPI1MasterTransferByte(command); CS = 1; //pga280_resetAdress (); return 0xff; } unsigned char pga280_readOneRegisterDevice ( unsigned char reg, unsigned char adr) /*Прочитать регистр "reg" с устройства по адресу "adr" Функция возвращает значение регистра*/ { unsigned char out_value = 0; pga280_setAdress ( adr ); CS = 0; SPI1MasterTransferByte ( READ_PGA280 | reg ); out_value = SPI1MasterTransferByte(0x00 ); CS = 1; //pga280_resetAdress (); return out_value; } void pga280_writeOneRegisterDevice (unsigned char reg, uint8_t data, unsigned char adr) /*Записать в регистр "reg" данные "data" в устройство по адресу "adr"*/ { pga280_setAdress ( adr ); CS = 0; SPI1MasterTransferByte ( WRITE_PGA280 | reg ); SPI1MasterTransferByte ( data ); CS = 1; //pga280_resetAdress (); } void pga280_writeBufOneRegisterDevice (unsigned char reg, unsigned char data, unsigned char adr) { pga280_setAdress ( adr ); CS = 0; SPI1MasterTransferByte ( WRITE_BUF_PGA280 | reg ); SPI1MasterTransferByte ( data ); CS = 1; //pga280_resetAdress (); } void pga280_directCS ( unsigned char ex_cs, unsigned char adr ) { pga280_setAdress ( adr ); CS = 0; SPI1MasterTransferByte ( CS_DIRECT_PGA280 | ex_cs ); CS = 1; //pga280_resetAdress (); } void pga280_resetDevice ( unsigned char adr ) { pga280_writeOneRegisterDevice ( PGA280_RESET_ADR, 1, adr ); } void pga280_setMUX ( unsigned char mux, unsigned char adr ) /*Выбрать канал АЦП "mux" на микросхеме по адресу "adr"*/ { PGA280_MUX_GAIN.MUX=mux; pga280_writeOneRegisterDevice ( PGA280_MUX_GAIN_ADR, PGA280_MUX_GAIN.w, adr ); } void pga280_setGAIN ( unsigned char gain, unsigned char adr ) /*Установить коэффициент усиления "gain" на устройстве (pga280) по адресу "adr" (коэффициенты написаны в заголовочном файле) */ { PGA280_MUX_GAIN.GAIN=gain; pga280_writeOneRegisterDevice ( PGA280_MUX_GAIN_ADR, PGA280_MUX_GAIN.w, adr ); //запись в адрес регистра содержимого регистра } void pga280_directCsBegin ( unsigned char exCS, unsigned char adr ) { pga280_setAdress ( adr ); CS = 0; SPI1MasterTransferByte ( CS_DIRECT_PGA280 | exCS ); } void pga280_directCsEnd ( void ) { CS = 1; //RESET=0; //pga280_resetAdress (); } void pga280_setGPIO ( unsigned char num, unsigned char adr ) /*Установить в лог. 1 GPIO вывод с номером "num" на устройстве по адресу "adr"*/ { PGA280_GPIO.GPIO |= 1 << num; pga280_writeOneRegisterDevice ( PGA280_GPIO_DATA_ADR, PGA280_GPIO.w, adr ); } void pga280_resetGPIO ( unsigned char num, unsigned char adr ) /*Сбросить в лог. 0 GPIO вывод с номером "num" на устройстве по адресу "adr"*/ { PGA280_GPIO.GPIO &= ~(1 << num); pga280_writeOneRegisterDevice ( PGA280_GPIO_DATA_ADR, PGA280_GPIO.w, adr ); }