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

 
 
> AD7760-АЦП 24 разряда, 2,5 МГц, кто пользовал?
SALOME
сообщение Jun 11 2007, 08:15
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



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


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DS
сообщение Jan 23 2008, 12:38
Сообщение #2


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Origin


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
SALOME
сообщение Jan 24 2008, 05:39
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(DS @ Jan 23 2008, 19:38) *
Origin

Спасибо. Однако начав тернистый путь ее пользования, споткнуласьДа я вообщем-то не об этом. СтОит ли эта прога моих мук? Может есть варианты попроще?


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 24 2008, 17:05
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(SALOME @ Jan 24 2008, 08:39) *
Спасибо. Однако начав тернистый путь ее пользования, споткнуласьДа я вообщем-то не об этом. СтОит ли эта прога моих мук? Может есть варианты попроще?
Adobe Audition (CoolEdit).

Цитата(SALOME @ Jan 23 2008, 07:51) *
Я понимаю буквально, что SSYNC надо ставить там, где идет обращениии к перфирии. В исходниках от ADI так и сделано. А как надо?
Первый - надо. Второй - не надо.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
SALOME
сообщение Jan 25 2008, 05:04
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(Stanislav @ Jan 25 2008, 00:05) *
Adobe Audition (CoolEdit).

Первый - надо. Второй - не надо.

И точно. В аудио же 24 разряда давно прописались. Попробую.
А где первый и второй?

Цитата(Stanislav @ Jan 25 2008, 01:17) *
Ну, это же элементарно... Для правильного "опороса" АЦП Вам потребуется сидеть в этом цикле вечно, Кстати, что за зверь в его качестве используется?

Я ни сижу в этом цикле вечно. Там используется свойство залипания бита, отвечающего за опрос DRDY. Получается быстрее, чем при прерывании.
Использую TFT дисплей NEC "NL2432HC22-41K" и он очень хорошо сопрягается через PPI.


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 30 2008, 23:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(SALOME @ Jan 25 2008, 08:04) *
А где первый и второй?
Сверху вниз, по тексту прогги.
Вообще-то, и первый, скорее всего, не нужен. Для более точного ответа нужно посмотреть сгенерённый ассемблерный код (знаете, как это делать?).

