Перейти к содержанию

    

Проблема с TCD1304DG

Поработал сегодня над прибором. Запустил таймеры с задержкой 100 нс с использованием оптимизации (до этого запуск был разнесен по программе), а непосредственно АЦП запустил из прерывания таймера на время повтора импульсов SH и ICG. Проверил время повторного прерывания на запуск АЦП - 28,7 мкс, как и должно быть по расчетам. Период FM составляет 1,2 мкс. По расчетам, сканируя каждый шестой пиксель, время запуска АЦП составит 1,2 мкс * 4 * 6 = 28,8 мкс, тут все верно. Расчетное время преобразования АЦП составляет при частоте 5 МГц (завышена для эксперимента) 2,7 мкс, здесь успеваем. Попробую еще раз проверить осциллографиом пины.

Без оптимизации кода задержка при включении таймеров составляет 500 нс. Изначально хотел попробовать использовать ассемблерную вставку типа:

asm volatile("SBI %0, 0x02" :: "I"(_SFR_IO_ADDR(PORTB)));

Но она почему-то упорно отказывается работать с регистром TCCR0A, может кто с таким сталкивался?

Плюс заметил, что при запуске программы несколько раз, значения напряжения сильно отличаются. Например, все цифры АЦП или 95 или 580 независимо от локальности  засветки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 hours ago, Zhekas said:

. . . Расчетное время преобразования АЦП составляет при частоте 5 МГц (завышена для эксперимента) 2,7 мкс, здесь успеваем. . . .

шо-то уж очень бИстро. Версия из даташита - 13 - 260μs Conversion Time

ps

Не тратьте Вы время на эти 8-разрядные, с хреновой отладкой, процессоры (IMHO). 

Смотрите ARM, самое "ходовое"  STM - у них все побыстрее.

googl, "tcd1304 stm32"

Вот, например 72 MHz STM32F103  посмотрите, 2 x 12-bit, 1 µs A/D converters (up to 16 channels)

отладка поддерживается самими IAR. Визуальная настройка периферии и генерация "стартового" проекта - Cube.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, Zhekas сказал:

asm volatile("SBI %0, 0x02" :: "I"(_SFR_IO_ADDR(PORTB)));

Но она почему-то упорно отказывается работать с регистром TCCR0A, может кто с таким сталкивался?

Логично. Адрес TCCR0A находится за пределами досягаемости команды SBI. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 hours ago, k155la3 said:

шо-то уж очень бИстро. Версия из даташита - 13 - 260μs Conversion Time

Время конверсии же определяется частотой работы АЦП. В даташите прописано, что требуется 13,5 тактов, чтобы провести преобразования и указана максимальная частота для наилучшего разрешения - 200 кГц. Соответственно время конверсии при этой частоте составит 67,5 мкс. При частоте 1 МГц - 13,5 мкс. Просто я видел, что люди делают спектрометры даже на Arduino, и в этой ветке форума говорили про ATMega, и что встроенного АЦП достаточно.

Попробую завтра еще поработать осциллографом с программой в режиме бесконечного цикла и довешивать код на АЦП. Кроме того посмотрю время повторной готовности результата АЦП в прерывании.

14 hours ago, Сергей Борщ said:

Логично. Адрес TCCR0A находится за пределами досягаемости команды SBI. 

А какую комбинацию можно использовать для достижения данного адреса? Пробовал LDI + OUT - тоже не работало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
38 minutes ago, Plain said:

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

Я использую сигналы, которые в бесконечном цикле давали на входе осциллографа сигнал, изменяющийся при затемнении/освещении матрицы. Они - инверсные сигналы даташита.

По умолчанию у меня SH = 1, а ICG = 0 и FM = 0;

Промерял время повторного срабатывания АЦП в отладчике - 28,7 - 28,8 мкс. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Zhekas сказал:

время конверсии

Время чего???

6 часов назад, Zhekas сказал:

А какую комбинацию можно использовать для достижения данного адреса?

LD, LDD, LDS, ST, STD, STS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробовал поставить сегодня начальное состояние PORTB |= (0 << SH) | (1 << FM) | (1 << ICG); Результат - нуль.

Может быть стоит попробовать новую матрицу подключить, поскольку что я не пытаюсь сделать, результат нулевой. Я в самом начале, как только подключил детектор, то перепутал + и - питания. При этом сработала защита блока питания, а матрица слегка нагрелась. Я поменял питания, и нагрев прекратился, но уже столько мучаюсь и безрезультатно... Может она сгореть в этом случае?

Изменено пользователем Zhekas

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация