Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: Внешний АЦП AD7091R

Пт дек 22, 2017 19:47:55

Нет. Я имею ввиду числа 0x800 и 0xС01.

Re: Внешний АЦП AD7091R

Пт дек 22, 2017 20:38:21

Бубоник писал(а):Нет. Я имею ввиду числа 0x800 и 0xС01.

Я что-то не пойму, что здесь нужно включать...

0x800 это, просто команда чтения регистра Channel, без каких либо включений.
Согласно даташиту:

Изображение

Первые 10 бит не используются
11 бит отвечает за запись или за чтение (в нашем случае это чтение и он равен 0)
с 12 по 16 бит это адрес читаемого регистра

Вот и получается: адрес регистра Channel 0х1
00001 0 0000000000 -> 0x800

А команда 0хC01 это команда записи в регистр, так же без всяких там включений

Изображение

Первые 10 бит это данные для записи
11 бит отвечает за запись или за чтение (в нашем случае это запись и он равен 1)
с 12 по 16 бит это адрес читаемого регистра

Так же и получается: адрес регистра Channel 0х1
00001 1 0000000001 -> 0xC01

Сначала запрашиваем данные с 0 канала, командой 0xC01, а потом с 1 канала, командой 0xC02.

И насколько я понимаю, если бы я ошибся с чтением данных, то они бы и не приходили...

А у меня проблема, то что, АЦП выдает нулевые значения на каналах, в то время, когда там есть напряжение...

Re: Внешний АЦП AD7091R

Сб дек 23, 2017 16:39:48

А ну да запутался я немного с этим ацп, все правильно, только есть одно но, сначала надо отправить команду записи, а потом сделать команду чтения. Своего рода должно получится так
Код:
   adc[0] = AD7091_WtiteData(CONVERT_ON, 0xC01);
   result = AD7091_ReadData(0x800);
   adc[1] = AD7091_WtiteData(CONVERT_ON, 0xC02);
   result = AD7091_ReadData(0x1000);

Re: Внешний АЦП AD7091R

Пн дек 25, 2017 00:03:33

Никак мне не подружиться с этой железкой :kill:
Вот документация, согласно, которой я все делаю (вторая схема, 56 рисунок)

Изображение

Если я все так понимаю: у меня два канала и с них нужно получить данные
Как представлено выше, для получения данных, нужно отправить 4 команды:
1 - записать в регистр Channel, о том что измерение идет на 0 канале
2 - записать в регистр Channel, о том что измерение идет на 1 канале
3 - при отправке данных, в ответ должно прийти значение ацп на 0 канале
4 - при отправке данных, в ответ должно прийти значение ацп на 1 канале

Вот, происходит отправка данных:

Изображение

Он мне данные присылает, вот:

Изображение

Но присылает, нулевое значение ацп, т. е. почему то он ничего не измерил, зато данные разбил по каналам, как это и нужно:
в adc[2] данные о 0 канале
в adc[3] данные о 1 канале

Я уже не знаю, что и делать, думал, что микруху спалил, но нет.
Когда когда измерения происходят, только на 0 канале, без перебора других каналов, он все хорошо
измеряет и присылает данные, такие какие они есть:

Изображение

Re: Внешний АЦП AD7091R

Пн дек 25, 2017 00:55:00

А почему у вас на осцилограмме SCLK все время задран на единице? когда данные не передаются, у него же в документации вроде нарисованно SCLK в нормальном состоянии 0 там стоять должен. И да чтобы исключить косяк со SPI, при работе на одном канале, при максимальном напряжении на входе ацп какое значение он присылает?

Re: Внешний АЦП AD7091R

Пн дек 25, 2017 10:11:32

Дык, на одном канале он работает, с этими настройками. Вот он присылает значение 2465
Получается: 5/4096*2465=3,009
Да, все правильно, все как выше на фотках.
А весь геммор начинается, когда перебираешь несколько каналов. Врезультате, ни на том канале нету данных, ни на этом

Re: Внешний АЦП AD7091R

Пн дек 25, 2017 10:26:05

Бубоник правильно сказал про SCLK.
AD7091 защёлкивает данные по фронту, а по спаду - сдвигает регистр.
Сделайте как сказано в документации.

Re: Внешний АЦП AD7091R

Ср дек 27, 2017 18:56:51

Albert_V писал(а):AD7091 защёлкивает данные по фронту, а по спаду - сдвигает регистр.


Если верить даташиту на железку, то ему все равно когда сдвигать регистр, там лишь разница по какому фронту данные отправлять и принимать....

Изображение

Не суть важно, можно и так сделать

Изображение

Проблема все та же, но заметил одну штуку:
Запускаю отладку, за первый проход получаю вот такие значения

Изображение

Дальше, перезапускаю отладку, на второй раз опять те же самые данные как и в первый раз.

Перезапускаю отладку в третий раз и тут данные немножко другие:

Изображение

И все, сколько не перезапускай отладку, он шлет данные, как и в последний раз...

Ради интереса, решил проверить первый способ опроса каналов (55 рисунок):

Изображение

И тоже ничего хорошего, записал регистр в регистр Channel значение 0xF0
А он мне в очередной раз, не то что нужно шлет...

Изображение

Где-то есть косяк, но никак не могу разобраться где...

Re: Внешний АЦП AD7091R

Чт дек 28, 2017 12:19:03

Возможно я у вас не увидел, но делаете ли вы при старте программы POWER-ON DEVICE INITIALIZATION AD7091R?
Изображение

Так же, обратите внимание на:
Изображение

Re: Внешний АЦП AD7091R

Пт дек 29, 2017 19:55:36

Всем большое спасибо за помощь. Вот он косяк-то, линия CONVERT подключена через оптопару к АЦПшке, а я про оптопару и забыл, и на прямую подавал сигнал. При данном подключение, сигнал проходя через оптопару инвертируется и получается не то что нужно...

Re: Внешний АЦП AD7091R

Пт дек 29, 2017 21:14:54

...а я про оптопару и забыл...
Юморист вы :))
Поздравляю что разобрались.
:beer:
Ответить