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

 
 
> Проблема с TCD1304DG, Не получается считать данные с TCD1304DG
VladimirRPH
сообщение Jan 17 2011, 07:43
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



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


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 44)
НЕХ
сообщение Jan 17 2011, 14:03
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 220
Регистрация: 10-10-06
Из: Петербург
Пользователь №: 21 169



Вы, наверно, на бедняжку слишком ярко светите - выключите свет


--------------------
Когда едешь на поезде - переезд всегда закрыт...
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 18 2011, 06:40
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



Цитата(НЕХ @ Jan 17 2011, 17:03) *
Вы, наверно, на бедняжку слишком ярко светите - выключите свет

я пробовал выключать свет, накрывать ее и оставлять открытыми разные ее части- эффект один и тот же...
все управляющие сигналы по даташиту. напряжение питания 5В.


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
НЕХ
сообщение Jan 18 2011, 07:00
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 220
Регистрация: 10-10-06
Из: Петербург
Пользователь №: 21 169



показывайте осциллограммы - в ней нет чудес (у нас работает)


--------------------
Когда едешь на поезде - переезд всегда закрыт...
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 18 2011, 07:32
Сообщение #5





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



девайс у мня дома...вечерком сделаю фотки, а пока напишу как я делаю инициализацию линейки:
сбрасываю ICG в 0
устанавливаю SH в 1
задержка 1 мкс
сбрасываю SH в 0
задержка 1 мкс
устанавливаю ICG в 1
начинаю генерить M_CLK с частотой 2 МГц
по фронту M_CLK запускаю АЦП...
считываю 3694 раза

поправьте, если что не так.. laughing.gif


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
НЕХ
сообщение Jan 18 2011, 11:31
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 220
Регистрация: 10-10-06
Из: Петербург
Пользователь №: 21 169



генерить надо всегда !
ICG=0 pause SH=1


--------------------
Когда едешь на поезде - переезд всегда закрыт...
Go to the top of the page
 
+Quote Post
artem79
сообщение Jan 18 2011, 12:09
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 4-01-07
Из: Казань
Пользователь №: 24 091



Цитата(VladimirRPH @ Jan 18 2011, 10:32) *
девайс у мня дома...вечерком сделаю фотки, а пока напишу как я делаю инициализацию линейки:
сбрасываю ICG в 0
устанавливаю SH в 1
задержка 1 мкс
сбрасываю SH в 0
задержка 1 мкс
устанавливаю ICG в 1
начинаю генерить M_CLK с частотой 2 МГц
по фронту M_CLK запускаю АЦП...
считываю 3694 раза

поправьте, если что не так.. laughing.gif


Смотрите диаграмму - Timing requirements. datasheet.

1. Для начала сделайте по типовому ICG в 0 -> 500n -> SH в 1 -> 1000n -> SH в 0 -> 5000 -> ICG в 1.
2. M_CLK должна генериться постоянно.
3. Учтите Данные выходят с частотой M_CLK/4

Kакое время накопления??? Интервал м/у SH- Integration time.
Go to the top of the page
 
+Quote Post
OlegNS
сообщение Jan 19 2011, 15:26
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 97
Регистрация: 25-09-06
Пользователь №: 20 664



Для простоты цифровать можно 4096 раза за кадр. Те пиксели которые называются DARK можно использовать для установки нуля. 4-м тактам М_СLK соответствует 1 пиксель, соответственно, цифровать можно в этом диапазоне. Лучшие результаты получались при оцифровке в конце 4 такта. Длительность SH и ICG должна быть не менее 4 тактов. Чем больше тактов, тем сигнал лучше(до разумного количесива).
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 20 2011, 06:24
Сообщение #9





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



Спасибо за советы. буду пробовать!


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 26 2011, 06:36
Сообщение #10





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



Что-то у мня не очень все получается.
Залез осцыллом проверять все тактирующие сигналы... оказывается все эти сигналы "расплываются", все задержки сильно отличаются от задаваемых. Управляю линейкой атмегой128. Пробовал таймеры, вешние прерывания, подкидывал внешний тактовый генератор на 2 МГц к линейке... результат один и тот же.
Скорее всего придется ПЛИС ставить...
Подскажите кто чем управляет этой линейкой???


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
dinam
сообщение Jan 26 2011, 06:55
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



FPGA CycloneII управляет двумя линейками.
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 26 2011, 07:24
Сообщение #12





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



