SergeyVas 0 3 января, 2014 Опубликовано 3 января, 2014 · Жалоба Разбираюсь с исходниками, интервал прерываний задается в этой строчке. SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/100); /* Generate interrupt every 10 ms */ Как сделать 1мкс , может для этого другой таймер лучше использовать, или может что посоветуете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 3 января, 2014 Опубликовано 3 января, 2014 · Жалоба Как сделать 1мкс , может для этого другой таймер лучше использовать, или может что посоветуете? В теории нужно делить на 1000000 вместо 100. Рабочая частота, естественно нужна такая, чтобы проц не захлебнулся так часто прерываться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 4 января, 2014 Опубликовано 4 января, 2014 (изменено) · Жалоба Вроде так: SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/1000); Вроде так: SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/1000); прошу прощения - это для 1ms Для 1 us, как правильноответили выше : SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/1000000); Изменено 4 января, 2014 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 4 января, 2014 Опубликовано 4 января, 2014 · Жалоба Разбираюсь с исходниками, интервал прерываний задается в этой строчке. SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/100); /* Generate interrupt every 10 ms */ Как сделать 1мкс , может для этого другой таймер лучше использовать, или может что посоветуете? Незнаю, для какой задачи, но так часто прерываться не гуд, может есть какой-либо другой способ, например, если что-то нужно считать и стробировать с такой частотой, может лучше таймер в режиме захвата? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 4 января, 2014 Опубликовано 4 января, 2014 · Жалоба Разбираюсь с исходниками, интервал прерываний задается в этой строчке. SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/100); /* Generate interrupt every 10 ms */ Как сделать 1мкс , может для этого другой таймер лучше использовать, или может что посоветуете? Посоветую посмотреть в документацию. Я с этим процессором не работал, но если NXP ничего не поменяли в системе тактирования ядра и переферии, то частота переферии задаётся как частота ядра делённая на один из 4х фиксированых делителей (регистр PCLKSEL). Зная частоту переферии легко вручную посчитать то, что возвращает CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/100 для требуемого Вам периода генерации прерываний. По опыту использования 5us прерываний на CORTEX-M3, заведённом на 100 MHz - нормально не работает. Слишком много пропусков. А Вы метите на 1uS... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 4 января, 2014 Опубликовано 4 января, 2014 · Жалоба По опыту использования 5us прерываний на CORTEX-M3, заведённом на 100 MHz - нормально не работает. Слишком много пропусков. А Вы метите на 1uS... При частоте ядра ==100МГц прерывания с периодом 5мкс не должны составлять никакой проблемы. Ищите баги у себя. Например - проверьте приоритет ISR-ов, длительности запретов прерываний в коде и т.п. У меня работают таймерные прерывания 2МГц на M3 (LPC1758) при CLK ядра==100МГц. И не просто входит и выходит в ISR, но и выполняет свою задачу. Конечно загрузка CPU более 90%. Но если нужно - это возможно. У меня такое прерывание от периферийного таймера, но от SysTick будет ещё проще, так как не надо в каждом прерывании давать подтверждение таймеру. Такие частоты прерываний очень полезны для отладки. Например я так ищу проблемы например с разрушением памяти: портится некая переменная - делаешь мониторинг её в таком ISR (ISR написан на асм) и получаешь источник записи с точностью +/- несколько команд. А уж на 400кГц вполне хватает для сохранения всего контекста CPU и ещё дампа стека глубиной 40 слов (32-битных). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 4 января, 2014 Опубликовано 4 января, 2014 · Жалоба Сейчас поэкспериментирую, процессор работает на частоте 204 , но пока еще не разобрался как настраиваются предделители. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 4 января, 2014 Опубликовано 4 января, 2014 · Жалоба Пока нормально работает, судя по аналоговому осциллографу. 5мкс одновременно работает uart tcpip easywebserver дрожания и подвисаний не видно посмотрим что дальше будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба Немного поэкспериментировал, работает нормально доделал код генератора stepdir,код сложный много функций из библиотеки math и string, думал будут пропуски шагов но за это небольшое время не заметил. Попробую прицепить к станку с рисовалкой и посмотрю повторяемость. Единственное придется наверно запускать два ядра, первое для браузера(webserver) сейчас получается так: пока интерполяция не закончиться вебсервер не может отдать страницу. Круговая интерполяция может долго работать браузер будет выдавать 404 где таймоут задается ? (имею ввиду сколько времени будет ждать браузер ответа от сервера где этот параметр задается.) видео Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 16 января, 2014 Опубликовано 16 января, 2014 · Жалоба Смотрю документацию и m0 и m4 тактируются 204 mhz, получается производительность как на 408мгц в чем подвох? ) Еще один вопрос какой стек tcp лучше использовать для m0 ? Хочу попробовать сделать на м0 стек а другом генератор импульсов. не знаю что из этого получиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 17 января, 2014 Опубликовано 17 января, 2014 · Жалоба Смотрю документацию и m0 и m4 тактируются 204 mhz, получается производительность как на 408мгц Во классно, прямо чудо какое-то!!! Что-то тут не так Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgen2 0 20 января, 2014 Опубликовано 20 января, 2014 · Жалоба Немного поэкспериментировал, работает нормально доделал код генератора stepdir,код сложный много функций из библиотеки math и string, думал будут пропуски шагов но за это небольшое время не заметил. Попробую прицепить к станку с рисовалкой и посмотрю повторяемость. Единственное придется наверно запускать два ядра, первое для браузера(webserver) сейчас получается так: пока интерполяция не закончиться вебсервер не может отдать страницу. Круговая интерполяция может долго работать браузер будет выдавать 404 где таймоут задается ? (имею ввиду сколько времени будет ждать браузер ответа от сервера где этот параметр задается.) видео простите, а можно поинтересоваться - что это за такой крутой станок, для которого нужно использвать прерывания 1 мкс, судя по всему для шагового двигателя? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 20 января, 2014 Опубликовано 20 января, 2014 · Жалоба Станок может быть любой. На этой плате генерируются импульсы направления и шага в зависимости от того куда нужно переместиться с какой скоростью и как линейно или дугой. Импульсы можно на сервопривода или на привода которые управляют шаговыми двигателями. Чем больше частота прерываний, тем больше импульсов можно получить. Особенно актуально для сервопривода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 января, 2014 Опубликовано 20 января, 2014 · Жалоба 1 мкс - это нормально, если с микрошагами по 256 на шаг, то даже не супер быстро. в таких системах от 2 до 5 МГц частота шагов бывает, 500-200 нСек то есть. только доверять такое процу... плавать же будет из-за нечеткости прерывания и прочих процессов. Надо либо полностью ядро освобождать под это, или ДМА из фифо-буфера какого - то, но мы пошли путем ПЛИС со своим буфером, так надежнее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 20 января, 2014 Опубликовано 20 января, 2014 · Жалоба А Вы кол-во тактов обработчика смотрели? у ARM-v7M вход в прерывание 12 циклов, выход 10 при частоте 204 Mhz - остается 182 цикла, но надо и на другое оставить... только доверять такое процу... плавать же будет из-за нечеткости прерывания и прочих процессов. Можно избавится от "дрожания" посадив выход на "External Match Output", а в прерывании уже рассчитывать новое значение Match регистра... у NXP удобно сделана работа через EMR регистр, там можно и напрямую ногой управлять и выставить какое действие будет по очередному событию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться