test
Dependencies: ad5422_arduino mbed LT1446 ADS1248-1 LM35-1 Flash FT813 PGA280_ADS1259
main.cpp
- Committer:
- vitlog
- Date:
- 2020-06-08
- Revision:
- 0:98fcc06c66bf
- Child:
- 1:5d28312892aa
File content as of revision 0:98fcc06c66bf:
#include "PerifConfig.h" #include "PGA280.h" #include "ADS1259.h" #include "PGA280ADS1259.h" #include "main.h" /*Таймер для вызова функции каждые 40 мс*/ Ticker adctask; /*Конец*/ char mbflag; unsigned char pga280gain; char UComandFlag; volatile unsigned char UComand; volatile long tempdata=0; char ch=0; //адрес на плате ТЭД-2 = 6 float x=0; float k; unsigned char str[]; //функция чтения АДС для выполнения в задаче void readADC() { tempdata=ads1259_readData(5); //функция может зависать (надо избавиться от бесконечного цикла) x=NormADC(tempdata); printf("%08f\r\n",x); } float inline NormADC(long data) { x=data*2.5/0x800000; //x=x*8/(1<<pga280gain); return x; } void ComandCheck() { if(UART.getc()=='/') { UART_gets(16); //моя функция на время UART.printf("%c\r\n",str[0]); switch (str[0]){ case 'p':{ pga280gain=str[1]; //присваиваем числовое значение команды взятое из символа цифры pga280gain-=0x30; ch=5; pga280_setGAIN(pga280gain,ch); ch=0; break;} case 'g': { //запустить задачу чтения АЦП каждые 40 мс (25 герц) adctask.attach(&readADC,0.04); break;} case's': { adctask.detach(); break;} case 'd': //MBFlagRegister.DAC=1; break; case 'e':{ tempdata=pga280_readOneRegisterDevice(PGA280_ERROR_ADR,5);//чтение ошибок printf("ERRORS %X\n",tempdata); break;} case 'r':{ //перезагрука printf("System Reset\r\n"); NVIC_SystemReset(); break;} default: //MBFlagRegister.TMLS=0; //починка зависания (не работает) break; } } } int main() { SPI1_MasterInitMode(0); //запустить задачу проверки команды по прерыванию УАРТ UART.attach(&ComandCheck,Serial::RxIrq); EN1=1; ch=5; //pga280_setAdress(ch); pga280_ads1259_init(ch); //инициализировать АЦП по адресу на плате ТЭД-2 = 5 (4) printf("\r\n"); tempdata=pga280_readOneRegisterDevice(PGA280_BUF_TIMEOUT_ADR,ch); printf("Timeout %X\n",tempdata); wait_ms(20); pga280_setGAIN(GAIN_1_PGA280,ch); pga280_setMUX(2,ch); pga280gain=3; // gain=1 (0x03) tempdata=pga280_readOneRegisterDevice(PGA280_ERROR_ADR,ch);//чтение ошибок printf("Errors %X\n",tempdata); /*Конец*/ while(1) { wait_ms(100); } }