Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: минимальное время старта PLL у SAM7s
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
alexsl
Добрый день. Хотелось бы узнать минимальное время старта PLL. Вопрос стоит о том как быстро можно начать обрабатывать прерывания. К примеу процессор находится в низко потребляющем режиме. Вся переферия спит, ядро тактируется от 500Гц. Приходит прерывание, необходимо завести PLL, генератор и войти в функцию обработки.
Поделитесь опытом возможно ли получить время порядка 5 мкС с момента прихода прерывания и до входа в обработчик???
Заранее спасибо.
alexander55
Цитата(alexsl @ Oct 22 2007, 14:42) *
Добрый день. Хотелось бы узнать минимальное время старта PLL. Вопрос стоит о том как быстро можно начать обрабатывать прерывания. К примеу процессор находится в низко потребляющем режиме. Вся переферия спит, ядро тактируется от 500Гц. Приходит прерывание, необходимо завести PLL, генератор и войти в функцию обработки.
Поделитесь опытом возможно ли получить время порядка 5 мкС с момента прихода прерывания и до входа в обработчик???
Заранее спасибо.

Думаю, цифра 5 мкС нереальна. Сам PLL не даст. Для примера, у LPC после разрешения PLL отсчитывается 4096 тактов (если мне не изменяет память), а после этого считается, что можно включать PLL.
У SAM7s, думаю, аналогично (физику пока никто не отменял).
Сергей Борщ
Цитата(alexsl @ Oct 22 2007, 13:42) *
Поделитесь опытом возможно ли получить время порядка 5 мкС с момента прихода прерывания и до входа в обработчик???
Опыта не имею, не измерял. Время зависит от параметров RC-цепочки на выводе RC. Как его считать знает только сам Атмел. Хотя можно расковырять экселевский файл, который они раздают и вытянуть формулу. Может ситуацию облегчить таким образом - просыпаясь запускаем кварц и уходим на обработку события. По прерыванию кварца переключаем тактирование на кварц, включаем PLL и продолжаем обработку. По прерыванию PLL переключаем тактирование на PLL. Какое-то время да сэкономим.
DASM
А зачем PLL отключать ? Может просто отключить ядро от него ? Не так оно много и кушает
alexander55
Цитата(DASM @ Oct 23 2007, 11:18) *
А зачем PLL отключать ? Может просто отключить ядро от него ? Не так оно много и кушает

А разве PLL не выключится при переходе в Sleep режим ?
DASM
Верно sad.gif
alexsl
Цитата(DASM @ Oct 23 2007, 14:14) *
Верно sad.gif

Спасибо за ответ. Уже понял что цифра не реальная, потыкавшись в атмеловском эксел файле. Может быть посоветуете другой способ быстрого старта из сна(процессор стоит, 32кГц тикает, на ножке Xin висит генератор 16МГц на него и надо переключится)? За какое время процессор доберется до функции обработки внешнего прерывания?
Вобщем проблема следующая. Есть импульс 10мкС. По фронту он должен проснутся и успеть считать с ножки(на которой произошло прерывание) лог уровень(для определения фронта, тк детектора фронта у параллельного контроллера нет, а irq0,1 заняты)
alexander55
Цитата(alexsl @ Oct 23 2007, 16:09) *
Спасибо за ответ. Уже понял что цифра не реальная, потыкавшись в атмеловском эксел файле. Может быть посоветуете другой способ быстрого старта из сна(процессор стоит, 32кГц тикает, на ножке Xin висит генератор 16МГц на него и надо переключится)? За какое время процессор доберется до функции обработки внешнего прерывания?
Вобщем проблема следующая. Есть импульс 10мкС. По фронту он должен проснутся и успеть считать с ножки(на которой произошло прерывание) лог уровень(для определения фронта, тк детектора фронта у параллельного контроллера нет, а irq0,1 заняты)

С цифрой могу ошибиться, но думаю, 3-10 мС. Это реальнее.
alexsl
Цитата(alexander55 @ Oct 23 2007, 16:46) *
С цифрой могу ошибиться, но думаю, 3-10 мС. Это реальнее.

Очень жаль sad.gif
alexander55
Цитата(alexsl @ Oct 23 2007, 17:00) *
Очень жаль sad.gif

Альтернатива: не спать. smile.gif
Dron_Gus
Цитата(alexsl @ Oct 23 2007, 16:09) *
для определения фронта, тк детектора фронта у параллельного контроллера нет


Для определения фронта можно использовать прошлое состояние входов и регистр PIO_ISR.
DASM
Так это..... если генератор есть 16 Мгц - то какие проблемы вообще ? Переключаемся на него конечно. PLL пусть пока запускается, а мы работаем.. Если только я с LPC не путаю, каша в голове
Calculator
Цитата(alexsl @ Oct 23 2007, 18:09) *
Вобщем проблема следующая. Есть импульс 10мкС. По фронту он должен проснутся и успеть считать с ножки(на которой произошло прерывание) лог уровень(для определения фронта, тк детектора фронта у параллельного контроллера нет, а irq0,1 заняты)

То, что пины IRQ заняты - не проблема, можно использовать любой пин для прерывания по уровню или по фронту. Но, если контроллер в спячке, то не только PLL, но и кварц (если на Xin кварц, а не внешний генератор) не запустятся за требуемые 10 мкс. И более того, в спячке прерывание по изменению уровня не сработает тоже. То есть для этого контроллера в спячке такую задачу не решить. Можно использовать какую-нибудь внешнюю логику, но что именно - надо знать задачу поконкретнее. Например, можно поставить внешний генератор и делитель, по приходу одного фронта импульса запоминать значение делителя в одном регистре, по приходу второго фронта - в другом регистре. Затем просыпается контроллер и читает состояния обоих регистров.
DASM
написано - генератор .....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.