Zx80 0 21 декабря, 2021 Опубликовано 21 декабря, 2021 (изменено) · Жалоба Привет. Подключил по даташиту AD7714. Привожу скриншоты осцилограмм на DRDY. Вижу что цифрует, но не могу по даташиту определить правильные ли длительности. Подскажите плиз как разобраться. Изменено 21 декабря, 2021 пользователем Zx80 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 21 декабря, 2021 Опубликовано 21 декабря, 2021 · Жалоба По первому графику выходит где то 58 отсчётов в секунду. По второму: DRDY = 500 × tCLK IN У вас 200 us значит tCLK IN= 400 ns что эквивалентно частоте 2.5 MГц что является верхним порогом для частоты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 21 декабря, 2021 Опубликовано 21 декабря, 2021 · Жалоба Забыл уже этот АЦП, но, насколько помню, задний фронт на DRDY выставляется по готовности данных. Сама длина импульса неважна, важен лишь фронт. Назад в лог. 1 он возвращается как только Вы вычитали данные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 21 декабря, 2021 Опубликовано 21 декабря, 2021 (изменено) · Жалоба Quote задний фронт на DRDY выставляется по готовности данных. Сама длина импульса неважна, важен лишь фронт. Назад в лог. 1 он возвращается как только Вы вычитали данные. инициализация spi(0x24); /* set the channel AIN1-AIN2 and set the next operation as write to the filter high */ spi(0x4F); /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */ spi(0x34); /* set the next operation as a write to the filter low register channel AIN1/AIN2 */ spi(0xA0); /* max filter word allowed for low part of the filterword */ spi(0x14); /* set the operation as a write to the mode register */ spi(0x20); /* set gain to 1, burnout current off, no filter sync, and do a self calibration вкл питания, сброс, инициализация. Я не читаю. По идее должен видеть ноль пока не опрошу данные, а в итоге (импульс послед) вероятно возбуждение. При чем при сбросах иногда вижу устойчивый ноль (данные готовы). Че у меня не так ? Изменено 21 декабря, 2021 пользователем Zx80 уточнения ответа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 21 декабря, 2021 Опубликовано 21 декабря, 2021 · Жалоба 1 hour ago, Zx80 said: По идее должен видеть ноль пока не опрошу данные Нет. В даташите написано, что если Вы не считали данные, то DRDY поднимется в единицу через некоторое время сам. 1 hour ago, Zx80 said: Че у меня не так ? Пока только невнимательное чтение док) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 23 декабря, 2021 Опубликовано 23 декабря, 2021 (изменено) · Жалоба Подскажите как должено быть видно на осцилографе возвращаемые с АЦП данные. Там же 24бита, это три байта. Возврат данных сказано начинается после спадающего фронта DRDY по команде 0х5F. Событию падения DRDY вызывает прерывание, в нем посылаю 0х5F, становлюсь на DOUT. Что то возвращает, но по виду это один байт. Посылал 0х5F 0х5F 0х5F получал три копии одного и того же байта. И вот еще не пойму, на верхней осцилограмме ноль на DRDY занимает 99% времени, это как данные доступны 99% времени ? Изменено 23 декабря, 2021 пользователем Zx80 уточнения вопроса Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 227 23 декабря, 2021 Опубликовано 23 декабря, 2021 · Жалоба 35 минут назад, Zx80 сказал: Что то возвращает, но по виду это один байт. Покажите на снимке 24 такта и все остальные сигналы. И вообще-то, 7-й канал — это ноль на входе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 24 декабря, 2021 Опубликовано 24 декабря, 2021 (изменено) · Жалоба Вот не пойму с каким периодом он должен возвращать вывод DRDY в 1 ? Т.е сколько раз в секунду он обновляет значение, чем это определяется ? Последовательность на DRDY fCLKÊIN = 2.4576MHz Period = 1/fCLKÊIN = 4.07мкс. Если я не читаю чип он должен сам на 500 циклов т.е.(4.07мкс*500=0.2мс) возвращать вывод DRDY в 1. Ну да те 9 клеток по 20мкс те 500 циклов = 0.18мс Добавил команду считывания регистра данных. 0х5F. Вижу что выдает такты на 8 бит. Данные на DOUT соответствующие тактам SCK Почему вы решили что 7канал ? Я по даташиту настраивал и настраивал AIN1-AIN2 дифференц вход. Изменено 24 декабря, 2021 пользователем Zx80 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 227 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба 10 минут назад, Zx80 сказал: Вижу что выдает такты на 8 бит Следовательно, виновен тот, кто их выдаёт, потому что должен их выдавать в 3 раза больше количеством, ну и по-прежнему не видно диаграммы в соответствии с Рис.6 паспорта. 13 минут назад, Zx80 сказал: Почему вы решили что 7канал ? Потому что так написано в Табл.VII паспорта — xxxxx111 это AIN6-AIN6. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба Не представляю как Вам дать такую диаграмму. Осцилограф двулучевой. Скажу только что CS = 0 у меня завсегда. А насчет канала. spi(0x24); коммуникационный регистр. 0х24 = 00100100 У меня 4 - 100 Пишу в старшую часть регистра фильта. Это в примере 0х27 00100111, тут да 111 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба On 12/21/2021 at 3:02 PM, Zx80 said: инициализация spi(0x24); /* set the channel AIN1-AIN2 and set the next operation as write to the filter high */ spi(0x4F); /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */ spi(0x34); /* set the next operation as a write to the filter low register channel AIN1/AIN2 */ spi(0xA0); /* max filter word allowed for low part of the filterword */ spi(0x14); /* set the operation as a write to the mode register */ spi(0x20); /* set gain to 1, burnout current off, no filter sync, and do a self calibration вкл питания, сброс, инициализация. Я не читаю. По идее должен видеть ноль пока не опрошу данные, а в итоге (импульс послед) вероятно возбуждение. При чем при сбросах иногда вижу устойчивый ноль (данные готовы). Че у меня не так ? Вы все делаете не так. У этого АЦП все общение идет через Communications Register. Сначала вы в него пишете к какому регистру хотите обратиться, а потом данные для целевого регистра. За исключением самого себя. Т.е. если вы хотите выбрать канал АЦП, то вы пишите только в него. В итоге размер посылки будет меняться от от одного байта до четырех байт. Например spi(0x20); spi(0x4F); /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */ Первый посылкой мы говорим, что хотим записать данные в Filter High Register, а второй посылкой пишем уже сами данные. А чтобы выбрать канал - надо записать в сам Communications Register значение вида 0b00000xxx, где ххх - номер канала. Если хотя бы один из битов RS2, RS1, RS0 отличается от ноля, то поля номера канала вообще не важны. 41 minutes ago, Zx80 said: Не представляю как Вам дать такую диаграмму. От вас не просят дать 24-ех канальную осциллограмму. Вам говорят, что у вас число тактов SCK в посылке слишком маленькое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба Великолепно. Вы написали тоже, что и я. Quote spi(0x20); spi(0x4F); Первый посылкой мы говорим, что хотим записать данные в Filter High Register, а второй посылкой пишем уже сами данные. Посмотрите, у меня три обращения к коммуникационному регистру коде. Красный обращение к коммуникационному регистру, синий - вторая посылка, пишем данные Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба 2 minutes ago, Zx80 said: Великолепно. Вы написали тоже, что и я. Посмотрите, у меня три обращения к коммуникационному регистру коде. Красный обращение к коммуникационному регистру, синий - вторая посылка, пишем данные Тогда приводите код в более понятном виде, дабы не возникало разночтений. Но, все равно, в приведенном коде, вы не верно выбираете канал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zx80 0 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба я выше показал как я выбираю канал согласно таблиц, если я не прав, покажите, поправьте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 24 декабря, 2021 Опубликовано 24 декабря, 2021 · Жалоба 8 minutes ago, Zx80 said: я выше показал как я выбираю канал согласно таблиц, если я не прав, покажите, поправьте Вы не правильно его выбираете. Я выше уже написал как надо. Повторю еще раз. Чтобы выбрать канал - надо записать в сам Communications Register значение вида 0b00000xxx, где ххх - номер канала. Если хотя бы один из битов RS2, RS1, RS0 отличается от ноля, то поля номера канала вообще не важны. В итоге размер посылки один байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться