|
Странно работает прерывание при совпадении таймера! |
|
|
|
Nov 17 2008, 10:26
|

Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098

|
Всем привет! Ситуация такая: МК должен прибавлять фиксированную задержку к импульсу, 8 - аппаратных и 8 - программных. Почему-то получаются 3 вида задержки 1 нормальная, 2 - нормальная минус дельта t, 3 - 0-я + та де дельта t, t меньше самой задержки. Ни как не могу понять почему! Спасибо, если поможете!
Сообщение отредактировал _Олег_ - Nov 17 2008, 11:04
|
|
|
|
|
 |
Ответов
|
Nov 21 2008, 13:45
|

Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098

|
Еще раз всем привет! Хочу спросить у экспертов: вот отладил программу, но ни как не могу избавиться от неточности таймера, она конечно маленькая но плавающая +- 140 нс получилась. Работает так: приходит фронт импульса, запускается таймер и отсчитывает 4 мкс, потом выставляется этот же фронт на выходе. Так вот , таймер плавает +- 140 нс. Посмотрите пожалуйста код, возможно от этого избавиться? Спасибо. вот
Прикрепленные файлы
v0.1.zip ( 50.27 килобайт )
Кол-во скачиваний: 27
|
|
|
|
|
Nov 21 2008, 16:21
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(_Олег_ @ Nov 21 2008, 13:45)  Хочу спросить у экспертов: никак не могу избавиться от неточности таймера, она конечно маленькая но плавающая +- 140 нс получилась Это как раз 0, 1 или 2 такта вашего проца. Прерывание ждёт завершения очередной команды, отсюда получается такая неравномерность, так называемый джиттер прерывания. Избежать до конца не удастся, но можно сгладить, например, непосредственно перед прерыванием ползёте по цепочке нопов (однотактных команд в общем случае), задержка будет одинаковая.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 24 2008, 06:39
|

Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098

|
Цитата(=GM= @ Nov 21 2008, 19:21)  Это как раз 0, 1 или 2 такта вашего проца. Прерывание ждёт завершения очередной команды, отсюда получается такая неравномерность, так называемый джиттер прерывания. Избежать до конца не удастся, но можно сгладить, например, непосредственно перед прерыванием ползёте по цепочке нопов (однотактных команд в общем случае), задержка будет одинаковая. Спасибо, буду пробовать, значит все команды в основном цикле нужно сделать однотактными. Вот попробовал только однотактные команды, все равно джиттер 2 такта.
Сообщение отредактировал _Олег_ - Nov 24 2008, 06:45
Прикрепленные файлы
v0.1b.zip ( 48.06 килобайт )
Кол-во скачиваний: 21
|
|
|
|
Сообщений в этой теме
_Олег_ Странно работает прерывание при совпадении таймера! Nov 17 2008, 10:26 GDI Ниччо не понятно , ни в ваших словах, ни в ващем к... Nov 17 2008, 12:18 _Олег_ можете посмотреть это, что бы понять принцип, но т... Nov 17 2008, 12:40 GDI Протеуса нету, описывайте словами. Хорошо заданный... Nov 17 2008, 12:52 _Олег_ Цитата(GDI @ Nov 17 2008, 15:52) Протеуса... Nov 17 2008, 13:15 _Олег_ Нет, проблема не в этом. Меня еще смущает то что и... Nov 17 2008, 14:17 _Олег_ Спасибо за ответы и просмотры. Решение найдено, по... Nov 18 2008, 05:35 VladimirYU Цитата(_Олег_ @ Nov 18 2008, 08:35) Спаси... Nov 18 2008, 06:14  _Олег_ Цитата(VladimirYU @ Nov 18 2008, 09:14) В... Nov 18 2008, 07:47  aesok Цитата(=GM= @ Nov 21 2008, 19:21) Это как... Nov 21 2008, 16:31   =GM= Цитата(aesok @ Nov 21 2008, 16:31) А как ... Nov 21 2008, 16:40
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|