dima_spb 0 6 апреля, 2015 Опубликовано 6 апреля, 2015 · Жалоба Я так понимаю, что без блока на fpga, организующего прием данных с SPI1 не обойтись, потому что если данные идут постоянно, то программа все время "висит" в обработчике прерывания по приему SPI1 и даже не выходит в основной цикл. ( Это я попробовала при помощи Niosа принимать) Хотя не совсем мне понятно почему так, ведь данные идут с частотой 30 Мгц, а процессор работает на 157МГц. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм... Уважаемая Леди! При организации цифровой системы для обработки чего либо. У вас имеется рабочий цикл. Во время которого процессор (в вашем случае NIOS) прочитать данные -> обработать данные -> записать обработанные данные. И этот процесс я осмелюсь предположить синхронный. Вам необходимо расписать задачи процессора на один рабочий цикл (на один дискрет). Допустим если у вас за цикл 100 секунд (ОЧЕНЬ ОБРАЗНО ГОВОРЯ) процессор успевает выполнить 100 команд , то Вам необходимо распорядиться этим вычислительным ресурсом таким образом, чтобы успеть прочитать SPI, записать SPI, обработать данные и вернуться в основной цикл чтобы выполнить ряд основных задач. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм... Вы наверняка работаете по прерываниям. И вообще стоит ввести такое понятие как приоритет прерываний. И возможно все встанет на свои места даже если все задачи загрузить на NIOS. РАЗБЕРИТЕСЬ с собственными задачами на системном уровне. Не лезьте в глубь пока не разобрались на системном уровне. Уважаемая Леди! При организации цифровой системы для обработки чего либо. У вас имеется рабочий цикл. Во время которого процессор (в вашем случае NIOS) прочитать данные -> обработать данные -> записать обработанные данные. И этот процесс я осмелюсь предположить синхронный. Вам необходимо расписать задачи процессора на один рабочий цикл (на один дискрет). Допустим если у вас за цикл 100 секунд (ОЧЕНЬ ОБРАЗНО ГОВОРЯ) процессор успевает выполнить 100 команд , то Вам необходимо распорядиться этим вычислительным ресурсом таким образом, чтобы успеть прочитать SPI, записать SPI, обработать данные и вернуться в основной цикл чтобы выполнить ряд основных задач. Вы наверняка работаете по прерываниям. И вообще стоит ввести такое понятие как приоритет прерываний. И возможно все встанет на свои места даже если все задачи загрузить на NIOS. РАЗБЕРИТЕСЬ с собственными задачами на системном уровне. Не лезьте в глубь пока не разобрались на системном уровне. ИМХО Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GAYVER 2 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба а ведь действительно, если работать по прерыванию от SPI1 - проблем не будет. SPI1 долго и нудно собирает данное, как только оно готово - выставляется прерывание, процессор его обрабатывает и вываливается дальше в основной цикл. процессору много времени на обработку не надо - чтение данного и его последующая запись. ожидать подтверждения окончания записи процессору не надо. вопрос в том чтобы организовать это прерывание от SPI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться