test
Dependencies: ad5422_arduino mbed LT1446 ADS1248-1 LM35-1 Flash FT813 PGA280_ADS1259
main.cpp@0:98fcc06c66bf, 2020-06-08 (annotated)
- Committer:
- vitlog
- Date:
- Mon Jun 08 05:50:32 2020 +0000
- Revision:
- 0:98fcc06c66bf
- Child:
- 1:5d28312892aa
123
Who changed what in which revision?
User | Revision | Line number | New 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 |