|
|
  |
минимальное время старта PLL у SAM7s |
|
|
|
Oct 22 2007, 10:42
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165

|
Добрый день. Хотелось бы узнать минимальное время старта PLL. Вопрос стоит о том как быстро можно начать обрабатывать прерывания. К примеу процессор находится в низко потребляющем режиме. Вся переферия спит, ядро тактируется от 500Гц. Приходит прерывание, необходимо завести PLL, генератор и войти в функцию обработки. Поделитесь опытом возможно ли получить время порядка 5 мкС с момента прихода прерывания и до входа в обработчик??? Заранее спасибо.
|
|
|
|
|
Oct 23 2007, 06:44
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(alexsl @ Oct 22 2007, 14:42)  Добрый день. Хотелось бы узнать минимальное время старта PLL. Вопрос стоит о том как быстро можно начать обрабатывать прерывания. К примеу процессор находится в низко потребляющем режиме. Вся переферия спит, ядро тактируется от 500Гц. Приходит прерывание, необходимо завести PLL, генератор и войти в функцию обработки. Поделитесь опытом возможно ли получить время порядка 5 мкС с момента прихода прерывания и до входа в обработчик??? Заранее спасибо. Думаю, цифра 5 мкС нереальна. Сам PLL не даст. Для примера, у LPC после разрешения PLL отсчитывается 4096 тактов (если мне не изменяет память), а после этого считается, что можно включать PLL. У SAM7s, думаю, аналогично (физику пока никто не отменял).
|
|
|
|
|
Oct 23 2007, 12:09
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165

|
Цитата(DASM @ Oct 23 2007, 14:14)  Верно  Спасибо за ответ. Уже понял что цифра не реальная, потыкавшись в атмеловском эксел файле. Может быть посоветуете другой способ быстрого старта из сна(процессор стоит, 32кГц тикает, на ножке Xin висит генератор 16МГц на него и надо переключится)? За какое время процессор доберется до функции обработки внешнего прерывания? Вобщем проблема следующая. Есть импульс 10мкС. По фронту он должен проснутся и успеть считать с ножки(на которой произошло прерывание) лог уровень(для определения фронта, тк детектора фронта у параллельного контроллера нет, а irq0,1 заняты)
|
|
|
|
|
Oct 23 2007, 12:46
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

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

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165

|
Цитата(alexander55 @ Oct 23 2007, 16:46)  С цифрой могу ошибиться, но думаю, 3-10 мС. Это реальнее. Очень жаль
|
|
|
|
|
Oct 24 2007, 06:32
|
Участник

Группа: Свой
Сообщений: 45
Регистрация: 19-04-07
Пользователь №: 27 172

|
Цитата(alexsl @ Oct 23 2007, 18:09)  Вобщем проблема следующая. Есть импульс 10мкС. По фронту он должен проснутся и успеть считать с ножки(на которой произошло прерывание) лог уровень(для определения фронта, тк детектора фронта у параллельного контроллера нет, а irq0,1 заняты) То, что пины IRQ заняты - не проблема, можно использовать любой пин для прерывания по уровню или по фронту. Но, если контроллер в спячке, то не только PLL, но и кварц (если на Xin кварц, а не внешний генератор) не запустятся за требуемые 10 мкс. И более того, в спячке прерывание по изменению уровня не сработает тоже. То есть для этого контроллера в спячке такую задачу не решить. Можно использовать какую-нибудь внешнюю логику, но что именно - надо знать задачу поконкретнее. Например, можно поставить внешний генератор и делитель, по приходу одного фронта импульса запоминать значение делителя в одном регистре, по приходу второго фронта - в другом регистре. Затем просыпается контроллер и читает состояния обоих регистров.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|