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

 
 
> Странности таймеров в STR912
artur_off
сообщение Jan 18 2010, 16:01
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 24-05-08
Из: Odessa
Пользователь №: 37 784



Наткнулся на одну неприятную особенность таймеров STR912.

Таймеры тактируются от PCLK. Частота PCLK 48 МГц. Надо организовать прерывание таймера через 1мкс. Значения регистра совпадения и предделителя рассчитаны правильно, но прерывание возникает с периодом больше чем 1 мкс.

В поисках по форуму, наткнулся на пост уважаемого AlexandrY:

Цитата
Кстати, обнаружил, что програмный такт у STR в 1.4 раза длинее чем у LPC при выполнении из RAM.
Т.е. если симулятор для LPC покажет 60 000 000 тактов при выполнении процедуры, а потом измерить это время при выполнении на мекете с частотой ядра 60 Мгц то получим ровно 1 сек. Для STR91 получим 1.4 сек при выполнении из области DTCM RAM, а из области мапированной на AHB RAM еще длинее.


Но так как таймеры тактируются от сигнала PCLK да и сказанно там про программный такт, то как по мне частота тикания таймера от сказанного в цитате не зависит.

Тогда вопрос, изза чего таймер тикает медленее?

Попытка подключить источник тактового сигнала Fmstr вместо PCLK не увенчалась успехом.

Сообщение отредактировал artur_off - Jan 18 2010, 16:04


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
artur_off
сообщение Feb 10 2010, 18:59
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 24-05-08
Из: Odessa
Пользователь №: 37 784



Думаю, что эту тему надо перенести в раздел для начинающих ))


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post
Aprox
сообщение Feb 11 2010, 07:53
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(artur_off @ Feb 10 2010, 21:59) *
Думаю, что эту тему надо перенести в раздел для начинающих ))
Не спешите. Я тоже столкнулся с проблемой тактирования периферии в STR91xx от внутренней частоты PCLK. Причем два раза для разных устройств- для UART- ов и для таймеров. На таймере запрограммировал PWM, генерирующий меандр с частотой 100 Гц. Получил 100, 5 Гц. Задающий кварц 25МГц- идеальный, проверял. Пришлось тупо корректировать загрузку кэпчур-регистра, чтобы убрать ошибку частоты в 0,5%. С UART получилась похожая история- при загрузке генератора скорости стандартными значениями из мануала, фактическая скорость следования битов оказалась на 2% ниже требуемой. Только на 57600 оказалась точной, а для других- всегда с занижением. Чем это объяснить- нет никаких мыслей. Пришлось также тупо корректировать загрузки генератора скорости, чтобы получить стандартные частоты. Проблема так и осталась нерешенной. Боюсь выплывет какой-нибудь неприятностью чуть позже.
Go to the top of the page
 
+Quote Post
artur_off
сообщение Feb 20 2010, 15:32
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 24-05-08
Из: Odessa
Пользователь №: 37 784



Цитата(Aprox @ Feb 11 2010, 09:53) *
Не спешите. Я тоже столкнулся с проблемой тактирования периферии в STR91xx от внутренней частоты PCLK. Причем два раза для разных устройств- для UART- ов и для таймеров. На таймере запрограммировал PWM, генерирующий меандр с частотой 100 Гц. Получил 100, 5 Гц. Задающий кварц 25МГц- идеальный, проверял. Пришлось тупо корректировать загрузку кэпчур-регистра, чтобы убрать ошибку частоты в 0,5%. С UART получилась похожая история- при загрузке генератора скорости стандартными значениями из мануала, фактическая скорость следования битов оказалась на 2% ниже требуемой. Только на 57600 оказалась точной, а для других- всегда с занижением. Чем это объяснить- нет никаких мыслей. Пришлось также тупо корректировать загрузки генератора скорости, чтобы получить стандартные частоты. Проблема так и осталась нерешенной. Боюсь выплывет какой-нибудь неприятностью чуть позже.


Если вы говорите, что в UART скорость была на 2% ниже, то попробуйте в целях эксперимента немного повысить частоту PLL, AlexandrY говорил, что розганял STR912 до 133 MHz. (Попробовал бы у себя, но у меня UART тикает вроде нормально). Запишите значения например N=202, M=26, P=2(данные значения для кварца 25MHz) (частота PLL примерно 97.115MHz) и посмотрите, какая получается скорость передачи в UART. Если вдруг процессор не запустится, то лечится следующим образом, выпаиваете кварц и на его место запаиваете кварц на меньшую частоту, скажем 12 MHz, стираете прошивку и запаиваете старый.


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post
koyodza
сообщение Feb 24 2010, 19:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Как обычно всё смешалось в одну кучу:
Цитата(artur_off @ Jan 19 2010, 14:45) *
Ради интереса выставил сделал счетчик, который каждую секунду должен зажигать светодиод.
Но период не 1 сек, а примерно 1,3-1,5.

Цитата(artur_off @ Feb 20 2010, 17:32) *
... в UART скорость была на 2% ниже ...


Это, как говорится, две большие разницы: в случае с уартом налицо проблема неправильной настройки делителей. В STR91 (как и во многих других МК уровнем чуть повыше 51 и АВР) делитель частоты уарта может иметь некое подобие дробного коэффициента, там используется Fractional baud rate generation. Многие противники использования библиотек от ST просто игнорируют этот момент, и получают свои % отличия.
В случае же с таймерами, описанным Вами в начале, отличие составляет десятки %. Чем оно может быть вызвано - одну из версий я уже выдвигал. Возможно, причина в чём-то другом, но однозначно это не их проблема, а Ваша. Ещё раз повторю: я реализовывал проект на данном МК, в котором недопустимо было отличие даже в сотые доли %, всё прекрасно работает.
Go to the top of the page
 
+Quote Post
Aprox
сообщение Feb 25 2010, 20:52
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(koyodza @ Feb 24 2010, 22:37) *
.... в случае с уартом налицо проблема неправильной настройки делителей. В STR91 (как и во многих других МК уровнем чуть повыше 51 и АВР) делитель частоты уарта может иметь некое подобие дробного коэффициента, там используется Fractional baud rate generation. Многие противники использования библиотек от ST просто игнорируют этот момент, и получают свои % отличия.
В случае же с таймерами, описанным Вами в начале, отличие составляет десятки %. Чем оно может быть вызвано - одну из версий я уже выдвигал. Возможно, причина в чём-то другом, но однозначно это не их проблема, а Ваша. Ещё раз повторю: я реализовывал проект на данном МК, в котором недопустимо было отличие даже в сотые доли %, всё прекрасно работает.
У меня с UART была и другая проблема- он изредка двоил символами на прием в присутствии прерываний таймера. Полез на ST форум и обнаружил, что у многих такое наблюдается. Тогда полез в исходники ST библиотеки и обнаружил ошибку в IRQ-обработчике. Там было реализовано nested прерывания без обновления приоритета VIC1. Тогда полез в support от ST и нашел новую версию ST-библиотеки от 2009 года. В этой новой библиотеке уже нет ошибки пв прерываниях. Надеюсь, установку скорости UART и счет таймеров( или PLL?) тоже подправили. Теперь буду пробовать новую версию библиотеки. О результатах вскорости доложу.

Что же касается отличий в 2% от заданной скорости UART, то это похоже на ошибку округления до ближайшего целого при расчете fructional divider в старой версии ST библиотеки. Буду испытывать новую версию.
Go to the top of the page
 
+Quote Post
artur_off
сообщение Feb 26 2010, 06:19
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 24-05-08
Из: Odessa
Пользователь №: 37 784



Цитата(Aprox @ Feb 25 2010, 22:52) *
У меня с UART была и другая проблема- он изредка двоил символами на прием в присутствии прерываний таймера. Полез на ST форум и обнаружил, что у многих такое наблюдается. Тогда полез в исходники ST библиотеки и обнаружил ошибку в IRQ-обработчике. Там было реализовано nested прерывания без обновления приоритета VIC1. Тогда полез в support от ST и нашел новую версию ST-библиотеки от 2009 года. В этой новой библиотеке уже нет ошибки пв прерываниях. Надеюсь, установку скорости UART и счет таймеров( или PLL?) тоже подправили. Теперь буду пробовать новую версию библиотеки. О результатах вскорости доложу.

Что же касается отличий в 2% от заданной скорости UART, то это похоже на ошибку округления до ближайшего целого при расчете fructional divider в старой версии ST библиотеки. Буду испытывать новую версию.


Поделитесь новой библиотекой)))


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- artur_off   Странности таймеров в STR912   Jan 18 2010, 16:01
- - scifi   Я бы всё-таки ещё раз проверил, что регистры иници...   Jan 19 2010, 06:33
- - artur_off   То, что таймер считает не с нуля а с 0xFFFC знаю. ...   Jan 19 2010, 12:45
|- - koyodza   Цитата(artur_off @ Jan 19 2010, 14:45) Ра...   Feb 12 2010, 18:32
|- - artur_off   Цитата(koyodza @ Feb 12 2010, 20:32) ...   Feb 12 2010, 21:30
|- - Aprox   Цитата(artur_off @ Feb 13 2010, 00:30) Ка...   Feb 16 2010, 07:22
|- - artur_off   Цитата(Aprox @ Feb 16 2010, 09:22) Кроме ...   Feb 16 2010, 08:40
|- - koyodza   Цитата(Aprox @ Feb 16 2010, 09:22) Кроме ...   Feb 17 2010, 16:29
|- - artur_off   Цитата(koyodza @ Feb 17 2010, 18:29) Ваше...   Feb 17 2010, 18:10
|- - koyodza   Цитата(artur_off @ Feb 17 2010, 20:10) Да...   Feb 18 2010, 14:53
|- - artur_off   Цитата(koyodza @ Feb 18 2010, 16:53) Вот ...   Feb 18 2010, 16:20
|- - Aprox   Цитата(koyodza @ Feb 18 2010, 17:53) Вот ...   Feb 20 2010, 13:30
- - artur_off   Решил не создавать еще одну тему, так как вопрос к...   Feb 9 2010, 12:59
|- - Warlockwolf   Цитата(artur_off @ Feb 9 2010, 15:59) У к...   Feb 9 2010, 18:06
- - artur_off   В Reference manual, на странице 49 есть картинка с...   Feb 9 2010, 18:25
- - Warlockwolf   http://www.st.com/mcu/devicedocs-STR912FAW44-101.h...   Feb 9 2010, 18:50
- - artur_off   Опа. Походу у меня референс мануал старый. Внизу с...   Feb 9 2010, 18:56
- - Aprox   Цитата(artur_off @ Feb 26 2010, 09:19) По...   Feb 27 2010, 07:57
- - artur_off   Цитата(Aprox @ Feb 27 2010, 09:57)  Завыш...   Feb 27 2010, 13:20
- - Aprox   Цитата(artur_off @ Feb 27 2010, 16:20) Ну...   Feb 27 2010, 15:32
- - artur_off    Цитата(Aprox @ Feb 27 2010, 17:32) Ловит...   Feb 27 2010, 16:15


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:10
Рейтинг@Mail.ru


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