Ahoj,
snažím se vytvořit třídu pro práci s ADC převodníkem, který je připojen na SPI rozhraní FT2232.
//---------------------------------------------------------------------------
#ifndef ADCclassH
#define ADCclassH
#include "FTCSPI.h"
//hodnoty zapisovane do control urcuji cilovy registr ADC
#define CONFIG_REG 0x10
#define MODE_REG 0x08
#define DATA_REG 0x58
#define ID_REG 0x60
//hodnoty zapisovane do registru - ovladani ADC
#define PW_DOWN 0x60 //zapisuje jen Hight Byte, Low Byte obsahuje FS bity
#define SINGLE_CONV 0x20 //zapisuje jen Hight Byte, Low Byte obsahuje FS bity
#define ZERO_CALIB 0x80 //kalibrace nuly, pouziva Internal Zero-Scale Calibration
#define FULL_CALIB 0xA0 //kalibrace rozsahu, pouziva Internal Full-Scale Calibration
#define SAMPLE_RATE 0x04 //nastavuje tSETLE 32 mS
#define RANGE20 0x06 //rozsah 18 mV
#define CONFIGURE 0x90 //obsah Low Byte config. registru bez Gain a Chanel
#define Write16() (SPI_Write(SPIhandle, &InitCond, true, false, 8, &control, 1, true, 16, &outADC, 2, &WriteCompl, &OutPins))
class ADCclass
{
public:
FTC_HANDLE SPIhandle; //= NULL;
FTC_STATUS SPIstatus;
FTC_CHIP_SELECT_PINS SelPins; //= {0,1,1,1,1}; //struktura pro nastaveni Select Pins
FTC_INPUT_OUTPUT_PINS IOPins; //= {0,0,1,0,1,0,1,0}; //struktura pro nastaveni I/O Pins
FTC_LOW_HIGH_PINS vstupy; //struktura obsahuje stav GPIOH
FTC_INIT_CONDITION InitCond; //= {0, 1, 1, ADBUS3ChipSelect};
FTC_WAIT_DATA_WRITE WriteCompl; //= {0, ADBUS2DataIn, 1, 1};
FTC_HIGHER_OUTPUT_PINS OutPins; //= {0, 0, 0, 0, 0, 0, 0, 0};
FTC_HIGHER_OUTPUT_PINS piny;
ReadDataByteBuffer inADC; //data z ADC
WriteDataByteBuffer outADC; //data do ADC
WriteControlByteBuffer control; //data pro Communication Register ADC
DWORD prijato;
DWORD IDZarizeni;
DWORD PocetZarizeni;
char JmenoZarizeni[100];
ADCclass();
};
//---------------------------------------------------------------------------
#endif
zatím mám jen hlavičkový soubor (viz výše) a prázdný konstruktor. Při pokusu o překlad obdržím přehled chyb začínající chybou FTCSPI.h(43): E2257 , expected. Nikdy jsem s FTCSPI.h problémy neměl. Nedaří se mi najít, kde je problém.
Opis FTCSPI.h
//---------------------------------------------------------------------------
#ifndef ADCclassH
#define ADCclassH
#include "FTCSPI.h"
//hodnoty zapisovane do control urcuji cilovy registr ADC
#define CONFIG_REG 0x10
#define MODE_REG 0x08
#define DATA_REG 0x58
#define ID_REG 0x60
//hodnoty zapisovane do registru - ovladani ADC
#define PW_DOWN 0x60 //zapisuje jen Hight Byte, Low Byte obsahuje FS bity
#define SINGLE_CONV 0x20 //zapisuje jen Hight Byte, Low Byte obsahuje FS bity
#define ZERO_CALIB 0x80 //kalibrace nuly, pouziva Internal Zero-Scale Calibration
#define FULL_CALIB 0xA0 //kalibrace rozsahu, pouziva Internal Full-Scale Calibration
#define SAMPLE_RATE 0x04 //nastavuje tSETLE 32 mS
#define RANGE20 0x06 //rozsah 18 mV
#define CONFIGURE 0x90 //obsah Low Byte config. registru bez Gain a Chanel
#define Write16() (SPI_Write(SPIhandle, &InitCond, true, false, 8, &control, 1, true, 16, &outADC, 2, &WriteCompl, &OutPins))
class ADCclass
{
public:
FTC_HANDLE SPIhandle; //= NULL;
FTC_STATUS SPIstatus;
FTC_CHIP_SELECT_PINS SelPins; //= {0,1,1,1,1}; //struktura pro nastaveni Select Pins
FTC_INPUT_OUTPUT_PINS IOPins; //= {0,0,1,0,1,0,1,0}; //struktura pro nastaveni I/O Pins
FTC_LOW_HIGH_PINS vstupy; //struktura obsahuje stav GPIOH
FTC_INIT_CONDITION InitCond; //= {0, 1, 1, ADBUS3ChipSelect};
FTC_WAIT_DATA_WRITE WriteCompl; //= {0, ADBUS2DataIn, 1, 1};
FTC_HIGHER_OUTPUT_PINS OutPins; //= {0, 0, 0, 0, 0, 0, 0, 0};
FTC_HIGHER_OUTPUT_PINS piny;
ReadDataByteBuffer inADC; //data z ADC
WriteDataByteBuffer outADC; //data do ADC
WriteControlByteBuffer control; //data pro Communication Register ADC
DWORD prijato;
DWORD IDZarizeni;
DWORD PocetZarizeni;
char JmenoZarizeni[100];
ADCclass();
};
//---------------------------------------------------------------------------
#endif
hu