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

 
 
> AT91SAM7S64 и SAA7113H, Реально ли и как?
Pasha 111
сообщение Jun 12 2007, 12:24
Сообщение #1


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

Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515



Объясните, пожалуйста, как работает SAA7113H. Не могу разобраться в доке.
http://www.nxp.com/pip/SAA7113H_V2.html

Каким образом кадр можно отцифровать и передать в проц? На выходе есть 8-ми битный интерфейс, но как это всё работает?

Задача стоит такая: получить монохромную картинку 320x240 (2 цвета, один кадр - 9600 байт), найти центр масс того белого пятна, что на ней будет и передать координаты (X, Y) по COM порту.

Памяти контроллера хватает, вычисления тоже вроде очень простые, real time не требуется (т.е. можно хоть 2 кадра в секунду тока обрабатывать). Как это всё можно сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Nov 19 2007, 12:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Странно: из регистра 0x0F читается 0x0F, а с остальными все в порядке. Похоже на программный глюк. После сброса там точно 0x2a должно быть.
Go to the top of the page
 
+Quote Post
Saratan
сообщение Nov 19 2007, 12:38
Сообщение #3





Группа: Новичок
Сообщений: 8
Регистрация: 2-08-07
Пользователь №: 29 524



Цитата(aaarrr @ Nov 19 2007, 16:22) *
Странно: из регистра 0x0F читается 0x0F, а с остальными все в порядке. Похоже на программный глюк. После сброса там точно 0x2a должно быть.

Код
  
LPC2294CEClear(); //Ресет САА
  for(long i=1;i<1000000;i++)
  {}  
  LPC2294CESet();
  for(long i=1;i<10000000;i++)
  {}  
  
printf( "Tr1 \n\r" );


for(char i=1;i<=23;i++)
{
  saa7113WSub(i, Saa7113InitMass[i]); //Запись байта Saa7113InitMass[i] в регистр i
  
    for(long j=1;j<10000000;j++)
    {}  
    
    printf("%d = %d\n\r", Saa7113InitMass[i], saa7113RSub(i));
  

    while(saa7113RSub(i)!=Saa7113InitMass[i]) //Чтение байта из регистра i
    {
      printf("Error #%d\n\r", i);  
    saa7113WSub(i, Saa7113InitMass[i]);
      for(long j=1;j<1000000;j++)
      {}  
    }
  
  printf("%d\n\r",i);
}


//Функция чтения байта

unsigned char  saa7113RSub(unsigned char Sub)
  {
  I2CSub = Sub; // задать функцию
  wr_rd = 1; //установить признак чтения
  end_rd = 0; //сбросить признак окончания чтения
  I2CONCLR = 0xFF; // сбросить все флаги I2C
  I2CONSET = 0x40; // разрешение I2C
  I2CONSET = 0x20; // передать условие START I2C

  while (end_rd == 0); // ожидать окончания чтения
  return I2DAT; //возврат прочитанного байта
  }

//Функция записи байта

void saa7113WSub(unsigned char Sub, unsigned char data_I2C)
  {
  I2CSub = Sub; // задать функцию
  I2Cwr_byte = data_I2C; // задать байт данных для записи
  wr_rd = 0; //установить признак записи
  I2CONCLR = 0xFF; // сбросить все флаги I2C
  I2CONSET = 0x40; // разрешение I2C
  I2CONSET = 0x20; // передать условие START I2C
  }


//функция-обработчик прерывания от I2C --------------------------------------------
static void I2CInterrupt()
{
  switch(I2STAT)
       {
        case (0x08): // было передано условие START
             I2CONCLR = 0x20; //сброс флага START I2C
             I2DAT=72; //передача адреса устр на шине и признака записи (W)
        break;
        case (0x10): // было передано условие повторный START
             I2CONCLR = 0x20; //сброс флага START I2C
             I2DAT=73; //передача адреса устр на шине и признака чтения (R)
        break;
        case (0x18): // был передан адрес ведомого + W, получен ACK
             //передача адреса
             I2DAT=I2CSub;
        break;
        case (0x28): // был передан байт данных, получен ACK
                   switch(wr_rd)
                     {
                       case (0):
                       //передача байта данных
                       I2DAT=I2Cwr_byte;
                       break;
                       case (1):
                       // передать условие START I2C
                       I2CONSET = 0x20; // повторный START
                       break;
                       default:
                       break;
                     }

        break;
        
        case (0x40): // был передан адрес ведомого + R, получен ACK
        I2CONCLR = 0x04; //сброс флага ACC I2C, чтобы возвратить NOT ACK
        break;
        case (0x58): // был получен байт данных, возвращен ACK
        I2CONSET = 0x10; // передать условие STOP I2C
        end_rd = 1; //установить признак окончания чтения
        break;
        default:
        break;
       }
I2CONCLR = 0x08; // сброс прерывания от I2C
}

Вродебы всё идёт так как и должно итти, я имею в виду чтение там, запись...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Pasha 111   AT91SAM7S64 и SAA7113H   Jun 12 2007, 12:24
- - AlexandrY   На этом чипе никак. См. ссылку http://electronix.r...   Jun 12 2007, 12:45
- - Pasha 111   Прочёл всю ветку, но большую частью не понял, так ...   Jun 12 2007, 14:05
|- - AlexandrY   У этого видео-АЦП выход сделан по стандарту ITU-R ...   Jun 12 2007, 15:10
- - Pasha 111   Вот нашел кое-что: http://www.cmucam.org/wiki/Hard...   Jun 12 2007, 21:45
- - rat   Цитата(Pasha 111 @ Jun 12 2007, 19:24) Об...   Jun 13 2007, 06:38
- - bzx   2 Pasha 111 Рекомендую AVR32. Мотивация в этой вет...   Jun 13 2007, 06:51
- - Pasha 111   Спасибо за ответы. 2 rat: Решение должно быть мак...   Jun 13 2007, 12:01
- - a3r3   Возьмите лучше ADSP-BF53x с внешней SDRAM - на так...   Jun 13 2007, 20:14
- - Saratan   Люди, поможите, у меня не записывается по I2C в ре...   Nov 14 2007, 08:46
|- - KAlex   Цитата(Saratan @ Nov 14 2007, 11:46) Люди...   Nov 14 2007, 10:03
|- - Saratan   Цитата(KAlex @ Nov 14 2007, 14:03) Старши...   Nov 19 2007, 08:05
|- - Saratan   Ещё такой вопрос, я правильно понимаю, этот АЦП по...   Nov 19 2007, 10:01
- - aaarrr   Правильно. Будет гнать поток постоянно, даже без с...   Nov 19 2007, 10:15
|- - Saratan   Цитата(aaarrr @ Nov 19 2007, 14:15) Прави...   Nov 19 2007, 12:05
- - Сергей Борщ   for(long volatile i=1;i<1000000;i++) {} Иначе о...   Nov 19 2007, 13:25
- - Saratan   Цитата(Сергей Борщ @ Nov 19 2007, 17:25) ...   Nov 20 2007, 06:56
- - Сергей Борщ   Цитата(Saratan @ Nov 20 2007, 08:56) Да в...   Nov 20 2007, 08:03
- - Saratan   Цитата(Сергей Борщ @ Nov 20 2007, 12:03) ...   Nov 20 2007, 08:17


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

 


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


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