FPGA CycloneII хорошая весчь!


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
Lexdaw
сообщение Jan 26 2011, 07:35
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 5-02-08
Пользователь №: 34 772



Нормально они управляются и мегой 8 и 8515. Правда уменя частота M_CLK 1 МГц постоянно. ICG - 7 мкc. SH - 2 мкс.
Последовательность

""девайс у мня дома...вечерком сделаю фотки, а пока напишу как я делаю инициализацию линейки:
сбрасываю ICG в 0
устанавливаю SH в 1
задержка 1 мкс
сбрасываю SH в 0
задержка 1 мкс
устанавливаю ICG в 1
***************
вот здесь у меня импульс засветки
после него SH
**************

начинаю генерить M_CLK с частотой 2 МГц
по фронту M_CLK запускаю АЦП...
считываю 3694 раза""

Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 26 2011, 07:54
Сообщение #14





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



Lexdaw, а M_CLK у Вас генерится по таймеру???
Можете выложить код управления линейкой??

а после засветки SH снова в 1ку?


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
Lexdaw
сообщение Jan 26 2011, 08:47
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 5-02-08
Пользователь №: 34 772



1. ICG -> 0 7мкс, SH ->1 2 мкс
2. после ICG -> 1 вкл импульс света
3. SH ->1 2 мкс
4.чтение

M_CLK генерит счетчик в режиме CTC и подключеным выходом OC2 ((1<<COM20) +(1<<WGM21))
код ну если очень надо ,то позднее и он на Ассемблере.
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 26 2011, 08:54
Сообщение #16





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



понятно. спасибо. попробую этот вариантик.


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Jan 31 2011, 09:50
Сообщение #17





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



Загенерить 2 МГц получилось. теперь проблема в следующем. не успеваю считывать данные с внешнего 16-битного АЦП и записывать их во внешнюю память. уходит на это где то 15мкс. получается 66 кГц.
думаю теперь попробовать использовать внутреннее 8-битное АЦП.


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
Lexdaw
сообщение Feb 1 2011, 18:28
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 5-02-08
Пользователь №: 34 772



Ничё не понял.Матрица же медленно считывается( 500 кГц * 3600 ячеек ~ 7 мс ) за это время можно всё .Или это о чём-то другом
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Feb 3 2011, 07:20
Сообщение #19





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



Время запуска внешнего АЦП+ время считывания младших 8 бит + запись их во внешнюю память + время считывания старших 8 бит + запись их в память все это составляет 15 мкс.

Lexdaw, Вы используете внутренний АЦП? данные сразу на комп или в память?


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
Lexdaw
сообщение Feb 3 2011, 11:17
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 5-02-08
Пользователь №: 34 772



А мы точно об одном и том же говорим.Разве в TCD1304 есть АЦП?
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Feb 4 2011, 08:13
Сообщение #21





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



нет. в ней конечно же нет АЦП. нужно было наверное с самого начала схемку выложить. выход с линейки подключен к 16-битному АЦП, а АЦП к атмеге128.к меге подключена память, в которую скидываю оцифрованные данные.


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
VladimirRPH
сообщение Feb 7 2011, 08:00
Сообщение #22





Группа: Участник
Сообщений: 13
Регистрация: 17-01-11
Из: Волгоград
Пользователь №: 62 274



Все заработало! всем спасибо.
Проблема думаю была в АЦП, слишком долго шла обработка. Завел внутренне 8-битное атмегавское АЦП и все сразу встало на свои места.
Чет не очень пока пойму что дает второй режим работы этой линейки (использование защелки)....
буду разбираться...


--------------------
Российские микросхемы - самые большие микросхемы в мире!
Go to the top of the page
 
+Quote Post
Ckona
сообщение Oct 20 2011, 10:46
Сообщение #23





Группа: Новичок
Сообщений: 3
Регистрация: 20-10-11
Пользователь №: 67 857



Цитата(НЕХ @ Jan 18 2011, 10:00) *
показывайте осциллограммы - в ней нет чудес (у нас работает)


Здравствуйте !
Имеется необходимость "заставить работать" ПЗС-матрицу TCD1304 в составе интерфейсных плат Spectronic Devices.
Плата с колодкой для ПЗС-матрицы соединена шлейфом с "платой USB", на которой есть программируемая логическая матрица.
На плате ПЗС-матрицы имеется буфер ТС74Н и три неидентифицируемые микросхемы, похоже, операционные усилители.

