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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Странности таймеров в STR912
artur_off
сообщение Feb 17 2010, 18:10
Сообщение #16


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

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



Цитата(koyodza @ Feb 17 2010, 18:29) *
Ваше предположение не вполне верно. Дело в том, что частота в "нормальном" режиме и в "обработчике прерывания" разная, она и правда меняется в разы. Но частота ведь всё время меняется, и на выходе таймера вы видите уже проинтегрированное значение. smile3046.gif

К слову, не PCLKDIV, а RCLKDIV rolleyes.gif

------------
Хм, посмотрел на блок-схему, освежил в памяти... Чего-то оно не очень освежилось...
Всё равно проверьте ещё раз насчёт настроек RCLKDIV и Special Interrupt Mode, если меня не подводит память - там какая-то засада была именно с таймерами, из-за чего я сразу отказался от использования этого режима


Да вроде как наладилось. Отказался от библиотек ST.

Измерил частоту ШИМ с помощью осца. Отклонение рассчитанных значений и измеренных составило меньше одного процента и если учитывать, что частота определялась на глаз и осц довольно древний, то с уверенностью можно сказать, что после отказа от библиотек ST таймеры затикали нормально.
За Special Interrupt mode спасибо. Буду иметь ввиду   smile.gif  .

Сообщение отредактировал artur_off - Feb 17 2010, 18:28


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post
koyodza
сообщение Feb 18 2010, 14:53
Сообщение #17


Местный
***

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



Цитата(artur_off @ Feb 17 2010, 20:10) *
Да вроде как наладилось. Отказался от библиотек ST.

Вот так и рождаются нездоровые сенсации...
А разобраться в чём дело значит не захотели. Библиотеки-то со всеми исходниками, можно ведь посмотреть и определить, кто и где был неправ
Go to the top of the page
 
+Quote Post
artur_off
сообщение Feb 18 2010, 16:20
Сообщение #18


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

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



Цитата(koyodza @ Feb 18 2010, 16:53) *
Вот так и рождаются нездоровые сенсации...
А разобраться в чём дело значит не захотели. Библиотеки-то со всеми исходниками, можно ведь посмотреть и определить, кто и где был неправ

К сожалению нету времени в них копаться. Может как нибудь на досуге.
Один из примеров. Как только начинал с ним работать, не хотели прерывания генерироваться. Поднял на форуме тему, в одном из сообщений подсказали попробовать объявить обработчик прерывания таким образом __irq void ........ (void) (в библиотеках ST почему-то это дело написано без __irq).

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


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post
Aprox
сообщение Feb 20 2010, 13:30
Сообщение #19


Местный
***

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



Цитата(koyodza @ Feb 18 2010, 17:53) *
Вот так и рождаются нездоровые сенсации...
А разобраться в чём дело значит не захотели. Библиотеки-то со всеми исходниками, можно ведь посмотреть и определить, кто и где был неправ
Я залезал в исходники, ничего криминального не нашел. Более того, залез в реальный кристалл JTAG-отладчиком- смотрел коды в регистрах управления периферией и SCU- все правильно, точно по мануалу. Смотрел и бит в SCU, отвечающий за Special Interrupt Mode- этот бит стоит в нуле. А таймеры и скорость UART-ов все равно отличаются от ожидаемого на пару процентов.
Go to the top of the page
 
+Quote Post
artur_off
сообщение Feb 20 2010, 15:32
Сообщение #20


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

Группа: Свой
Сообщений: 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
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 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
Сообщение #23


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

Группа: Свой
Сообщений: 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
Aprox
сообщение Feb 27 2010, 07:57
Сообщение #24


Местный
***

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



Цитата(artur_off @ Feb 26 2010, 09:19) *
Поделитесь новой библиотекой)))
Она в свободном доступе на сайте STM по разделу support.
Уже кое-что попробовал. Действительно, обработчик прерываний в новой библиотеке стал работать предсказуемо за счет отказа от nested и правильного обновления приритетов при каскадировании VIC1 и VIC0. Понадобилось 2 года (с 2007 по 2009), чтобы устранить ошибки в ST библиотеке.

Что же касается ошибки в 2% при установке длительности периода PWM на таймерах, то я обнаружил причину. Она из серии хреновых мануалов. Оказывается, чтобы поделить PCLK на пределителе таймера в N раз, нужно грузить в пределитель число N-1. В разделе мануала, где даются формулы расчета периода PWM, ничего про это не говорится! И в руководстве библиотеки ST тоже молчок. А узнаешь про -1 только в разделе "описание регистров TIMx". Hо идеального совпадения периода PWM с расчетным все равно не получилось после исправления оплошности с N-1 пределителя. Завышение частоты составило в 5-ом знаке по отношению к частоте задающего кварца. Если при расчете значения OCR2 вычитать не -5, как в мануале, а -4, то совпадение получаем идеальным.

Что касается неточной установки скорости UART-ов, то этот момент еще с новой библиотекой не проверялся.
Go to the top of the page
 
+Quote Post
artur_off
сообщение Feb 27 2010, 13:20
Сообщение #25


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

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



Цитата(Aprox @ Feb 27 2010, 09:57) *
 Завышение частоты составило в 5-ом знаке по отношению к частоте задающего кварца. Если при расчете значения OCR2 вычитать не -5, как в мануале, а -4, то совпадение получаем идеальным.
Ну так правильно, надо вычитать -4. Ведь при сбросе, значение счетного регистра устанавливается в значение 0xFFFC.

Если честно, не нашел библиотеки.

Сообщение отредактировал artur_off - Feb 27 2010, 13:36


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post
Aprox
сообщение Feb 27 2010, 15:32
Сообщение #26


Местный
***

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



Цитата(artur_off @ Feb 27 2010, 16:20) *
Ну так правильно, надо вычитать -4. Ведь при сбросе, значение счетного регистра устанавливается в значение 0xFFFC.
А фирменном мануале написано -5.
Цитата
Если честно, не нашел библиотеки.
Ловите
Прикрепленный файл  new_91x_lib.zip ( 450.73 килобайт ) Кол-во скачиваний: 150
Go to the top of the page
 
+Quote Post
artur_off
сообщение Feb 27 2010, 16:15
Сообщение #27


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

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



 
Цитата(Aprox @ Feb 27 2010, 17:32) *
Ловите
Прикрепленный файл  new_91x_lib.zip ( 450.73 килобайт ) Кол-во скачиваний: 150


Благодарствую.


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

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

 


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


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