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

 
 
> CY7C68013A постоянная булочная передача, прога для компа
torik
сообщение Feb 1 2007, 18:07
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Снова привет!

Ковыряюсь с этой платой CY3681, драйвер CyUSB....

Состряпал девайс - точка 1 IN интераптовая а также точки 2 OUT и 6 IN по 512 байт.
Пока зациклена точка 2 на точку 6, т.е. чо передаем с компа то обратно отсылаем...
Все это проверяется с помощью CyConsole... и вот какая проблема: в этой программе нельзя непрерывно принимать данные и записывать их в файл.

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


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
torik
сообщение Feb 15 2007, 19:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Тэкс, прерывания не спасли sad.gif
Возможно дело в программе на компутере... Попытаюсь описать проблему:

С камеры идут следущие сигналы:
- кадровые импульсы на вход INT0, прерывание срабатывает по фронту
- данные 8 разрядов идут на FIFO (PORTB, восьмиразрядный режым)
- на вход IFCLK идет тактовый сигнал с камеры (передним фронтом тактирует данные)
- на вход SLWR подаются строчные (ну почти, там еще гасящие учтены) импульсы, т.е. во время строки (640 байт) разрешается запись в ФИФО. Всего между кадровыми 480 строчных импульсов. Между задним фронтом кадрового импульса и первой строкой примерно 6500 тактов.
- еще адрес точки задается равным 10 на выводах FIFOADR0,1

Инициализация в сапрасовском МК следующая:
Код
void TD_Init(void) {
    PORTACFG = 1;        //PA0 будет входом прерывания от кадров

    PORTCCFG = 0;                //этот порт в принципе не используется
    OEC = 0x0b;                    //так только чтобы флаги выводить на светодиоды
    IOC = 0x0e;

    SYNCDELAY;
    CPUCS = 0x10;
    SYNCDELAY;
    IFCONFIG = 0xcb;         //при включении ФИФО внутреннее
                                               //тактирование, чтобы хрень не принимать
    SYNCDELAY;
    REVCTL = 0x03; // must set REVCTL.0 and REVCTL.1 to 1
    SYNCDELAY;
    SYNCDELAY;

    EP1OUTCFG = 0x00;     //нас будет интересовать только точка 6 в режыме IN
    EP1INCFG = 0xb0;
    SYNCDELAY;    
    EP2CFG = 0xA0;        
    SYNCDELAY;                    
    EP4CFG = 0x00;
    SYNCDELAY;                    
    EP6CFG = 0xE0;
    SYNCDELAY;                    
    EP8CFG = 0x00;
    SYNCDELAY;                    

    FIFOPINPOLAR = 0x04;       //для записи - активный высокий, т.к. такие уж строчные
    SYNCDELAY;

    for (i = 0; i < 4; i++) {       //хм... хватилобы и один разок
        FIFORESET = 0x80;  
        SYNCDELAY;
        FIFORESET = 0x02;  
        SYNCDELAY;
        FIFORESET = 0x04;    
        SYNCDELAY;
        FIFORESET = 0x06;    
        SYNCDELAY;
        FIFORESET = 0x08;    
        SYNCDELAY;
        FIFORESET = 0x00;
        SYNCDELAY;
    }

    EP2FIFOCFG = 0x0;                        //эти точки нафиг пока не нужны
    SYNCDELAY;
    EP4FIFOCFG = 0x0;
    SYNCDELAY;
    EP8FIFOCFG = 0x0;
    SYNCDELAY;

    EP6FIFOCFG = 0x04;                      //8 разрядов, пока не автаин, чтоб не леза дрянь
    SYNCDELAY;
    EP6AUTOINLENH = 0x02;               //пакеты по 512
    SYNCDELAY;
    EP6AUTOINLENL = 0x00;
    SYNCDELAY;

    OED = 0xff;
    IOD = 0xff;

    Rwuen = TRUE;                 // Enable remote-wakeup
}


Т.е. при включении хоть с камеры уже и идут данные, но мы их не принимаем, отключив внешние такты на ФИФО и точку сделав ручной.

По прерываниям от кадрового импульса:

