GenaSPB 11 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба Начал я использовать AT91SAM7S32 - получил, при исполнении программы "ножкодрыгательства" из SRAM при тактовой частоте 48 МГц минимальное время между переключениями состояния вывода около 53 наносекунд. Нормально ли это? дело в том, что не смотря на упоминание в даташите того факта, что умножитель PLL записанный в соответствующий регистор используется увеличенный на единицу, 90% всех увиденных мною примеров в Интернете игнорируют это. Соответственно, у меня вопрос - кто-нибудь проверял, как оно на самом деле? Проект (использовал yagarto, слегка доработал crt.s и скрипты линкера для поддержки ramfunc и инициализированных переменных) в аттачменте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба Начал я использовать AT91SAM7S32 - получил, при исполнении программы "ножкодрыгательства" из SRAM при тактовой частоте 48 МГц минимальное время между переключениями состояния вывода около 53 наносекунд. Нормально ли это? Это слишком быстро. Минимальное время переключения - 3 такта MCLK, или 62.5нс. Для проверки правильности установки PLL лучше использовать программируемый выход. дело в том, что не смотря на упоминание в даташите того факта, что умножитель PLL записанный в соответствующий регистор используется увеличенный на единицу, 90% всех увиденных мною примеров в Интернете игнорируют это. Соответственно, у меня вопрос - кто-нибудь проверял, как оно на самом деле? В действительности все соответствует даташиту. Примеры лучше брать у Атмела (тоже дрянь, но хотя бы без диких ляпов). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 25 марта, 2009 Опубликовано 25 марта, 2009 (изменено) · Жалоба Это слишком быстро. Минимальное время переключения - 3 такта MCLK, или 62.5нс. Для проверки правильности установки PLL лучше использовать программируемый выход. В действительности все соответствует даташиту. Примеры лучше брать у Атмела (тоже дрянь, но хотя бы без диких ляпов). Про три такта - это где написано? Из чего это время складывается? Не, про такты и время на инструкции я понимаю. Может, работа через set/reset на середине такта на выводы попадает? Я, в общем-то, тоже ожидал увидеть что-то, кратное тактовой частоте с периодом примерно 21 наносекунда. А у меня получилось 2.5 такта... Я делал так: // пример функции, для скорости помещаемой в SRAM void RAMFUNC_NONILINE fast_clock_test(void) { for (;;) { AT91C_BASE_PIOA->PIO_CODR = mask; AT91C_BASE_PIOA->PIO_SODR = mask; } } Вот в "короткой" части этого цикла (между сбросом и установкой бита) осцилограф TDS-1012 показывает около 52 наносекунд. Изменено 25 марта, 2009 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба Про три такта - это где написано? Из чего это время складывается? Не, про такты и время на инструкции я понимаю. Может, работа через set/reset на середине такта на выводы попадает? Прямым текстом нигде не написано. Команда STR занимает 2 такта + дополнительный такт при доступе через APB. Но я измерял скорость выполнения кода, а не времена между переключениями пина. Попробуйте в одном цикле последовательно выполнить несколько операций set/reset, посмотрите скважность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба Интересно! Первый нулевой импульс имеет около 80 нан в нуле. Остальные в последовательности формирубт строгий меандр с периодом около 125 наносекунд - тоесть, по те самые 62 наносекунды. Короче, теперь я уверен, что тактовая точно 48 мегагерц! Пока впечетления самые приятные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба Короче, теперь я уверен, что тактовая точно 48 мегагерц! Рад за Вас, хотя лучше проверять частоту на выводах PCKx. А то вдруг я соврал? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба Рад за Вас, хотя лучше проверять частоту на выводах PCKx. А то вдруг я соврал? :) Я еще не научился программировать таймеры... да, внмательно просмотрел тот пример от атмела, в котором программируется генератор на 96-с-копейками для работы с USB при использовании кварца на 18.4312 - там как рвз учитывается, что писать в регистр умножителя pll надо уменьшенное число - оно просто используется, 72, без комментария, что в расчетах будет 73... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 марта, 2009 Опубликовано 25 марта, 2009 · Жалоба PCK - это не выход таймера, а просто вывод системного клока на пин через прескалер. Удобно, только прескалер кривой немного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 26 марта, 2009 Опубликовано 26 марта, 2009 (изменено) · Жалоба PCK - это не выход таймера, а просто вывод системного клока на пин через прескалер. Удобно, только прескалер кривой немного. Проверил - всё точно, не ошибся я с программированием pll. Спасибо большое за подсказки. зы: что-то не удается фотографию тестовой платы приатачить. Експлорер уходит в себя, иногда bad gateway пишет. Изменено 26 марта, 2009 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 26 марта, 2009 Опубликовано 26 марта, 2009 · Жалоба Я еще не научился программировать таймеры... да, внмательно просмотрел тот пример от атмела, в котором программируется генератор на 96-с-копейками для работы с USB при использовании кварца на 18.4312 - там как рвз учитывается, что писать в регистр умножителя pll надо уменьшенное число - оно просто используется, 72, без комментария, что в расчетах будет 73... Общеизвестная ошибка в примерах. (18432/14*73)/2=48054857 а не 47923200. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться