test

Dependencies:   ad5422_arduino mbed LT1446 ADS1248-1 LM35-1 Flash FT813 PGA280_ADS1259

Committer:
vitlog
Date:
Mon Jun 08 05:50:32 2020 +0000
Revision:
0:98fcc06c66bf
Child:
1:5d28312892aa
123

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vitlog 0:98fcc06c66bf 1 #include "PerifConfig.h"
vitlog 0:98fcc06c66bf 2 #include "PGA280.h"
vitlog 0:98fcc06c66bf 3 #include "ADS1259.h"
vitlog 0:98fcc06c66bf 4 #include "PGA280ADS1259.h"
vitlog 0:98fcc06c66bf 5 #include "main.h"
vitlog 0:98fcc06c66bf 6
vitlog 0:98fcc06c66bf 7 /*Таймер для вызова функции каждые 40 мс*/
vitlog 0:98fcc06c66bf 8 Ticker adctask;
vitlog 0:98fcc06c66bf 9 /*Конец*/
vitlog 0:98fcc06c66bf 10
vitlog 0:98fcc06c66bf 11 char mbflag;
vitlog 0:98fcc06c66bf 12 unsigned char pga280gain;
vitlog 0:98fcc06c66bf 13 char UComandFlag;
vitlog 0:98fcc06c66bf 14 volatile unsigned char UComand;
vitlog 0:98fcc06c66bf 15 volatile long tempdata=0;
vitlog 0:98fcc06c66bf 16 char ch=0; //адрес на плате ТЭД-2 = 6
vitlog 0:98fcc06c66bf 17 float x=0;
vitlog 0:98fcc06c66bf 18 float k;
vitlog 0:98fcc06c66bf 19 unsigned char str[];
vitlog 0:98fcc06c66bf 20
vitlog 0:98fcc06c66bf 21
vitlog 0:98fcc06c66bf 22
vitlog 0:98fcc06c66bf 23 //функция чтения АДС для выполнения в задаче
vitlog 0:98fcc06c66bf 24 void readADC()
vitlog 0:98fcc06c66bf 25 {
vitlog 0:98fcc06c66bf 26 tempdata=ads1259_readData(5); //функция может зависать (надо избавиться от бесконечного цикла)
vitlog 0:98fcc06c66bf 27 x=NormADC(tempdata);
vitlog 0:98fcc06c66bf 28 printf("%08f\r\n",x);
vitlog 0:98fcc06c66bf 29 }
vitlog 0:98fcc06c66bf 30
vitlog 0:98fcc06c66bf 31
vitlog 0:98fcc06c66bf 32 float inline NormADC(long data)
vitlog 0:98fcc06c66bf 33 {
vitlog 0:98fcc06c66bf 34 x=data*2.5/0x800000;
vitlog 0:98fcc06c66bf 35 //x=x*8/(1<<pga280gain);
vitlog 0:98fcc06c66bf 36 return x;
vitlog 0:98fcc06c66bf 37 }
vitlog 0:98fcc06c66bf 38
vitlog 0:98fcc06c66bf 39 void ComandCheck()
vitlog 0:98fcc06c66bf 40 {
vitlog 0:98fcc06c66bf 41 if(UART.getc()=='/')
vitlog 0:98fcc06c66bf 42 {
vitlog 0:98fcc06c66bf 43 UART_gets(16); //моя функция на время
vitlog 0:98fcc06c66bf 44 UART.printf("%c\r\n",str[0]);
vitlog 0:98fcc06c66bf 45 switch (str[0]){
vitlog 0:98fcc06c66bf 46 case 'p':{
vitlog 0:98fcc06c66bf 47 pga280gain=str[1]; //присваиваем числовое значение команды взятое из символа цифры
vitlog 0:98fcc06c66bf 48 pga280gain-=0x30;
vitlog 0:98fcc06c66bf 49 ch=5;
vitlog 0:98fcc06c66bf 50 pga280_setGAIN(pga280gain,ch);
vitlog 0:98fcc06c66bf 51 ch=0;
vitlog 0:98fcc06c66bf 52 break;}
vitlog 0:98fcc06c66bf 53 case 'g': {
vitlog 0:98fcc06c66bf 54 //запустить задачу чтения АЦП каждые 40 мс (25 герц)
vitlog 0:98fcc06c66bf 55 adctask.attach(&readADC,0.04);
vitlog 0:98fcc06c66bf 56 break;}
vitlog 0:98fcc06c66bf 57 case's': {
vitlog 0:98fcc06c66bf 58 adctask.detach();
vitlog 0:98fcc06c66bf 59 break;}
vitlog 0:98fcc06c66bf 60 case 'd':
vitlog 0:98fcc06c66bf 61 //MBFlagRegister.DAC=1;
vitlog 0:98fcc06c66bf 62 break;
vitlog 0:98fcc06c66bf 63 case 'e':{
vitlog 0:98fcc06c66bf 64 tempdata=pga280_readOneRegisterDevice(PGA280_ERROR_ADR,5);//чтение ошибок
vitlog 0:98fcc06c66bf 65 printf("ERRORS %X\n",tempdata);
vitlog 0:98fcc06c66bf 66 break;}
vitlog 0:98fcc06c66bf 67 case 'r':{
vitlog 0:98fcc06c66bf 68 //перезагрука
vitlog 0:98fcc06c66bf 69 printf("System Reset\r\n");
vitlog 0:98fcc06c66bf 70 NVIC_SystemReset();
vitlog 0:98fcc06c66bf 71 break;}
vitlog 0:98fcc06c66bf 72 default:
vitlog 0:98fcc06c66bf 73 //MBFlagRegister.TMLS=0; //починка зависания (не работает)
vitlog 0:98fcc06c66bf 74 break;
vitlog 0:98fcc06c66bf 75 }
vitlog 0:98fcc06c66bf 76 }
vitlog 0:98fcc06c66bf 77 }
vitlog 0:98fcc06c66bf 78
vitlog 0:98fcc06c66bf 79 int main()
vitlog 0:98fcc06c66bf 80 {
vitlog 0:98fcc06c66bf 81 SPI1_MasterInitMode(0);
vitlog 0:98fcc06c66bf 82
vitlog 0:98fcc06c66bf 83 //запустить задачу проверки команды по прерыванию УАРТ
vitlog 0:98fcc06c66bf 84 UART.attach(&ComandCheck,Serial::RxIrq);
vitlog 0:98fcc06c66bf 85
vitlog 0:98fcc06c66bf 86 EN1=1;
vitlog 0:98fcc06c66bf 87 ch=5;
vitlog 0:98fcc06c66bf 88 //pga280_setAdress(ch);
vitlog 0:98fcc06c66bf 89 pga280_ads1259_init(ch); //инициализировать АЦП по адресу на плате ТЭД-2 = 5 (4)
vitlog 0:98fcc06c66bf 90 printf("\r\n");
vitlog 0:98fcc06c66bf 91 tempdata=pga280_readOneRegisterDevice(PGA280_BUF_TIMEOUT_ADR,ch);
vitlog 0:98fcc06c66bf 92 printf("Timeout %X\n",tempdata);
vitlog 0:98fcc06c66bf 93 wait_ms(20);
vitlog 0:98fcc06c66bf 94 pga280_setGAIN(GAIN_1_PGA280,ch);
vitlog 0:98fcc06c66bf 95 pga280_setMUX(2,ch);
vitlog 0:98fcc06c66bf 96 pga280gain=3; // gain=1 (0x03)
vitlog 0:98fcc06c66bf 97 tempdata=pga280_readOneRegisterDevice(PGA280_ERROR_ADR,ch);//чтение ошибок
vitlog 0:98fcc06c66bf 98 printf("Errors %X\n",tempdata);
vitlog 0:98fcc06c66bf 99 /*Конец*/
vitlog 0:98fcc06c66bf 100
vitlog 0:98fcc06c66bf 101
vitlog 0:98fcc06c66bf 102 while(1)
vitlog 0:98fcc06c66bf 103 {
vitlog 0:98fcc06c66bf 104
vitlog 0:98fcc06c66bf 105 wait_ms(100);
vitlog 0:98fcc06c66bf 106 }
vitlog 0:98fcc06c66bf 107 }
vitlog 0:98fcc06c66bf 108