Цитата(SALOME @ Jan 25 2008, 08:04) *
...Я ни сижу в этом цикле вечно. Там используется свойство залипания бита, отвечающего за опрос DRDY. Получается быстрее, чем при прерывании.
Использую TFT дисплей NEC "NL2432HC22-41K" и он очень хорошо сопрягается через PPI.
Ясно. ТФТ так ТФТ на PPI, ничего не поделаешь. Стало быть, Вы сначала накапливаете блок данных, а потом его "абсчитываете". Менее корявой от этого логика работы, однако, не становится (уж простите).
О пользе чтения мануалов.
Процессор BlackFin силён не только, и даже не столько своими вычислительными возможностями (есть DSP и покруче). Он, ко всему прочему, обладает развитой многошинной архитектурой, многопортовой по множеству 4к внутренней памятью данных, а также лучшей из тех, с коими приходилось сталкиваться, системой ввода-вывода. Имеется в виду, прежде всего, контроллер ПДП (DMA) - по сути, процессор в процессоре, который может выполнять даже записанные в памяти программы пересылки для каждого из каналов и подключать устройства В/В к независимым друг от друга шинам и страницам памяти (здесь, конечно, и программисту есть над чем поработать - втупую компилер с линкером вряд ли всё это разрулить способны). И всё это - совершенно независимо от вычислительного ядра.
В Вашем случае можно превратить EBIU в эффективный параллельный порт ввода-вывода, работающий по запросу. Для этого нужно настроить один из каналов MDMA, включив аппаратный режим HandShake. Каналы MDMA в процессоре работают не напрямую, а "вперекидку" (тот, кто работал с аппаратом БСЛ - Большая Совковая Лопата - в бригаде, поймёт, о чём я), однако, для программиста это не представляет практически никаких дополнительных сложностей.
У Вашего АЦП есть сигнал DRDY, а у чёрного фина - ножки DMAR0 и DMAR1. Если сигнал объединить с одной из них, получим аппаратный запрос контроллеру HMDMA на ввод данных (в данном случае, видимо, либо одного 32-битного слова, либо 2-х 16-битных). При этом процесс ввода будет "прозрачным" для вычислительного ядра процессора, которое может в это время заниматься своими делами. В конце каждого акта ввода будет выработано прерывание, сигнализирующее о его окончаниии, после чего контроллер MDMA должен быть перезапущен.
Кроме того, организовав ввод подобным образом, Вы сможете сократить до минимума джиттер выборки (скорее всего, его величина будет определяться только тактом рассинхронизации генераторов SCLK фина и АЦП.
Естественно, тайминг ввода нужно настроить в соответствием с требуемой времянкой шины данных АЦП. Достигается путём программирования регистров EBIU должным образом.
Далее, ввод данных Вашим способом, если я правильно понял, подразумевает разрывы в данных, что, вообще говоря, для системы измерения в реальном времени нежелательно (по моему мнению, во всяком случае). Для реализации обработки сигнала по-настоящему real-time, без его разрывов, стоит позаботиться о правильной организации буферов памяти ввода. В простейшем случае, это может быть циклический буфер, длиной минимум в два блока; в более сложном, но и более эффективном - пинг-понг буферы в разных страницах внутренней памяти данных. Последний способ имеет то преимущество, что вычислительное ядро и контроллер (HM)DMA не будут мешать друг другу в попытках достучаться до памяти (не будет возникать stall-ов в работе ядра при чтении заполненного буфера).
Все эти вещи Вам будет очень полезно изучить самостоятельно, благо документация у AD хорошая. Если будут непонятки - обнародуйте, постараюсь помочь.
Далее, по схеме (не ногами, но по сути).
Мне кажется, что в схеме Вашей платы есть недостатки по сравнению с референсной от AD. Это касается способа подачи тактового сигнала на АЦП.
1. AD применяют генератор MXO45HS с невысокой долговременной стабильностью, но с малым джиттером фазы выходного сигнала - 1пс (хорошей кратковременной стабильностью). В Вашей же схеме применён генератор CFPT-126 с высокой долговременной стабильностью, но с неизвестным джиттером (по крайней мере, в даташите обнаружить его не удалось).
2. AD применяет в качестве формирователя тактовых импульсов АЦП ультрабыстрый логический элемент NC7SZ08, вы же - его гораздо более медленную версию NC7S08.
Всё это может привести к существенному увеличению шумов АЦП в Вашей конструкции по сравнению с референсной. Именно вследствие возрастания неопределённости (джиттера) времени выборки.
Справедливости ради, надо сказать, что при постоянных уровнях сигнала на входе возрастания шума практически не будет, но в динамике этот фактор ни в коем случае нельзя сбрасывать со счетов.
По-любому, джиттер тактового сигнала к наблюдаемой Вами картине отношения иметь не может. Налицо грубые ошибки либо при организации ввода информации в процессор, либо при конкатенации цифровых данных уже внутри проца.
Если хотите выяснить причину, повторяю, нужно привести соответствие выводов процессора цепям на приведённой схеме. По только лишь фрагментам конструкции поставить диагноз невозможно.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
SALOME
сообщение Jan 31 2008, 09:50
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(Stanislav @ Jan 31 2008, 06:22) *
Для более точного ответа нужно посмотреть сгенерённый ассемблерный код (знаете, как это делать?).

У Вашего АЦП есть сигнал DRDY, а у чёрного фина - ножки DMAR0 и DMAR1.

Во первых, большое спасибо за Ваш подробный анализ и рекомендации. Все они полезны.
Ассемблерный код, который генерит компилятор я посмотрела. Ssync-и стоят ровно там, где я их поставила и ничего более.
У моего BF537 указанных Вами входов DMAR0 и DMAR1. я не обнаружила.
Посмотрите фрагмент проги на ASM, отвечающий за анализ появления сигнала DRDY от АЦП. При скорости SCLK=133MГц после прихода DRDY до появления CS проходит более 100нс. Непонятно откуда такая задержка.

lw_start:
//ожидание DRDY
r1=w[p1](z);
CC=!bittst(r1,5);
if CC jump lw_start;

// w[p1+4]=r2; //сброс залипающего бита DRDY

r0.h=w[i0]; // считывание первого слова DATA_ADC (высталение CS) ssync;


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 31 2008, 11:37
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(SALOME @ Jan 31 2008, 12:50) *
Ассемблерный код, который генерит компилятор я посмотрела. Ssync-и стоят ровно там, где я их поставила и ничего более.
Это понятно. Вопрос в том, нужно ли их вообще там ставить. Ну да Бгъ с ним...

Цитата(SALOME @ Jan 31 2008, 12:50) *
...У моего BF537 указанных Вами входов DMAR0 и DMAR1. я не обнаружила.
Плохо смотрите. PF0 и PF1.

ЗЫ. Поиском текста в pdf-ах пользоваться умеете?

Цитата(SALOME @ Jan 31 2008, 12:50) *
...Посмотрите фрагмент проги на ASM, отвечающий за анализ появления сигнала DRDY от АЦП. При скорости SCLK=133MГц после прихода DRDY до появления CS проходит более 100нс. Непонятно откуда такая задержка.
Почему же непонятно? 100 нС - это при частоте ядра 400 МГц - 40 тактов. Посмотрите время выполнения команд, в частности условных переходов, и убедитесь, что здесь всё нормально.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
SALOME
сообщение Jan 31 2008, 12:54
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(Stanislav @ Jan 31 2008, 18:37) *
Плохо смотрите. PF0 и PF1.

ЗЫ. Поиском текста в pdf-ах пользоваться умеете?

Почему же непонятно? 100 нС - это при частоте ядра 400 МГц - 40 тактов. Посмотрите время выполнения команд, в частности условных переходов, и убедитесь, что здесь всё нормально.

Нашла. Оказались альтернативные функции, а я смотрела по пинам smile.gif. Буду думать. PF0/1 у меня тоже заняты под UART0: boot-загрузка и передача данных на Комп.
С количеством тактов еще хуже smile.gif . Там управление периферией, а след-но не 400, а 133 Мгц. Надо переходить на прерывание. Два дня возилась с ассемблерной вставкой, теперь - прерыванием ХЕЗ_сколько smile.gif. Зато опыт копится...


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
Linker
сообщение Feb 3 2008, 16:57
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 15-01-08
Из: Новосибирск
Пользователь №: 34 105



Цитата(SALOME @ Jan 31 2008, 18:54) *
Надо переходить на прерывание.

Прерывания, скорее всего мало что изменят. В лучшем случае уменьшите время начала CS после прихода DRDY. Надо смотреть на временные диаграммы считывания по шине EBIU. При скоростях SKLK>100MHz скорее всего процессор считывает НЕустановившиеся на шине АЦП данные, т.е. мусор. Программная регулировка времени считывания данных ARDY относительно выставления AMSx (CS_ADC) - не более 4-х тактов. т.е 40нс. А по даташиту AD7760 - более 41нсек. Это без учета задержек буферов.

Цитата(Stanislav @ Feb 3 2008, 00:27) *
Времена выполнения команд, в том числе и с обращением к периферии, принято отсчитывать в тактах ядра.

Что-то не совсем понятно. Ведь в приведенном фрагменте идет обращение к порту GPIO
lw_start:
//ожидание DRDY
r1=w[p1](z); --> Считывание с периферийного порта GPIO. и время выполнения надо считать в SCLK (т.е 1 такт 7,5нс)
CC=!bittst(r1,5);--> А здесь в CCLK (т.е. 1 такт 2,5нс)
if CC jump lw_start

Разве не так?
И потом, в самом деле, откуда в этом цикле набегает более 100нс?

Сообщение отредактировал Linker - Feb 3 2008, 16:59


--------------------
Я здесь и сейчас...
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Feb 3 2008, 20:17
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Linker @ Feb 3 2008, 19:57) *
Прерывания, скорее всего мало что изменят. В лучшем случае уменьшите время начала CS после прихода DRDY. Надо смотреть на временные диаграммы считывания по шине EBIU. При скоростях SKLK>100MHz скорее всего процессор считывает НЕустановившиеся на шине АЦП данные, т.е. мусор. Программная регулировка времени считывания данных ARDY относительно выставления AMSx (CS_ADC) - не более 4-х тактов. т.е 40нс. А по даташиту AD7760 - более 41нсек. Это без учета задержек буферов.
Опять двадцать пять...
Простите, а Вы точно знаете, как именно ноги EBIU процессора подключены к терминалам приведённой схемы?
По-моему, даже уважаемая SALOME имеет об этом весьма смутное представление... sad.gif
Лично я же сильно подозреваю, что трабл именно в этом, а именно: в неправильной подаче сигналов управления на АЦП. О чём уже неоднократно высказался.

Цитата(Linker @ Feb 3 2008, 19:57) *
Что-то не совсем понятно. Ведь в приведенном фрагменте идет обращение к порту GPIO
lw_start:
//ожидание DRDY
r1=w[p1](z); --> Считывание с периферийного порта GPIO. и время выполнения надо считать в SCLK (т.е 1 такт 7,5нс)
CC=!bittst(r1,5);--> А здесь в CCLK (т.е. 1 такт 2,5нс)
if CC jump lw_start

Разве не так?
И потом, в самом деле, откуда в этом цикле набегает более 100нс?
EBIU не является GPIO.
100 нс набегает не только в этом цикле. Есть ещё обращение к внешнему устройству через EBIU.
Дело в том, что для синхронизации ядра и перифериии требуется определённое время, зависящее от соотношения CCLK и SCLK. При этом не нужно забывать, что данные при операции чтения из периферии и записи в неё становятся в конвейер (за мегагерцы приходится платить). Для его гарантированной выгрузки и используются команды SSYNC. Кроме того, для заполнения программного конвейера после перехода требуется тоже определённое время.
Короче, возьмите симулятор и попробуйте посимулять. По первой прикидке, у меня получилась вполне соответствующая цифра. Точно проверять щас лень, но могу это сделать в случае необходимости.

ЗЫ. Плохой разработчик систему, функционирующую с /редкими/ сбоями, считает условно работающей. Хороший - безусловно не работающей.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
SALOME
сообщение Feb 4 2008, 07:38
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(Stanislav @ Feb 4 2008, 03:17) *
По-моему, даже уважаемая SALOME имеет об этом весьма смутное представление... sad.gif
Лично я же сильно подозреваю, что трабл именно в этом, а именно: в неправильной подаче сигналов управления на АЦП. О чём уже неоднократно высказался.

Я Вас понимаю. Жещина-разработчик уже по определению - курица smile.gif.
Распределение выводов таково: за выбор АЦП отвечает AMS1 (EBIU). За опрос DRDY отвечает PortH.5(GPIO).
Направление передачи RD/WR - PortH.7. При этом направление передачи в ходе считывания выборке не меняется. А меняется только при настройке АЦП. Поэтому уточняю мой фрагмент :

lw_start:
//ожидание DRDY
r1=w[p1](z); //Считывание состояния PortH, р1 - адрес PortH
CC=!bittst(r1,5); //Проверка состояния залипающего бита PortH.5
if CC jump lw_start //Если DRDY не пришел, то продолжить опрос


Вот здесь задержка между DRDY и спадом AMS1~150нс

[i]//Считывание данных с АЦП
r0.h=w[i0]; // считать старшие 2 байта DATA_ADC. i0 - адрес АЦП (EBIU)
ssync;
//считать младший байт DATA_ADC + байт STATUS
r0.l=w[i0]; // считать младший байт DATA_ADC + байт STATUS


w[i2++]=r0.h; // сохранить старшие 2 байта в SRAM
w[i2++]=r0.l; // сохранить младший в SRAM

BLA...
BLA...[/i]


Цитата(Linker @ Feb 3 2008, 23:57) *
Прерывания, скорее всего мало что изменят.

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


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Feb 4 2008, 19:13
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(SALOME @ Feb 4 2008, 10:38) *
Я Вас понимаю. Жещина-разработчик уже по определению - курица smile.gif.
Дело вовсе не в этом. А в том, что для получения сколь-нибудь полезного совета нужно научится правильно задавать вопрос, не упуская при этом существенных деталей.
К сожалению, этим часто пренебрегают представители обоих полов в равной степени.

