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

 
 
> AT91SAM7S не успевает читать данные с PIO!?, Кричу о помощи!!!!!
DAPA
сообщение Aug 11 2011, 12:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 4-03-09
Пользователь №: 45 664



Есть AT91SAM7S256 на один пин поступает сигнал синхронизации, по которому с нужно считать с других пинов в память данные(параллельная шина), но как ни крути больше в цикле считывания не удаётся, даже, инкрементировать переменную больше 100 раз, вместо положенных 256!!!
Вот фрагмент отвечающего за эото кода:
Код
uint16_t MAS_DAT[LENTH];
...
__inline void Get_Data(void) {
    volatile uint16_t *poi = (uint16_t*) MAS_DAT;
    volatile uint16_t i = 0, l = 0;
    uint32_t tmp1,tmp2;
    while (pPIO->PIO_PDSR & VSYNC) {
        i = 0;
        while (pPIO->PIO_PDSR & HSYNC) {
            //i++;
            //while(pPIO->PIO_PDSR&(1<<30));//CLK
            tmp1 = (pPIO->PIO_PDSR>>5);
            tmp2 = (pPIO->PIO_PDSR>>5);
             *poi = (uint16_t)(tmp2<<8)|tmp1;
             poi++;
        }
        //asm("add %[value], %[value],#1" : [value] "=r" (l));
        l++;
        while (!(pPIO->PIO_PDSR & HSYNC) && (pPIO->PIO_PDSR & VSYNC));
    }
    poi = (uint16_t*)MAS_DAT;
    *poi = i;
    poi++;
    *poi = l;
}

smile3046.gif 1111493779.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Aug 12 2011, 09:14
Сообщение #2


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Код
    volatile uint16_t *poi = (uint16_t*) MAS_DAT;
    volatile uint16_t i = 0, l = 0;

Хотелось бы узнать смысл квалификатора volatile во второй строчке. Ну и в первой, за одно.
Ещё, по недоброй традиции копипэймта, и pPIO как volatile обявили? Так Вы всё сделали для замедления программы.
Цитата(DAPA @ Aug 11 2011, 17:20) *
(Просто речь идёт о чтении данных с камеры sm.gif, HSYNC - синхронизация строк )


разумнее было бы ловить фронт (через IRQx) и считывать конкретное количество сэмплов.
Похожая (по ловле HSYNC) задача была при реализации on screen display.
Подумайте о применении АЦП с последовательным интерфейсом - и использовании ПДП на SSC.

Сообщение отредактировал Genadi Zawidowski - Aug 12 2011, 09:26
Go to the top of the page
 
+Quote Post



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

 


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


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