Установлено отсутствие управляющих сигналов SH и ICG на выводах матрицы, на входах буферов и на шлейфе (отключенном от платы матрицы). Тактовый сигнал в норме.
На выходе матрицы напряжение составляет 2,8 В, в зависимости от освещенности не меняется.

Вопросы:
1) Означает ли отсутствие SH и ICG неисправость "платы USB", или же эти сигналы могут появиться только при управлении через USB от компьютера ?

2) Существует ли хоть какая-то документация на "платы Spectronic Devices", позволяющая локализовывать неисправную микросхему ?

Сообщение отредактировал Ckona - Oct 20 2011, 10:46
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
НЕХ
сообщение Oct 20 2011, 12:01
Сообщение #24


Профессионал
*****

Группа: Участник
Сообщений: 1 220
Регистрация: 10-10-06
Из: Петербург
Пользователь №: 21 169



"отсутствие управляющих сигналов SH и ICG на выводах матрицы"
без них - никакой работы


--------------------
Когда едешь на поезде - переезд всегда закрыт...
Go to the top of the page
 
+Quote Post
OlegNS
сообщение Oct 21 2011, 09:51
Сообщение #25


Частый гость
**

Группа: Свой
Сообщений: 97
Регистрация: 25-09-06
Пользователь №: 20 664



Скорее всего при подключению к компу заработает. Видимо надо подать сигнал разрешения на буфера.
Go to the top of the page
 
+Quote Post
Ckona
сообщение Oct 24 2011, 08:10
Сообщение #26





Группа: Новичок
Сообщений: 3
Регистрация: 20-10-11
Пользователь №: 67 857



Цитата(OlegNS @ Oct 21 2011, 12:51) *
Скорее всего при подключению к компу заработает. Видимо надо подать сигнал разрешения на буфера.

Спасибо, понял, "включаю" драйвер.

Go to the top of the page
 
+Quote Post
Ckona
сообщение Oct 24 2011, 08:10
Сообщение #27





Группа: Новичок
Сообщений: 3
Регистрация: 20-10-11
Пользователь №: 67 857



-

Сообщение отредактировал Ckona - Oct 24 2011, 08:10
Go to the top of the page
 
+Quote Post
sset
сообщение Dec 26 2011, 14:28
Сообщение #28





Группа: Новичок
Сообщений: 1
Регистрация: 26-12-11
Пользователь №: 69 099



Здравствуйте,помогите пожалуйста,делаю дипломную работу,нужно реализовать прием спектра (любого) с помошью ПЛЗ линейки.. из сканера,можно так сказать расказать все с нуля и по возможно "подкинуть" что нибуть,буду очень благодарен. sset@ukr.net
Go to the top of the page
 
+Quote Post
Airat1990
сообщение Mar 10 2013, 04:55
Сообщение #29





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



Я конечно понимаю тема старая,но может кто-нибудь поделиться исходниками для работы с TCD1304.
Go to the top of the page
 
+Quote Post
artem79
сообщение Jul 7 2014, 12:40
Сообщение #30


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 4-01-07
Из: Казань
Пользователь №: 24 091



Вообше в природе есть законченные устройства http://elscop.ru/?page_id=35. Попробуйте связаться.
Go to the top of the page
 
+Quote Post
Zhekas
сообщение Aug 24 2018, 09:10
Сообщение #31





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Здравствуйте.
Пытаюсь заставить работать линейку TCD1304 с микроконтроллером ATMega328, но она не хочет считываться, и АЦП выдает постоянные значения.
Использовал следующий код по алгоритму, описанному в этой ветке, на Си:

PORTB |= (0 << SH) | (1 << FM) | (1 << ICG);
TCCR2B |= (0 << CS22) | (0 << CS21) | (1 << CS20);
PORTB &= ~(1 << ICG);
_delay_us(0.5);
PORTB |= (1 << SH);
_delay_us(1);
PORTB &= ~(1 << SH);
_delay_us(1);
PORTB |= (1 << ICG);
TCCR0B |= (0 << CS02) | (1 << CS01) | (0 << CS00);
while (*point_number_ptr != pix_count - 1)
{
if (adc_buffer)
{
array_data[*point_number_ptr] = adc_buffer;
adc_buffer = 0;
++(*point_number_ptr);
}
}

Таймер 2 предварительно настроен на частоту 0.8 МГц в режиме CTC с переключением FM.
Таймер 0 предварительно настроен на запуск АЦП с частотой (0.8 / 4 / 6) МГц, поскольку хочу запускать АЦП на измерение каждого 6 пиксела.