Цитата(SALOME @ Feb 4 2008, 10:38) *
...Распределение выводов таково: за выбор АЦП отвечает AMS1 (EBIU). За опрос DRDY отвечает PortH.5(GPIO).
Направление передачи RD/WR - PortH.7. При этом направление передачи в ходе считывания выборке не меняется.
Ну, наконец-то. smile.gif
Подключение логичное, и, с моей точки зрения, правильное (если не рассматривать всё-таки возможность ввода по HMDMA).
Продолжим "пытку".
1. Как инициализирован PORT H? Интересуют все значения регистров, которые Вы изменяете.
2. Почему не подано питание V_EXT на ногу VccY транслятора уровней U30 в Вашей схеме?
3. Каков период сигнала DRDY?

Цитата(SALOME @ Feb 4 2008, 10:38) *
...А меняется только при настройке АЦП. Поэтому уточняю мой фрагмент :
lw_start:
//ожидание DRDY
r1=w[p1](z); //Считывание состояния PortH, р1 - адрес PortH
CC=!bittst(r1,5); //Проверка состояния залипающего бита PortH.5
if CC jump lw_start //Если DRDY не пришел, то продолжить опрос


Вот здесь задержка между DRDY и спадом AMS1~150нс
150нс - это минимальная или максимальная задержка? И что тогда есть 100нс?
ЗЫ. Задержка возникает не только, и не столько здесь.


Цитата(SALOME @ Feb 4 2008, 10:38) *
...[i]//Считывание данных с АЦП
r0.h=w[i0]; // считать старшие 2 байта DATA_ADC. i0 - адрес АЦП (EBIU)
ssync;
//считать младший байт DATA_ADC + байт STATUS
r0.l=w[i0]; // считать младший байт DATA_ADC + байт STATUS
Сдаётся, уважаемая Salome, что у Вас слишком мал интервал между последовательными чтениями. Попробуйте вместо одной команды SSYNC вставить подряд две или даже три.

Цитата(SALOME @ Feb 4 2008, 10:38) *
...С настройкой прерываний разобралась и теперь встал вопрос как организовать цикл опроса АЦП по прерываниям. Приходит в голову IDDLE. Однако есть подозрение, что выход из спячки не скор. А по другому как?
В данном случае, команда IDLE нужна не для изменения режима, а именно для ожидания прерывания. "Мёртвое" время будет всяко меньше, чем в Вашей программе.
Однако, длительность задержки даже в 100нс не может вызвать сбой в работе АЦП.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
SALOME
сообщение Feb 5 2008, 04:01
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(Stanislav @ Feb 5 2008, 02:13) *
1. Как инициализирован PORT H? Интересуют все значения регистров, которые Вы изменяете.
2. Почему не подано питание V_EXT на ногу VccY транслятора уровней U30 в Вашей схеме?
3. Каков период сигнала DRDY?

150нс - это минимальная или максимальная задержка? И что тогда есть 100нс?
ЗЫ. Задержка возникает не только, и не столько здесь.

/ ******** Настройка порта H: **************************************
PH5-in ADC_DRDY
PH6-in ADC_MX2(SYNHRO)
PH7-out ADC_RESET
PH9-out ADC_R/W
PH10-out ADC_SYNC
*/
*pPORTH_FER=0x0000;
*pPORTHIO_DIR =0x179C;
*pPORTHIO_INEN =0xE060; // Разрешение буфера приема порта H
*pPORTHIO_POLAR =0x8060; // 1- активен низкий (спадающий) уровень ~~~~~~~~~|_____
*pPORTHIO_EDGE =0x8060;; // 0 - уровень (не залипает),т.е. повторяет pin
*pPORTHIO =0x1FFF;
Напряжение Vext реально подано. А в схеме упущено. Спасибо.
Период DRDY пробовала разный: от 156КГц до 1,25МГц.
Установить сколько точно задержка сложно, т.к. фронт сильно CS дрожит. Полагаю из-за асинхронности поступления DRDY и момента его определения GPIO PH5. Но по любому оно не должно влиять на устойчивость работы. Просто не понятно почему такая большая задержка. У меня еще одно подозрение. Может в процесс опроса АЦП вмешивается еще кто-то, заложенный компилятором? Пробовала запретить прерывания в теле ассемблерной вставки - программа виснет.


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Feb 5 2008, 21:07
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(SALOME @ Feb 5 2008, 07:01) *
/ ******** Настройка порта H: **************************************
..................
Вроде, всё правильно.

Цитата(SALOME @ Feb 5 2008, 07:01) *
...Период DRDY пробовала разный: от 156КГц до 1,25МГц.
Тогда "наползаний" быть точно не должно.
Продолжим: что записано в регистры управления АЦП?

Цитата(SALOME @ Feb 5 2008, 07:01) *
...Установить сколько точно задержка сложно, т.к. фронт сильно CS дрожит. Полагаю из-за асинхронности поступления DRDY и момента его определения GPIO PH5. Но по любому оно не должно влиять на устойчивость работы. Просто не понятно почему такая большая задержка.
С этим разберётесь пожже. smile.gif
Ещё раз: у Вас слишком мало время между чтениями первого и второго слова из АЦП (t6). По даташиту, оно должно быть не менее 1 периода внутреннего тактового сигнала АЦП, а у Вас оно - меньше, это видно даже без осциллографа. Увеличьте его, и всё станет ОК.

Цитата(SALOME @ Feb 5 2008, 07:01) *
...У меня еще одно подозрение. Может в процесс опроса АЦП вмешивается еще кто-то, заложенный компилятором? Пробовала запретить прерывания в теле ассемблерной вставки - программа виснет.
А разрешить при выходе не забыли?
Если в программе используются прерывания, такое поведение вполне закономерно.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
DS
сообщение Feb 5 2008, 21:24
Сообщение #16


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Stanislav @ Feb 6 2008, 00:07) *
Продолжим: что записано в регистры управления АЦП?

С этим разберётесь пожже. smile.gif
Ещё раз: у Вас слишком мало время между чтениями первого и второго слова из АЦП. По даташиту, оно должно быть не менее 1 периода внутреннего тактового сигнала АЦП, а у Вас оно - меньше, это видно даже без осциллографа. Увеличьте его, и всё станет ОК.


В регистрах управления трудно накосячить, чтобы к такому результату привело.
По поводу времени между чтениями - совершенно верно, обязательно надо выдерживать 50 нс. НО - судя по предыдущим данным, сбоит и старшее слово. Состояние выходного автомата АЦП сбрасывается по DRDY, поэтому это не должно влиять на старший байт. Надо искать в тракте данных. Через сколько стробируется от начала CS при описанном SALOME включении ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Feb 5 2008, 22:25
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(DS @ Feb 6 2008, 00:24) *
В регистрах управления трудно накосячить, чтобы к такому результату привело.
При желании, можно. Например, делитель на 2 для 40 МГц MCLK не включить. smile.gif

Цитата(DS @ Feb 6 2008, 00:24) *
...Через сколько стробируется от начала CS при описанном SALOME включении ?
В зависимости от момента прихода падающего фронта DRDY внутри цикла ожидания, задержка CS относительно DRDY может сильно меняться. Но меньше минимально допустимых 10нс (t2) быть не может.
Длительность CS - 82,5нc. Промежуток между последовательными CS тоже может слегка гулять, и составляет минимально около 30 нс (точно считать лень), что, по моему мнению, и приводит к сбоям.
Защёлкивание данных в процессоре происходит через 75нс после начала сигнала CS.
Если времена другие, это означает косяк в настройках самогО процессора.

