реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> минимальное время старта PLL у SAM7s
alexsl
сообщение Oct 22 2007, 10:42
Сообщение #1


Участник
*

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



Добрый день. Хотелось бы узнать минимальное время старта PLL. Вопрос стоит о том как быстро можно начать обрабатывать прерывания. К примеу процессор находится в низко потребляющем режиме. Вся переферия спит, ядро тактируется от 500Гц. Приходит прерывание, необходимо завести PLL, генератор и войти в функцию обработки.
Поделитесь опытом возможно ли получить время порядка 5 мкС с момента прихода прерывания и до входа в обработчик???
Заранее спасибо.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 23 2007, 06:44
Сообщение #2


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



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

Думаю, цифра 5 мкС нереальна. Сам PLL не даст. Для примера, у LPC после разрешения PLL отсчитывается 4096 тактов (если мне не изменяет память), а после этого считается, что можно включать PLL.
У SAM7s, думаю, аналогично (физику пока никто не отменял).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 23 2007, 07:14
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 23 2007, 07:18
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



А зачем PLL отключать ? Может просто отключить ядро от него ? Не так оно много и кушает
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 23 2007, 10:00
Сообщение #5


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(DASM @ Oct 23 2007, 11:18) *
А зачем PLL отключать ? Может просто отключить ядро от него ? Не так оно много и кушает

А разве PLL не выключится при переходе в Sleep режим ?
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 23 2007, 10:14
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Верно sad.gif
Go to the top of the page
 
+Quote Post
alexsl
сообщение Oct 23 2007, 12:09
Сообщение #7


Участник
*

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



Цитата(DASM @ Oct 23 2007, 14:14) *
Верно sad.gif

Спасибо за ответ. Уже понял что цифра не реальная, потыкавшись в атмеловском эксел файле. Может быть посоветуете другой способ быстрого старта из сна(процессор стоит, 32кГц тикает, на ножке Xin висит генератор 16МГц на него и надо переключится)? За какое время процессор доберется до функции обработки внешнего прерывания?
Вобщем проблема следующая. Есть импульс 10мкС. По фронту он должен проснутся и успеть считать с ножки(на которой произошло прерывание) лог уровень(для определения фронта, тк детектора фронта у параллельного контроллера нет, а irq0,1 заняты)
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 23 2007, 12:46
Сообщение #8


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



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

С цифрой могу ошибиться, но думаю, 3-10 мС. Это реальнее.
Go to the top of the page
 
+Quote Post
alexsl
сообщение Oct 23 2007, 13:00
Сообщение #9


Участник
*

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



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

Очень жаль sad.gif
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 23 2007, 13:15
Сообщение #10


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



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

Альтернатива: не спать. smile.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Oct 23 2007, 14:00
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



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


Для определения фронта можно использовать прошлое состояние входов и регистр PIO_ISR.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 23 2007, 21:53
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Так это..... если генератор есть 16 Мгц - то какие проблемы вообще ? Переключаемся на него конечно. PLL пусть пока запускается, а мы работаем.. Если только я с LPC не путаю, каша в голове
Go to the top of the page
 
+Quote Post
Calculator
сообщение Oct 24 2007, 06:32
Сообщение #13


Участник
*

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



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

То, что пины IRQ заняты - не проблема, можно использовать любой пин для прерывания по уровню или по фронту. Но, если контроллер в спячке, то не только PLL, но и кварц (если на Xin кварц, а не внешний генератор) не запустятся за требуемые 10 мкс. И более того, в спячке прерывание по изменению уровня не сработает тоже. То есть для этого контроллера в спячке такую задачу не решить. Можно использовать какую-нибудь внешнюю логику, но что именно - надо знать задачу поконкретнее. Например, можно поставить внешний генератор и делитель, по приходу одного фронта импульса запоминать значение делителя в одном регистре, по приходу второго фронта - в другом регистре. Затем просыпается контроллер и читает состояния обоих регистров.
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 24 2007, 06:56
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



написано - генератор .....
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01491 секунд с 7
ELECTRONIX ©2004-2016