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

Передача данных из SPI в SPI

Я так понимаю, что без блока на fpga, организующего прием данных с SPI1 не обойтись, потому что если данные идут постоянно, то программа все время "висит" в обработчике прерывания по приему SPI1 и даже не выходит в основной цикл. ( Это я попробовала при помощи Niosа принимать) Хотя не совсем мне понятно почему так, ведь данные идут с частотой 30 Мгц, а процессор работает на 157МГц. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм...

 

Уважаемая Леди! При организации цифровой системы для обработки чего либо. У вас имеется рабочий цикл. Во время которого процессор (в вашем случае NIOS) прочитать данные -> обработать данные -> записать обработанные данные. И этот процесс я осмелюсь предположить синхронный.

Вам необходимо расписать задачи процессора на один рабочий цикл (на один дискрет).

 

Допустим если у вас за цикл 100 секунд (ОЧЕНЬ ОБРАЗНО ГОВОРЯ) процессор успевает выполнить 100 команд , то Вам необходимо распорядиться этим вычислительным ресурсом таким образом, чтобы успеть прочитать SPI, записать SPI, обработать данные и вернуться в основной цикл чтобы выполнить ряд основных задач.

 

 

Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм...

 

Вы наверняка работаете по прерываниям. И вообще стоит ввести такое понятие как приоритет прерываний. И возможно все встанет на свои места даже если все задачи загрузить на NIOS.

 

 

 

 

РАЗБЕРИТЕСЬ с собственными задачами на системном уровне. Не лезьте в глубь пока не разобрались на системном уровне.

 

Уважаемая Леди! При организации цифровой системы для обработки чего либо. У вас имеется рабочий цикл. Во время которого процессор (в вашем случае NIOS) прочитать данные -> обработать данные -> записать обработанные данные. И этот процесс я осмелюсь предположить синхронный.

Вам необходимо расписать задачи процессора на один рабочий цикл (на один дискрет).

 

Допустим если у вас за цикл 100 секунд (ОЧЕНЬ ОБРАЗНО ГОВОРЯ) процессор успевает выполнить 100 команд , то Вам необходимо распорядиться этим вычислительным ресурсом таким образом, чтобы успеть прочитать SPI, записать SPI, обработать данные и вернуться в основной цикл чтобы выполнить ряд основных задач.

 

 

 

 

Вы наверняка работаете по прерываниям. И вообще стоит ввести такое понятие как приоритет прерываний. И возможно все встанет на свои места даже если все задачи загрузить на NIOS.

 

 

 

 

РАЗБЕРИТЕСЬ с собственными задачами на системном уровне. Не лезьте в глубь пока не разобрались на системном уровне.

 

ИМХО

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


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

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...