Может, кто сталкивался с подобной проблемой? Уже кучу времени потратил и не могу все никак решить вопрос...

Сообщение отредактировал Zhekas - Aug 24 2018, 09:11
Go to the top of the page
 
+Quote Post
k155la3
сообщение Aug 26 2018, 13:10
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Держите в тайне на что "потратил кучу времени".
Тактирование на пин матрицы поступает ? Частота в диапазоне [мин-макс] ?
Диаграмма в соответствии с даташитом соблюдается ?
(это все надо проверить аппаратно).
Если постоянное значение на выходе, оно зависит от засветки (пискселя или всей линейки) ?


Go to the top of the page
 
+Quote Post
Zhekas
сообщение Aug 26 2018, 18:15
Сообщение #33





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Цитата(k155la3 @ Aug 26 2018, 16:10) *
Тактирование на пин матрицы поступает ? Частота в диапазоне [мин-макс] ?

Попробую в понедельник глянуть на двухканальном осциллографе и доложу результаты.
Цитата(k155la3 @ Aug 26 2018, 16:10) *
Если постоянное значение на выходе, оно зависит от засветки (пискселя или всей линейки) ?

Матрица вообще не реагировала на освещение.
Если честно, почитав кучу информации по матрицам, я так и не совсем понял полностью алгоритм, который нужно применить для интегрирования и считывания, и поэтому у меня есть вопросы:
1)Какую диаграмму нужно использовать: на странице 6 или на странице 8? Или на странице 6 приведен больше, чем 1 период сигналов для матрицы?
2)На диаграммах даны исходные сигналы или инверсные, для даташитовской схемы управления? В моем случае контроллер подключен непосредственно к матрице без инвертора.
3)До этого мне удавалось заставить матрицу работать, но сигнал я генерировал постоянно в бесконечном цикле, а к выходу матрицы подключал осциллограф. Не получается именно задать управляющие сигналы и считать результат АЦП. Такое впечатление, что постоянно упускаю какую-то мелочь...

Сообщение отредактировал Zhekas - Aug 26 2018, 18:19
Прикрепленные файлы
Прикрепленный файл  Toshiba_TCD1304AP_CCD_array.pdf ( 312.45 килобайт ) Кол-во скачиваний: 8
 
Go to the top of the page
 
+Quote Post
Plain
сообщение Aug 26 2018, 20:16
Сообщение #34


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Грубо говоря, по ICG=0 объёктив закрывается виртуальной крышкой, спустя 500 нс по SH=1 накопленный в ячейках кадр начинает переноситься из них в аналоговый сдвиговый регистр и заканчивает это делать спустя 1 мкс по SH=0, далее задержка 5 мкс и ICG=1, по каковому событию крышка с матрицы снимается, её начинает засвечивать следующий кадр, а из сдвигового регистра начинает выдвигаться текущий, по 4 такта на точку, из расчёта, что АЦП должен фиксировать данные в УВХ в конце 4-го такта.
Go to the top of the page
 
+Quote Post
Zhekas
сообщение Aug 28 2018, 11:41
Сообщение #35





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Провел ряд экспериментов. При этом, если гонять программу в бесконечном цикле, а результат ловить осциллографом, то вроде все работает, матрица на свет реагирует. Еще заметил, что выходной сигнал, хоть и меняется, имеет весьма малую амплитуду в несколько сотых милливольт. Также определил, что в даташите приведены сигналы в соответствии с описанной там схемой, т.е. инвертированные. Без инвертора сигналы должны быть перевернутые, иначе матрица на свет не реагирует.
При попытке однократного запуска интегрирования и измерения выходного сигнала АЦП, то его значения постоянны и не зависят от засветки матрицы. В этом же режиме все сигналы исправно поступают на входы матрицы.
Может быть дело в малой величине выходного сигнала, поскольку я подаю сигнал на АЦП прямо с матрицы? Хотя 0.3-0.5 В должно без проблем детектироваться АЦП с ИОН на 5,046 В на разрядностью 10 бит.
P.S. верхняя линия - ICG, нижняя - SH.

Сообщение отредактировал Zhekas - Aug 28 2018, 11:41
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Plain
сообщение Aug 28 2018, 15:39
Сообщение #36


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(Zhekas @ Aug 28 2018, 14:41) *
приведены сигналы в соответствии с описанной там схемой, т.е. инвертированные

Рис.7:

https://www.cezarchirila.com/documents/SSET...zar_Chirila.pdf

Ну и, заодно там же полезно почитать, как люди выполняют требования производителя к диаграмме сигналов, а конкретнее, никакими не "delay_us".
Go to the top of the page
 
+Quote Post
k155la3
сообщение Aug 28 2018, 17:54
Сообщение #37


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Zhekas @ Aug 28 2018, 14:41) *
. . . Может быть дело в малой величине выходного сигнала, поскольку я подаю сигнал на АЦП прямо с матрицы? . . .

Кроме амплитуды надо учитывать работу входных цепей АЦП, а именно УВХ (если оно реализовано) или входную емкость АЦП.
Если сигнал с матрицы маломощный, то при высокой частоте выборок матрица может не успевать "накачивать" УВХ или емкость по входу.
Посмотрите настройки АЦП Вашего контроллера, есть ли там УВХ. Если есть - должна быть настройка "времени захвата". Можно попробовать
проверить работу на мин и макс. значениях (хотя это может и не помочь). Более реально - буферизировать выход матрицы
(если в этом проблема).
--
У меня практ. опыта по этому девайсу нет. Лежит извлеченная из старого сканера матрица, ждет своей "реинкарнации" sm.gif

ps
Цитата(Zhekas @ Aug 24 2018, 12:10) *
. . .
PORTB |= (0 << SH) | (1 << FM) | (1 << ICG);
. . .
Судя по оператору, бит разряда с номером SH должен быть сбошен в 0. В правой части так и будет.
но если он (SH) до этого был в 1, то после |= так ней и останется.
---
далее я код не проверял, проанализируйте сами.

Go to the top of the page
 
+Quote Post
Zhekas
сообщение Aug 28 2018, 18:45
Сообщение #38





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Цитата(k155la3 @ Aug 28 2018, 20:54) *
ps
Судя по оператору, бит разряда с номером SH должен быть сбошен в 0. В правой части так и будет.
но если он (SH) до этого был в 1, то после |= так ней и останется.
---
далее я код не проверял, проанализируйте сами.

Этот код для однократного интегрирования. А до этого были все биты выставлены в нуль (эта часть кода не приведена).
А по поводу АЦП спасибо, буду пробовать разбираться.
Как я писал выше, дело именно в фиксации данных с помощью АЦП. А delay сделал для теста. Для точной генерации FM я использую таймер 2 в режиме сброса при совпадении и инвертирования состояния пина FM, а для времени интегрирования-таймер 1А в режиме прерывания и сброса при совпадении.

Цитата(Plain @ Aug 28 2018, 18:39) *
Рис.7:

https://www.cezarchirila.com/documents/SSET...zar_Chirila.pdf

Ну и, заодно там же полезно почитать, как люди выполняют требования производителя к диаграмме сигналов, а конкретнее, никакими не "delay_us".

Спасибо, почитаю.
Go to the top of the page
 
+Quote Post
Zhekas
сообщение Aug 31 2018, 13:55
Сообщение #39





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Прочитал статью. Там автор использует для генерации сигналов PWM на ICG и SH, используя для этого отдельные таймеры. Я изначально тоже так хотел сделать, однако в моем контроллере один 16 битный таймер, состоящий из 2 частей с общим количеством тактов. По этой причине тяжело настроить их запуск независимо друг от друга, чтобы сделать задержку между ICG и SH, да и время интегрирования будет меняться дискретно с изменением предделителя частоты счетчика (по переполнению).
Поэтому на данный момент я остановился на генерации импульса с помощью delay, а импульсы повторяются по совпадению значения счетчика с последующим его сбросом. Хотя я полностью признаю, что генерация сигнала с помощью delay - плохой метод.
По поводу АЦП есть идея. Возможно моя проблема связана с периодом повторения сигнала ICG - 1 мс. При этом предыдущий кадр не успевает полностью выйти из матрицы, как начинается следующий. В результате они накладываются друг на друга, и матрица оказывается все время в насыщении, а АЦП меряет не то что нужно. Попробую выставить данный интервал на 20 мс.

Сообщение отредактировал Zhekas - Aug 31 2018, 14:01
Go to the top of the page
 
+Quote Post
Zhekas
сообщение Sep 22 2018, 12:16
Сообщение #40





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Провел еще ряд экспериментов: увеличил время интегрирования до 20 мс, присваивал значения регистров таймеров через переменную, подключал эмиттерный повторитель к матрице и делал принудительный запуск АЦП для его первоначальной инициализации. В результате нуль - матрица как не считывалась, так и не считывается АЦП при однократном измерении. При этом в бесконечном цикле генерирования тактов осциллограф регистрирует изменяющейся выходной сигнал. АЦП тоже нормально работает (меряет напряжение на батарейке верно), и контроллер пересылает верные значения на ПК.
Даже уже и не знаю что делать, все идеи закончились...
Единственное, что я программировал таймер, отвечающий за тактирование, на 800 кГц, но ведь реальная частота должна быть 400 кГц, если брать период. В тоже время, запуск считывания я программировал на 200 кГц. Может быть, нужно выставить последнее значение на 100 кГц?

Сообщение отредактировал Zhekas - Sep 22 2018, 12:16
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 23 2018, 14:49
Сообщение #41


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Сделайте полный "ресет" работ. И начните его с проверки "распиновки" матрицы в соотв-ии с даташитом sm.gif
(уж очень много там пинов NC)
и правильности подключения. Затем осцилографом - выполнение диаграммы сигналов по даташиту.
(частота тактирования должна быть в диапазоне мин-макс).
Go to the top of the page
 
+Quote Post
Zhekas
сообщение Sep 23 2018, 16:48
Сообщение #42





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Цитата(k155la3 @ Sep 23 2018, 17:49) *
Сделайте полный "ресет" работ. И начните его с проверки "распиновки" матрицы в соотв-ии с даташитом sm.gif
(уж очень много там пинов NC)
и правильности подключения. Затем осцилографом - выполнение диаграммы сигналов по даташиту.
(частота тактирования должна быть в диапазоне мин-макс).

Там я проверял, все должно быть нормально. Такое впечатление, что просто АЦП не попадает в момент выхода сигнала пиксела из матрицы, посколько они появляются в виде узких линий (по осциллографу). Поэтому я и спрашиваю: частота - это время срабатывания таймера по совпадению или период, т.е. удвоенное время таймера? Просто в первом случае соотношение времен таймеров FM/ADC будет 1 к 4, а в другом 1 к 8. У меня сейчас 1 к 4.
Go to the top of the page
 
+Quote Post
Zhekas
сообщение Sep 26 2018, 17:57
Сообщение #43





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Нашел одну ошибку: соотношение времен таймеров должно быть 1 к 8, поскольку таймер изменяет состояние порта, а период - это когда сигнал меняется дважды. Теперь матрица иногда выдает какие-то значения, но каждый раз они меняются, иногда даже для пикселей в середине матрицы. На свет детектор по-прежнему не реагирует.
Go to the top of the page
 
+Quote Post
Zhekas
сообщение Sep 27 2018, 17:15
Сообщение #44





Группа: Участник
Сообщений: 9
Регистрация: 24-08-18
Пользователь №: 107 032



Сегодня помучал еще прибор, и есть прогресс! Оказалось, что операции написанные на Cи достаточно медленные. Я засек время выполнения операции выключения порта на 20 МГц и оно оказалось 560 нс! Соответственно, до этого у меня были неверно выставлены тайминги. Я это поправил.
Теперь матрица реагирует на свет, и даже иногда нужно несколько циклов вычитывания, чтобы на выходе у нее были темновые значения. Но она все равно выдает постоянное значения вне зависимости от локального освещения. Если освещать только часть матрицы, то на выходе напряжение будет одинаковое. Еще имеется один вопрос по поводу начальных логических состояний пинов ICG, SH и FM (до процесса измерения в режиме ожидания). Просто если их выставить в соответствии с даташитом, то ведь матрица будет постоянно интегрировать падающий световой поток...

Сообщение отредактировал Zhekas - Sep 27 2018, 17:23
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 27 2018, 21:38
Сообщение #45


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Zhekas @ Sep 27 2018, 20:15) *
Сегодня помучал еще прибор, и есть прогресс! Оказалось, что операции написанные на Cи достаточно медленные. . . . .

Если Вам приходится высчитывать наносекунды (пусть даже и сотни), то вывод - одно из двух: или надо брать более мощный процессор, или - выносить из софта критичные по времени операции во внешние (аппаратные) схемы. Есть еще вариант - изменить алгоритм, как "в консерватории подправить" sm.gif
ps - респект за настойчивость.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:49
Рейтинг@Mail.ru


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