Сообщение отредактировал Stanislav - Feb 5 2008, 22:35


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SALOME   AD7760-АЦП 24 разряда, 2,5 МГц, кто пользовал?   Jun 11 2007, 08:15
- - anton   Для такой частоты это мульти битный дельта сигма. ...   Jun 11 2007, 11:01
- - el34   а он как и AD9260 может поставляется тока по лицен...   Jun 11 2007, 11:39
- - anton   В принципе если правильно помню таблицу то огранич...   Jun 12 2007, 05:21
|- - SALOME   Цитата(anton @ Jun 12 2007, 12:21) В прин...   Jun 13 2007, 02:55
|- - igor5312   Добрый день. Как у вас обстоят дела с AD7760? Мы ...   Jan 17 2008, 15:27
|- - SALOME   Цитата(igor5312 @ Jan 17 2008, 22:27) Как...   Jan 18 2008, 04:03
|- - igor5312   Самое интересное в этой микросхеме не 24 бита, а т...   Jan 18 2008, 07:55
|- - SIA   Цитата(SALOME @ Jan 18 2008, 07:03) Назна...   Jan 18 2008, 12:50
|- - Linker   Цитата(SIA @ Jan 18 2008, 18:50) госзаказ...   Jan 18 2008, 15:40
|- - SIA   Цитата(Linker @ Jan 18 2008, 18:40) Не со...   Jan 18 2008, 16:08
- - DS   А не кривизна ли рук всему причиной ? Микросхема р...   Jan 19 2008, 10:09
|- - SIA   Цитата(DS @ Jan 19 2008, 13:09) А не крив...   Jan 19 2008, 10:27
||- - SALOME   Цитата(SIA @ Jan 19 2008, 17:27) опыт раб...   Jan 19 2008, 13:10
||- - SIA   Цитата(SALOME @ Jan 19 2008, 16:10) Приве...   Jan 19 2008, 13:18
|- - SALOME   Цитата(DS @ Jan 19 2008, 17:09) А не крив...   Jan 19 2008, 12:57
|- - SIA   Цитата(SALOME @ Jan 19 2008, 15:57) Криви...   Jan 19 2008, 13:08
|- - Stanislav   Цитата(SALOME @ Jan 19 2008, 15:57) ...Не...   Jan 19 2008, 13:55
|- - Linker   Цитата(Stanislav @ Jan 19 2008, 19:55) Со...   Jan 19 2008, 15:06
||- - Stanislav   Цитата(Linker @ Jan 19 2008, 18:06) А я в...   Jan 19 2008, 15:36
||- - DS   Не все йогурты (в смысле киты) одинаково полезны. ...   Jan 19 2008, 16:18
|||- - Stanislav   Цитата(DS @ Jan 19 2008, 19:18) Не все йо...   Jan 19 2008, 16:57
|||- - Linker   Цитата(DS @ Jan 19 2008, 22:18) Учитывая,...   Jan 19 2008, 17:00
|||- - DS   Цитата(Linker @ Jan 19 2008, 20:00) Но я ...   Jan 19 2008, 17:28
|||- - Linker   Цитата(DS @ Jan 19 2008, 23:28) Естествен...   Jan 20 2008, 05:02
|||- - DS   Цитата(Linker @ Jan 20 2008, 08:02) я име...   Jan 20 2008, 10:34
|||- - Linker   Цитата(DS @ Jan 20 2008, 16:34) DVALID не...   Jan 20 2008, 10:59
|||- - DS   Цитата(Linker @ Jan 20 2008, 13:59) Т.е. ...   Jan 20 2008, 11:08
|||- - Linker   Цитата(DS @ Jan 20 2008, 17:08) Еще при п...   Jan 20 2008, 15:35
||- - SALOME   Цитата(Stanislav @ Jan 19 2008, 22:36) Ск...   Jan 21 2008, 06:10
||- - Stanislav   Цитата(SALOME @ Jan 21 2008, 09:10) PPI м...   Jan 21 2008, 12:35
||- - Linker   Цитата(SALOME @ Jan 21 2008, 12:10) Никак...   Jan 21 2008, 15:38
||- - Stanislav   Цитата(Linker @ Jan 21 2008, 18:38) ...На...   Jan 21 2008, 19:53
|- - SALOME   Цитата(Stanislav @ Jan 19 2008, 20:55) Со...   Jan 21 2008, 04:36
|- - DS   Цитата(SALOME @ Jan 21 2008, 07:36) Извин...   Jan 21 2008, 10:41
|- - SALOME   Цитата(DS @ Jan 21 2008, 17:41) А в Pdf М...   Jan 21 2008, 11:03
|- - DS   Цитата(SALOME @ Jan 21 2008, 14:03) Не вл...   Jan 21 2008, 11:25
|- - SALOME   Цитата(DS @ Jan 21 2008, 18:25) Да если у...   Jan 21 2008, 12:10
- - DS   А разве я Вам это писал ? Вроде не Вы жаловались, ...   Jan 19 2008, 10:54
|- - SIA   Цитата(DS @ Jan 19 2008, 13:54) А разве я...   Jan 19 2008, 10:59
- - DS   Я бы сказал, что имеет место неверное стробировани...   Jan 19 2008, 14:09
|- - Linker   Цитата(DS @ Jan 19 2008, 20:09) Или что-т...   Jan 19 2008, 15:29
- - DS   Да нет этого в АЦП на самом деле. Нормально там мл...   Jan 19 2008, 15:10
- - forever failure   ]Саломея, вот Вам и бубны, обещанные полгода назад...   Jan 21 2008, 06:57
- - forever failure   Попробуйте посмотреть как ведут себя разряды АЦП п...   Jan 21 2008, 11:33
- - DS   Диаграмму сигнала CS на АЦП и момента строба данны...   Jan 21 2008, 12:18
|- - SALOME   Цитата(DS @ Jan 21 2008, 19:18) Диаграмму...   Jan 22 2008, 03:52
|- - Stanislav   Цитата(SALOME @ Jan 22 2008, 06:52) Фрагм...   Jan 22 2008, 22:57
|- - SALOME   Цитата(Stanislav @ Jan 23 2008, 05:57) Ми...   Jan 23 2008, 04:51
|- - Stanislav   Цитата(SALOME @ Jan 23 2008, 07:51) А под...   Jan 24 2008, 18:17
- - DS   Все-таки снимите осциллограммы. То, что Вы пишете,...   Jan 22 2008, 11:15
- - SALOME   Посмотрела на осцилограммы CS. Вроде все нормально...   Jan 23 2008, 12:36
- - DS   Origin   Jan 23 2008, 12:38
|- - Stanislav   Цитата(SALOME @ Jan 31 2008, 15:54) Нашла...   Feb 2 2008, 18:27
||- - DS   Цитата(Stanislav @ Feb 6 2008, 01:25) При...   Feb 5 2008, 22:33
|- - SALOME   Цитата(Stanislav @ Feb 6 2008, 04:07) А р...   Feb 6 2008, 11:37
|- - Stanislav   Цитата(SALOME @ Feb 6 2008, 14:37) Я в св...   Feb 6 2008, 22:34
|- - SALOME   Цитата(Stanislav @ Feb 7 2008, 05:34) Воо...   Feb 8 2008, 11:43
|- - Stanislav   Цитата(SALOME @ Feb 8 2008, 14:43) А тепе...   Feb 8 2008, 12:14
|- - Linker   Цитата(Stanislav @ Feb 8 2008, 18:14) ЗЫ....   Feb 8 2008, 18:09
- - DS   Отредактировал Ваш пост слегка. Надеюсь, понятно, ...   Jan 24 2008, 10:49
|- - SALOME   Цитата(DS @ Jan 24 2008, 17:49) Отредакти...   Jan 24 2008, 12:48
- - DS   Что и как надо спрашивать в форуме "Доступ к...   Jan 24 2008, 13:01
- - Stanislav   Дописал уже... 2 SALOME Попробуйте вставить ещё ...   Feb 5 2008, 22:49
- - DS   А в этой цепи случаем не стоит ADшный транслятор у...   Feb 8 2008, 20:25
|- - SALOME   Цитата(DS @ Feb 9 2008, 03:25) А в этой ц...   Feb 9 2008, 06:21
||- - Stanislav   Цитата(SALOME @ Feb 9 2008, 09:21) Нет не...   Feb 13 2008, 21:38
||- - SALOME   Цитата(Stanislav @ Feb 14 2008, 04:38) Дл...   Feb 14 2008, 07:13
||- - Stanislav   Цитата(SALOME @ Feb 14 2008, 10:13) Однок...   Feb 14 2008, 23:22
||- - SALOME   Цитата(Stanislav @ Feb 15 2008, 06:22) Мо...   Feb 15 2008, 03:50
|- - Linker   Цитата(DS @ Feb 9 2008, 02:25) А в этой ц...   Feb 9 2008, 14:30
- - SALOME   Попробовала таки воспльзоваться прерыванием от DRD...   Feb 13 2008, 07:10
- - Копейкин   Вопрос к тем, кто реально использовал AD7760: Можн...   Feb 9 2012, 16:34
|- - _pv   Цитата(Копейкин @ Feb 9 2012, 22:34) Вопр...   Feb 9 2012, 17:23
- - Копейкин   Спасибо, я так и думал. Понятно, что на входе ОУ н...   Feb 10 2012, 07:47
|- - _pv   Цитата(Копейкин @ Feb 10 2012, 13:47) Пон...   Feb 10 2012, 08:38
- - Копейкин   Спасибо, всё понял, Ваша схема всё прояснила!   Feb 10 2012, 09:08


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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 18:20
Рейтинг@Mail.ru


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