Код
void INT0_isr(void) interrupt INT0_VECT
{
    PC0 = PC0 ^ 1;              //это я так сморю нет ли пропусков кадровых импульсов (нету...)

    if (nachalo == 1) {         //флаг nachalo выставляется при нажатии кнопки, а сбрасывается при
                                            //приходе следующего кадрового импульса
        SYNCDELAY;  
        FIFORESET = 0x80;  //очистить ФИФО
        SYNCDELAY;
        FIFORESET = 0x06;
        SYNCDELAY;
        FIFORESET = 0x00;
        SYNCDELAY;

        IFCONFIG = 0x03;   //вот тут делаем внешние такты (от камеры) и синхронный режим
        SYNCDELAY;

        EP6FIFOCFG = 0x0c;  //вот теперь точка стала автаин... пошел прием даных
        SYNCDELAY;
        EP6AUTOINLENH = 0x02;
        SYNCDELAY;
        EP6AUTOINLENL = 0x00;
        SYNCDELAY;

        nachalo = 0;
    } else {                                              //в следующем же кадре хватит принимать
                                                                 //чтобы у нас только один кадр был
        IFCONFIG = 0xcb;                      //нафиг внешние такты
        SYNCDELAY;

        EP6FIFOCFG = 0x04;               //на всякий случай точку в ручной режим
        SYNCDELAY;
        EP6AUTOINLENH = 0x02;
        SYNCDELAY;
        EP6AUTOINLENL = 0x00;
        SYNCDELAY;

        SYNCDELAY;  
        FIFORESET = 0x80;
        SYNCDELAY;
        FIFORESET = 0x06;
        SYNCDELAY;
        FIFORESET = 0x00;
        SYNCDELAY;
    }
}


Вот, т.е. нажали кнопку установив при этом флаг nachalo, и при приходе кадрового импульса разрешаем передачу данных в течении одного кадра. это 640*480 байт или 600 пакетов по 512 байт.

Значицца, как же это принимаю на компе? А вот так (делаю не я, а програмист на компе, лучшеб конечно он объяснил ну да лана):
Код
    dlg->CtrlEndPt->TimeOut = 1500;
    dlg->InEndPt->TimeOut = 1500;
    dlg->InEndPt->XferData(buffers[0], len); //вот собственно :)


Делали и очередь по приему, как это написано в примере "Стриммер". Вывод на экран правильный, пробовал заменять принятый буфер buffers[0] на чото свое - все норм.

И проблема осталась прежней sad.gif
- картинка разбита на куски. Нет синхронизации ни строчной походу ни кадровой (т.к. разбивается и по вертикали и по горизонтали).

Нажимаем кнопку "прием" и сразу же на плате кнопку, которая ставит флаг nachalo... и - пакет принимается не полностью, вроде не сначала. причом что интересно в разбиении картинки имеется повторяемость - примерно каждые 100 пикселей по вертикали разбиватет. Т.е. картинка состоит из 4,8 полосок по вертикали и по горизонтали похоже на то же самое.

Что тут может быть не так? Прога для компа или для МК, как отличить???


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
jur
сообщение Feb 15 2007, 23:08
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Тяжело вот так, дистанционно, понять проблему... Думаю, что стоило бы разбить сложную задачу на более простые части. Например, нет-ли возможности организовать запись с камеры только 512 байт, а оставшуюся часть строки просто отбрасывать? Это позволило бы проверить и отладить синхронизацию. На этапе отладки, думаю, можно мириться с тем, что остаток кадра не виден. Т.е. организовать такой автомат, который пишет строку (указывая в первом байте маркер начала кадра) только до 512-го байта, а остаток отбрасывает. В этом случае можно было бы отработать все моменты системы. А потом, когда все заработает, продумать расширение строки до полных 640 пикселей.


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- torik   CY7C68013A постоянная булочная передача   Feb 1 2007, 18:07
- - Warlord   Выход один, учиться программировать на ПК. Это теб...   Feb 2 2007, 11:02
- - torik   Аха - все получилось. Принимаю данные. Следующий ш...   Feb 2 2007, 15:39
- - torik   Ну вот и снова я... Первый вопрос (не принципиаль...   Feb 5 2007, 14:54
- - torik   ах да - может это както связано с регистром AUTOPT...   Feb 6 2007, 09:56
|- - jur   Цитата(torik @ Feb 6 2007, 08:56) ах да -...   Feb 7 2007, 08:20
- - torik   Дык а чего еще нужно? К ФИФО подключены данные, ас...   Feb 7 2007, 14:55
|- - jur   Цитата(torik @ Feb 7 2007, 13:55) Дык а ч...   Feb 7 2007, 17:05
- - torik   Цитата(jur @ Feb 7 2007, 17:05) Запись да...   Feb 8 2007, 09:00
|- - jur   Цитата(torik @ Feb 8 2007, 08:00) EZ-USB ...   Feb 8 2007, 23:14
- - torik   Насчет проверки... Сделано, только программное зап...   Feb 10 2007, 15:09
- - torik   Получилось - сигнал с камеры пошел... Только пришл...   Feb 10 2007, 17:19
- - torik   Ладно, с железом разобрались... теперь с программо...   Feb 12 2007, 09:44
|- - jur   Цитата(torik @ Feb 12 2007, 08:44) Ладно,...   Feb 13 2007, 08:12
|- - -Al-   Цитата(torik @ Feb 12 2007, 09:44) Ладно,...   Feb 13 2007, 11:58
- - torik   Извиняюсь, три дня на работе без инета Посмотрел ...   Feb 13 2007, 20:03
|- - jur   Цитата(torik @ Feb 13 2007, 19:03) Теперь...   Feb 13 2007, 22:00
- - torik   ыхы - вот только маркерный байт не подет - остальн...   Feb 14 2007, 19:19
|- - jur   Цитата(torik @ Feb 14 2007, 18:19) ыхы - ...   Feb 14 2007, 22:10
- - torik   О - спасибо - насчет маркерного байта понял. Тут п...   Feb 15 2007, 11:44
|- - jur   Цитата(torik @ Feb 15 2007, 10:44) И оста...   Feb 15 2007, 13:57
|- - jur   Цитата(torik @ Feb 15 2007, 10:44) Тут пр...   Feb 15 2007, 14:10
- - torik   насчет интераптовых "быстрых" точек - я ...   Feb 15 2007, 14:18
- - torik   хм... Оказывается комп пропускает пакеты иногда, п...   Feb 16 2007, 15:05
|- - -Al-   @torik Я тут чего-то не понял?? Вы пытаетесь с пом...   Feb 16 2007, 15:34
|- - jur   Цитата(torik @ Feb 16 2007, 14:05) Как сд...   Feb 16 2007, 18:56
- - torik   А с помощью чего еще ловить начало кадра? По преры...   Feb 16 2007, 17:26
|- - -Al-   Цитата(torik @ Feb 16 2007, 17:26) А с по...   Feb 16 2007, 19:06
|- - jur   Цитата(-Al- @ Feb 16 2007, 18:0...   Feb 17 2007, 12:38
- - torik   AL, "6500 тактов камеры" - это значит чу...   Feb 17 2007, 13:38
- - -Al-   Цитата(jur @ Feb 17 2007, 12:38) С одной ...   Feb 17 2007, 15:00
|- - jur   Цитата(-Al- @ Feb 17 2007, 14:0...   Feb 18 2007, 20:01
- - torik   Аха, понял про прерывания, это учитываю. Что каса...   Feb 17 2007, 15:42
- - torik   А как контроллер будет определять что PCKTEND полу...   Feb 19 2007, 10:12
|- - jur   Цитата(torik @ Feb 19 2007, 09:12) А как ...   Feb 19 2007, 18:44
|- - torik   Цитата(jur @ Feb 19 2007, 18:44) Цитата(t...   Feb 19 2007, 21:25
|- - jur   Цитата(torik @ Feb 19 2007, 20:25) Чатота...   Feb 19 2007, 22:51
- - torik   Короче, вот такой будет вопрос... Кадр = 640*480,...   Feb 19 2007, 16:20
- - torik   Во блин дела... Тока заметили - пакеты 512 байт мы...   Feb 19 2007, 17:31
- - Warlord   Интересно получается, пакеты пропадают. Для начала...   Feb 20 2007, 10:40
- - torik   Потерю пакетов устранили! Картинка получилась,...   Feb 20 2007, 15:24
- - Warlord   ЦитатаКак приняли эти 640*480 байт, передаем их в ...   Feb 20 2007, 17:02
- - torik   Хы... тоже верно, спасибо. Но я всетаки сделал ка...   Feb 20 2007, 19:54


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 01:13
Рейтинг@Mail.ru


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