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);
    }
}