реклама на сайте
подробности

 
 
> прошу помощи по AD7794/7795, Проблема интерфейса
StasUKR
сообщение Mar 12 2013, 15:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 12-03-13
Пользователь №: 75 988



Не получается найти общий язык с АЦПехой AD7795... =(
Вроде и все последовательности с времянками соблюдаю, а простейшие ID (как признак связи) читать не получается.
Выкладываю куски кода, прошу помочь найти основную ошибку.
ЗЫ. Пишу на WinAVRе, чуть почистил код перед выпиской сюда...

Код
void ADC_SendByte( char Byte)
    {
    uint8_t            mask;
    for (mask=0x80; mask; mask>>=1 )
        {        // +++++++++++++++++++++ Shift out Bits loop
        ADC_Set_CLK(0);
        _delay_us(100);
        ADC_Set_DIN( Byte & mask);
        _delay_us(100);
        ADC_Set_CLK(1);
        _delay_us(100);
        };        // --------------------- Shift out Bits loop
    ADC_Set_DIN(1);//после каждой передачи поднять Din
    ADC_Set_CLK(1);
    };        

uint8_t    ADC_GetByte( uint8_t *BytePtr)
    {
    uint8_t            mask;
    uint8_t            Byte = 0;
    for (mask=0x80; mask; mask>>=1 )
        {        // +++++++++++++++++++++ Shift out Bits loop
        ADC_Set_CLK(0);
        _delay_us(100);
        if ( ADC_Get_DOUT() )
            Byte |= mask;
        _delay_us(100);
        ADC_Set_CLK(1);
        _delay_us(100);
        };        // --------------------- Shift out Bits loop
    
    ADC_Set_CLK(1);
    *BytePtr = Byte;
    return(1);
    };        

void ADC_Init( )
    {
    uint8_t            ID;
            // ................................... Reset all ADCs
    ADC_SendByte( 0xFF );
    ADC_SendByte( 0xFF );
    ADC_SendByte( 0xFF);
    ADC_SendByte( 0xFF );
        ///................................... Reset all ADCs
    _delay_us(500);
    ADC_SendByte(0x60);
    ADC_GetByte(&ID);

    tstw("ID=",ID); //форматный вывод результата
       }


На выходе получаю в лучщем случае 0.
ЗЫ. Поиск юзал, темы читал, как вписано в ДШ делал, но не получается считать даже ID, про преобразования молчу...


глянул тут http://electronix.ru/forum/index.php?showt...6&hl=ad7792 но не понял в каком смысле дернуть 32 раза?
32 раза моргнуть циклом 1/0 ногой Din?(32 еденицы, 32 нуля в итоге)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ruslan1
сообщение Mar 12 2013, 19:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(StasUKR @ Mar 12 2013, 17:14) *
Не получается найти общий язык с АЦПехой AD7795... =(
глянул тут http://electronix.ru/forum/index.php?showt...6&hl=ad7792 но не понял в каком смысле дернуть 32 раза?
32 раза моргнуть циклом 1/0 ногой Din?(32 еденицы, 32 нуля в итоге)

Ну вы и докопались, аж до темы 2006-го года sm.gif

Тут, как и в любом другом деле, важна методология.
1. Убедитесь, что АЦП работает (по дефолту после сброса он вроде бы преобразовывает в цикле, это можно проверить по наличию импульсов на выводе RDY (нужен pull-up подтягивающий резистор!). Если нет импульсов- убедитесь по даташиту, что по ресету состояние регистров соответствует режиму преобразования, вдруг AD что-то поменял в этой модели.
При этом обеспечьте неактивное состояние на SPI интерфейсе от включения и до конца эксперимента, вдруг Вы его куда-то загоняете и поэтому он не преобразовывает.

2. Только если первый уровень игры пройден- переходим ко второму. проверяем связь. Про сброс пачкой импульсов написано в даташите, страница Rev. D | Page 28 of 36:
Цитата
The serial interface can be reset by writing a series of 1s on the DIN input. If a Logic 1 is written to the AD7794/AD7795 line for at least 32 serial clock cycles, the serial interface is reset. This ensures that the interface can be reset to a known state if the interface gets lost due to a software error or some glitch in the system. Reset returns the interface to the state in which it is expecting a write to the communications register. This operation resets the contents of all registers to their power-on values. Following a reset, the user should allow a period of 500 μs before addressing the serial interface.


Вот код из одного старенького проекта про AD7792 (приаттачить файл с расширением "с" не разрешает почему-то, так что прямо сюда и копирую.
там даже выпиливание побитное есть закомментаренное, наверное с времен моих разборок осталось.
CODE

#include <pic18.h>

//#include "pic18cfg.h"

#include "deftype.h"

#include "ad7792_const.h"
#include "PinDef.h"
#include <always.h>

#include "var2_ext.h"


void delay_1ms(void);
void delay_ms(int nms);
u16 ADC_RequestData(u8 codeADCdev);

void delay_halphBit(void);

void initSPI (void);
u8 SPI_tx8bit(u8 txData);
u16 AD7792_RdReg16bit(u8 codeADCdev, u8 nReg);
void AD7792_WrReg16bit(u8 codeADCdev, u8 nReg, u16 wrData);
void AD7792_WrReg8bit(u8 codeADCdev, u8 nReg, u8 wrData);
void delay_1us(void);
void Ad7792_reset(void);
void ADC_Init(void);
void adc_StartCalibrZS(u8 codeADCdev);
void adc_StartCalibrFS(u8 codeADCdev);


void ADC_Init(void)
{
u8 n;
Ad7792_reset();
// delay_ms(20);

//TC_ALL
AD7792_WrReg16bit(DEVCODE_TC_ALL, AD7792_REG_CONFIG, TC_CONFIG);
AD7792_WrReg8bit (DEVCODE_TC_ALL, AD7792_REG_IO, TC_IO);

//TC1
AD7792_WrReg16bit(DEVCODE_TC1, AD7792_REG_CONFIG, TC_CONFIG_FOR_TC1);



AD7792_WrReg16bit(DEVCODE_TC_ALL, AD7792_REG_MODE, TC_MODE);

// delay_ms(300);
/*
//калибровка TC
adc_StartCalibrZS(DEVCODE_TC1);
adc_StartCalibrZS(DEVCODE_TC2);
adc_StartCalibrZS(DEVCODE_TC3);
adc_StartCalibrZS(DEVCODE_TC4);
adc_StartCalibrZS(DEVCODE_TC5);
delay_ms(1000); //время, которого точно хватит на калибровку
adc_StartCalibrFS(DEVCODE_TC1);
adc_StartCalibrFS(DEVCODE_TC2);
adc_StartCalibrFS(DEVCODE_TC3);
adc_StartCalibrFS(DEVCODE_TC4);
adc_StartCalibrFS(DEVCODE_TC5);
delay_ms(2000); //время, которого точно хватит на калибровку
*/
return;
}


void ADC_Init2(void)
{
u8 n;
Ad7792_reset();

//TC
AD7792_WrReg16bit(DEVCODE_TC_ALL, AD7792_REG_CONFIG, TC_CONFIG);

AD7792_WrReg16bit(DEVCODE_TC1, AD7792_REG_CONFIG, TC_CONFIG_FOR_TC1);

AD7792_WrReg8bit (DEVCODE_TC_ALL, AD7792_REG_IO, TC_IO);

AD7792_WrReg16bit(DEVCODE_TC_ALL, AD7792_REG_MODE, TC_MODE);

return;

}


void Ad7792_reset(void)
{
u16 n;
SPICS_TC1 = 0;
SPICS_TC2 = 0;
SPICS_TC3 = 0;
SPICS_TC4 = 0;
SPICS_TC5 = 0;
SPICS_TC6 = 0;
SPICS_TC7 = 0;
SPICS_TC8 = 0;
SPICS_TC9 = 0;
SPICS_TC10= 0;
SPICS_TC11= 0;
SPICS_TC12= 0;
SPICS_TC13= 0;
SPICS_TC14= 0;
SPICS_TC15= 0;

SPI_tx8bit(0xFF);
SPI_tx8bit(0xFF);
SPI_tx8bit(0xFF);
SPI_tx8bit(0xFF);
SPI_tx8bit(0xFF);
SPICS_TC1 = 1;
SPICS_TC2 = 1;
SPICS_TC3 = 1;
SPICS_TC4 = 1;
SPICS_TC5 = 1;
SPICS_TC6 = 1;
SPICS_TC7 = 1;
SPICS_TC8 = 1;
SPICS_TC9 = 1;
SPICS_TC10= 1;
SPICS_TC11= 1;
SPICS_TC12= 1;
SPICS_TC13= 1;
SPICS_TC14= 1;
SPICS_TC15= 1;

for (n = 0; n < 500;n++) delay_1us(); //pause 500us
for (n = 0; n < 500;n++) delay_1us(); //pause 500us

}

void initSPI (void)
{
//выключил все каналы встроенного АЦП PIC
ADCON1 = 0b00000110;

TRISC3 = 0;
TRISC4 = 1;
TRISC5 = 0;

TRIS_SPICS_TC1 = 0;
TRIS_SPICS_TC2 = 0;
TRIS_SPICS_TC3 = 0;
TRIS_SPICS_TC4 = 0;
TRIS_SPICS_TC5 = 0;
TRIS_SPICS_TC6 = 0;
TRIS_SPICS_TC7 = 0;
TRIS_SPICS_TC8 = 0;
TRIS_SPICS_TC9 = 0;
TRIS_SPICS_TC10 = 0;
TRIS_SPICS_TC11 = 0;
TRIS_SPICS_TC12 = 0;
TRIS_SPICS_TC13 = 0;
TRIS_SPICS_TC14 = 0;
TRIS_SPICS_TC15 = 0;
TRIS_SPICS_TC16 = 0;

SPICS_TC1 = 1;
SPICS_TC2 = 1;
SPICS_TC3 = 1;
SPICS_TC4 = 1;
SPICS_TC5 = 1;
SPICS_TC6 = 1;
SPICS_TC7 = 1;
SPICS_TC8 = 1;
SPICS_TC9 = 1;
SPICS_TC10 = 1;
SPICS_TC11 = 1;
SPICS_TC12 = 1;
SPICS_TC13 = 1;
SPICS_TC14 = 1;
SPICS_TC15 = 1;
SPICS_TC16 = 1;


//тактовая SPICLK = TMR2 / 2 = 24 kHz

//TMR2 F= (Fosc /4)/4) / 96 = 2304000 /(pr2+1) Hz = 24 kHz
T2CON = 0b00000101; //presc = 4 //тактовая SPICLK = (((( Fosc /4)/4) / 96))/2 = 12kHz

PR2 = 47;

//при прохождении через оптроны сигналы SPI (кроме CS) инвертируются. Меняем полярность на обратную.


//Также необходимо далее инвертировать биты данных, передаваемых/принимаемых через SPI.
SSPSTAT = 0b00000000;
SSPCON1 = 0b00100011; // TMR2out/2 = 12 kHz

}


void select_ADC_CS(u8 n)
{
// gie_off;
switch (n)
{
case DEVCODE_TC1: SPICS_TC1 = 0; goto end;
case DEVCODE_TC2: SPICS_TC2 = 0; goto end;
case DEVCODE_TC3: SPICS_TC3 = 0; goto end;
case DEVCODE_TC4: SPICS_TC4 = 0; goto end;
case DEVCODE_TC5: SPICS_TC5 = 0; goto end;
case DEVCODE_TC6: SPICS_TC6 = 0; goto end;
case DEVCODE_TC7: SPICS_TC7 = 0; goto end;
case DEVCODE_TC8: SPICS_TC8 = 0; goto end;
case DEVCODE_TC9: SPICS_TC9 = 0; goto end;
case DEVCODE_TC10: SPICS_TC10 = 0; goto end;
case DEVCODE_TC11: SPICS_TC11 = 0; goto end;
case DEVCODE_TC12: SPICS_TC12 = 0; goto end;
case DEVCODE_TC13: SPICS_TC13 = 0; goto end;
case DEVCODE_TC14: SPICS_TC14 = 0; goto end;
case DEVCODE_TC15: SPICS_TC15 = 0; goto end;
case DEVCODE_TC16: SPICS_TC16 = 0; goto end;
case DEVCODE_TC_ALL:
{
SPICS_TC1 = 0;
SPICS_TC2 = 0;
SPICS_TC3 = 0;
SPICS_TC4 = 0;
SPICS_TC5 = 0;
SPICS_TC6 = 0;
SPICS_TC7 = 0;
SPICS_TC8 = 0;
SPICS_TC9 = 0;
SPICS_TC10 = 0;
SPICS_TC11 = 0;
SPICS_TC12 = 0;
SPICS_TC13 = 0;
SPICS_TC14 = 0;
SPICS_TC15 = 0;
SPICS_TC16 = 0;
goto end;
}
default: return;
}
end:;
delay_halphBit();
delay_halphBit();
return;
}


void unselect_ADC_CS(u8 n)
{
SPICS_TC1 = 1;
SPICS_TC2 = 1;
SPICS_TC3 = 1;
SPICS_TC4 = 1;
SPICS_TC5 = 1;
SPICS_TC6 = 1;
SPICS_TC7 = 1;
SPICS_TC8 = 1;
SPICS_TC9 = 1;
SPICS_TC10 = 1;
SPICS_TC11 = 1;
SPICS_TC12 = 1;
SPICS_TC13 = 1;
SPICS_TC14 = 1;
SPICS_TC15 = 1;
SPICS_TC16 = 1;
delay_halphBit();
delay_halphBit();
}


//Запись в 8-битный регистр
void AD7792_WrReg8bit(u8 codeADCdev, u8 nReg, u8 wrData)
{
u8 tmp;

select_ADC_CS(codeADCdev);
//запись в Communications Register
tmp = (0<<7) //WEN
|(0<<6) //R/W
|((nReg&0x07)<<3) //RS2..RS0
|(0<<2); //CREAD

SPI_tx8bit(tmp);
//запись данных в регистр
SPI_tx8bit(wrData);
unselect_ADC_CS(codeADCdev);
}

//Запись в 16-битный регистр
void AD7792_WrReg16bit(u8 codeADCdev, u8 nReg, u16 wrData)
{
u8 tmp;

select_ADC_CS(codeADCdev);
//запись в Communications Register
tmp = (0<<7) //WEN
|(0<<6) //R/W
|((nReg&0x07)<<3) //RS2..RS0
|(0<<2); //CREAD

SPI_tx8bit(tmp);
//запись данных в регистр
SPI_tx8bit((u8)(wrData>>8)); //MSB
delay_halphBit();

SPI_tx8bit((u8)(wrData)); //LSB
unselect_ADC_CS(codeADCdev);
}


//чтение 16-битного регистра
u16 AD7792_RdReg16bit(u8 codeADCdev, u8 nReg)
{
u8 tmp;
u16_2u8 tmp16;

select_ADC_CS(codeADCdev);

//запись в Communications Register
tmp = (0<<7) //WEN
|(1<<6) //R/W
|((nReg&0x07)<<3) //RS2..RS0
|(0<<2); //CREAD

SPI_tx8bit(tmp);
//чтение данных (передается мусор)
tmp16._u8[1] = SPI_tx8bit(0xFF);
tmp16._u8[0] = SPI_tx8bit(0xFF);

unselect_ADC_CS(codeADCdev);
return tmp16._u16;
}

//чтение 8-битного регистра
u8 AD7792_RdReg8bit(u8 codeADCdev, u8 nReg)
{
u8 tmp, tmp8H;

select_ADC_CS(codeADCdev);

//запись в Communications Register
tmp = (0<<7) //WEN
|(1<<6) //R/W
|((nReg&0x07)<<3) //RS2..RS0
|(0<<2); //CREAD

SPI_tx8bit(tmp);
//чтение данных (передается мусор)
tmp8H = SPI_tx8bit(0x00);

unselect_ADC_CS(codeADCdev);
return tmp8H;
}

//передача байта в SPI
//выход: принятый байт
u8 SPI_tx8bit(u8 txData)
{
SSPIF = 0;
SSPBUF = txData^0xff; ////при прохождении через оптроны сигналы SPI инвертируются.

while (SSPIF == 0); //ждем окончания передачи
return SSPBUF ^ 0xff; //читаем принятый байт //при прохождении через оптроны сигналы SPI (кроме CS) инвертируются.

/*
//выпиливаем побитно

u8 rxdata = 0;
u8 txdata = txData^0xff;
u8 n;

delay_1us();
delay_1us();
delay_1us();
delay_1us();
delay_1us();

for (n = 0; n < 8; n++)
{
delay_halphBit();
PIN_SCLK = 1;
//прием
rxdata = rxdata << 1;
if (PIN_MISO != 0) rxdata = rxdata | 0x01;
//передача
delay_halphBit();
PIN_SCLK = 0;
if ((txdata & 0x80)==0) PIN_MOSI=0;
else PIN_MOSI=1;
txdata = txdata << 1;

}
return rxdata^0xff;
*/
}

void delay_halphBit(void)
{ //170us
int n;
for (n = 0; n < 50; n++) delay_1us();
}

void delay_1us(void)
{
#asm
// nop;
// nop;
// nop;
// nop
nop;
nop;
nop;
nop;
nop;
#endasm
return;
}


u16 ADC_RequestData(u8 codeADCdev)
{
u16_2u8 rez;
delay_ms(5);

select_ADC_CS(codeADCdev);
delay_ms(20);

//команда на старт АЦП
SPI_tx8bit(0x08);
SPI_tx8bit(0x20); //MSB
SPI_tx8bit(0x0F); //LSB
//пауза 0.5 сек.
unselect_ADC_CS(codeADCdev);

delay_ms(1000);
select_ADC_CS(codeADCdev);
//команда на чтение данных
SPI_tx8bit(0x58);
//чтение данных (передается мусор)
delay_ms(1);
rez._u8[1] = SPI_tx8bit(0x00);
delay_ms(1);
rez._u8[0] = SPI_tx8bit(0x00);

delay_ms(1);
SPI_tx8bit(0x58);
delay_ms(1);
rez._u8[1] = SPI_tx8bit(0x00);
delay_ms(1);
rez._u8[0] = SPI_tx8bit(0x00);

unselect_ADC_CS(codeADCdev);
return rez._u16;
}


//задержка на указанное кол-во ms
void delay_1ms(void)
{
int n;
for (n = 0; n < 420; n++) delay_1us();
return;
}

//задержка на указанное кол-во ms
void delay_ms(int nms)
{
int n;
for (n = 0; n < nms; n++) delay_1ms();
return;
}


//запуск калибровки Zero-Scale указанного АЦП
void adc_StartCalibrZS(u8 codeADCdev)
{
AD7792_WrReg16bit(codeADCdev, AD7792_REG_MODE, TC_MODE_CALIBR_ZS);
}

//запуск калибровки Full-Scale указанного АЦП
void adc_StartCalibrFS(u8 codeADCdev)
{
AD7792_WrReg16bit(codeADCdev, AD7792_REG_MODE, TC_MODE_CALIBR_FS);
}


extern void init_userTask(void);
volatile u16 Debug2;
volatile u16 Debug3;
//проверка валидности конфигурации регистров АЦП и переинициализация, если нужно.
void check_ADC_Regs(u8 codeADCdev)
{


if (DEVCODE_TC1 == codeADCdev)
{
Debug2 = AD7792_RdReg16bit(codeADCdev, AD7792_REG_CONFIG);
if (TC_CONFIG_FOR_TC1 != Debug2)
{//вторая попытка чтения регистра
Debug2 = AD7792_RdReg16bit(codeADCdev, AD7792_REG_CONFIG);
Debug3 = AD7792_REG_CONFIG;
if (TC_CONFIG_FOR_TC1 != Debug2) goto err;
}
}
else
{
Debug2 = AD7792_RdReg16bit(codeADCdev, AD7792_REG_CONFIG);
if (TC_CONFIG != Debug2)
{//вторая попытка чтения регистра
Debug2 = AD7792_RdReg16bit(codeADCdev, AD7792_REG_CONFIG);
Debug3 = AD7792_REG_CONFIG;
if (TC_CONFIG != Debug2) goto err;
}
}
Debug2 = AD7792_RdReg8bit(codeADCdev, AD7792_REG_IO);
if (TC_IO != Debug2)
{//вторая попытка чтения регистра
Debug2 = AD7792_RdReg8bit(codeADCdev, AD7792_REG_IO);
Debug3 = AD7792_REG_IO;
if (TC_IO != Debug2) goto err;
}

return; //OK

//нужна переинициализация
err:;
nErr_ADC[codeADCdev] ++;
// #asm
// nop;
// nop;
// #endasm

ADC_Init();
init_userTask();
}


P.S. Кстати, бытует мнение, что техника работает лучше, если к ней относится как к чему-то разумному. Ну, не любит оно когда его как-то неуважительно или непривычно называют. У меня один знакомый процессор называет не иначе как "профессор", ну те и отвечают ему взаимностью. А на "АЦПху" оно и обидится может, вдруг у Вас тот самый случай, мстит оно Вам maniac.gif
Go to the top of the page
 
+Quote Post
StasUKR
сообщение Mar 13 2013, 08:33
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 12-03-13
Пользователь №: 75 988



Спасибо за ответ! a14.gif
Свое отношение к технике пересмотрю, не зря ведь однажды писал в начале кода комментарий с заговором от злых "кодовых духов" cool.gif wacko.gif

Кристал АЦП работает, дергает Din раз в 60мс...

Прочесть ID (1 байт) не могу, на выходе 0

Переписал функцию ресета:
Код
void ADC_Id(void)
    {
    uint8_t            ID;
            // ................................... Reset all ADCs
         ADC_Set_DIN(1); //Переводим Din в 1
         _delay_us(30);
        
    for (uint8_t n=0; n<32; n++)
        {    
         ADC_Set_CLK(0);
         _delay_us(100);
         ADC_Set_CLK(1);
         _delay_us(100);
        };    
     _delay_us(500);
          ADC_Set_DIN(0); //Переводим Din в 0
                // ................................... Reset all ADCs
    ADC_SendByte(0x60);
    ADC_GetByte(&ID);
    
    tstw("ID=",ID);//форматированый вывод ID
    }


еще пробовал после 32 клоков с Din=1 отпралять 4 бита по 0xFF(тот же сброс) перед 0x60...Безрезультатно, на выжоде 0...
Функции ADC_GetByte, ADC_SendByte остались без изменений.
Я ведь верно запрашиваю ID, 0x60 и чтение байта?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Mar 13 2013, 21:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(StasUKR @ Mar 13 2013, 10:33) *
Кристал АЦП работает, дергает Din раз в 60мс...

Прочесть ID (1 байт) не могу, на выходе 0


Еще не разобрались? sm.gif
тогда по порядку:
0. Надеюсь, нога DVdd АЦП у Вас подключена к тому же питанию, что и процессор (то есть уровни согласованы)
1. Я так понял, Вы CS не дергаете, то есть он навсегда в ноль притянут? Я в этом режиме не работал, он мне кажется очень слабо устойчивым к помехам (нет синхронизации начала нового байта по CS). Для исключения поблем временно можете попробовать им все-таки дергать согласно даташиту (Rev. D | Page 9 of 36). То есть сбросили серией единиц, дальше CS=1, delay(1000 us), выход из инициализации.
2. 0x60 и потом чтение ID- это правильно.
3. про запрос на чтение ID: убедитесь в том, что передаете именно то что нужно. Интересно посмотреть на функцию "ADC_Set_DIN()", как Вы там внутри определяете ноль или единицу выставлять. Тут, конечно здорово бы помог цифровой осциллограф, запускающий развертку по спаду CS и показывающий развитие на выводах CLK и MOSI, Но можно и пошагово в отладчике, измерять тестером на выводе процессора, рисовать на бумаге. Там всего-то 2 байта пройти по клокам CLK, от спада CS=0 до окончания чтения (когда поставите CS=1)
4. Если запрос принят (сигнал дошел до ножек CS/DIN/CLK микросхемы АЦП, вдруг у вас там непропай какой-нибудь)- смотрите ответ, это второй байт в этом пакете.

Чудес не бывает, где-то ошибку найдете. SPI шина тем и хороша, можно смотреть медленно и не спеша sm.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- StasUKR   прошу помощи по AD7794/7795   Mar 12 2013, 15:14
- - Tanya   Цитата(StasUKR @ Mar 12 2013, 19:14) Не п...   Mar 12 2013, 16:50
|- - StasUKR   Спасибо за ответ!!! Сейчас еду в кома...   Mar 14 2013, 07:07
|- - StasUKR   Цитата(Ruslan1 @ Mar 14 2013, 00:42) Еще ...   Mar 18 2013, 10:20
|- - StasUKR   Доброе время суток Пошагово проверил передачу 0x6...   Mar 19 2013, 11:53
|- - Ruslan1   StasUKR, чудес не бывает. Разберемся. 1. Покажите...   Mar 19 2013, 13:34
- - Plain   Вы бы показали здесь актуальный вариант того, кто ...   Mar 19 2013, 12:51
- - StasUKR   схема Осцилограмм сейчас нет, есть только ручной ...   Mar 19 2013, 14:27
|- - Ruslan1   Цитата(StasUKR @ Mar 19 2013, 16:27) Осци...   Mar 19 2013, 15:10
- - StasUKR   Взял номальный 2х канальный осцилл, посмотрел осци...   Mar 20 2013, 07:57
|- - Ruslan1   Цитата(StasUKR @ Mar 20 2013, 09:57) ЗЫ. ...   Mar 20 2013, 14:40
|- - StasUKR   Цитата(Ruslan1 @ Mar 20 2013, 17:40) Ну, ...   Mar 21 2013, 07:31
|- - StasUKR   сейчас получаю ID от каждого АЦП по "4Е...   Mar 21 2013, 09:06
|- - Ruslan1   Цитата(StasUKR @ Mar 21 2013, 09:31) Опиш...   Mar 21 2013, 09:09
- - StasUKR   чтение же communication register дает 0x40... сде...   Mar 21 2013, 10:36
- - StasUKR   подымая старую тему С АЦП работу наладил, все ко...   May 31 2013, 12:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016