|
Временные интервалы |
|
|
|
Jun 21 2010, 08:55
|
Группа: Участник
Сообщений: 14
Регистрация: 28-05-10
Пользователь №: 57 586

|
Я задействовал таймер1, прерывание по переполнению. Таймер служит для подсчета тиков ну и вычисления системного времени. Внешний кварц на 20 Мгц. Можно ли оптимизировать вычисления. CODE #include <avr\io.h> #include <avr\interrupt.h>
uint32_t ulSystemTime = 0; uint32_t ulTmp;
void SistemTimerInit(){ TCCR1A = 0; TIMSK |= (1<<TOIE1); TCCR1B |= (1<<CS10); }
uint32_t GetSystemTimeMS(){ cli();
ulTmp = (ulSystemTime<<16) + TCNT1; sei();
return (ulTmp); }
SIGNAL(SIG_OVERFLOW1) { cli();
ulSystemTime++;
sei(); }
|
|
|
|
|
 |
Ответов
|
Jun 25 2010, 09:12
|

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

|
Цитата(MrYuran @ Jun 25 2010, 05:07)  -В общем, если отбросить чисто академические изыски, не имеющие практического значения, нужно поставить снаружи ЦПЛД за 30р и упаковать туда 8-канальный таймер-счётчик. -Либо применить готовые программируемые интервальные таймеры -Либо заменить контроллер на более подходящий для таких целей На самом деле в CPLD нужно ставить шестнадцать 24-битных счётчиков ПЛЮС 16 регистров хранения длительностей полупериодов ПЛЮС схема управления ПЛЮС интерфейс связи с МК...придётся осетра за 30 рубчиков урезать :-). Ещё вариант - поставить четыре 8-ногие тиньки, у которых есть два аппаратных ШИМА...Но можно и чисто программно, те же 6-ногие АТмега10 подойдут. У меня получается где-то 18 тактов на обработку одного канала, т.е. для софтового генератора джиттер не превосходит 1 мкс/канал.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
Сообщений в этой теме
Andruxa-1 Временные интервалы Jun 21 2010, 08:55 Палыч По какому критерию Вы бы хотели провести оптимизац... Jun 21 2010, 09:56 Andruxa-1 этот кусок занимает 22 команды в дизасме ulTmp = (... Jun 21 2010, 10:22  MrYuran Цитата(Andruxa-1 @ Jun 21 2010, 14:2... Jun 21 2010, 10:28   Andruxa-1 Цитата(MrYuran @ Jun 21 2010, 13:28) ... Jun 21 2010, 10:32    MrYuran Цитата(Andruxa-1 @ Jun 21 2010, 14:3... Jun 21 2010, 10:55  Палыч Цитата(Andruxa-1 @ Jun 21 2010, 14:2... Jun 21 2010, 10:52  Палыч Цитата(Andruxa-1 @ Jun 21 2010, 14:2... Jun 21 2010, 11:07   Andruxa-1 Многоканальный генератор электрических импульсов п... Jun 21 2010, 11:41    MrYuran Цитата(Andruxa-1 @ Jun 21 2010, 15:4... Jun 21 2010, 11:47     Andruxa-1 Цитата(MrYuran @ Jun 21 2010, 14:47) Посч... Jun 21 2010, 12:00      MrYuran Цитата(Andruxa-1 @ Jun 21 2010, 16:0... Jun 21 2010, 12:19    Andruxa-1 ATMega8 Jun 21 2010, 12:36     Палыч Цитата(Andruxa-1 @ Jun 21 2010, 16:3... Jun 21 2010, 12:51      MrYuran Цитата(Палыч @ Jun 21 2010, 16:51) Восемь... Jun 21 2010, 15:23  =GM= Можно вот так оптимизировать Кодtt=GetSystemTimeMS... Jun 21 2010, 15:26   Andruxa-1 Цитата(=GM= @ Jun 21 2010, 18:26) Можно в... Jun 22 2010, 10:02    Палыч Цитата(Andruxa-1 @ Jun 22 2010, 14:0... Jun 22 2010, 11:00     =GM= Совершенно верно.
Андрукса, какой у вас джиттер п... Jun 22 2010, 11:26      Andruxa-1 Цитата(=GM= @ Jun 22 2010, 14:26) Соверше... Jun 22 2010, 12:32       demiurg_spb Цитата(Andruxa-1 @ Jun 22 2010, 16:3... Jun 22 2010, 12:33       =GM= Цитата(Andruxa-1 @ Jun 22 2010, 11:3... Jun 22 2010, 12:58        Andruxa-1 Цитата(=GM= @ Jun 22 2010, 15:58) Похоже,... Jun 22 2010, 13:13         =GM= Сути чего? Jun 22 2010, 13:32          Andruxa-1 Цитата(=GM= @ Jun 22 2010, 16:32) Сути че... Jun 22 2010, 13:35           =GM= Ну, при программном подходе джиттер будет всегда, ... Jun 22 2010, 15:24 xemul Завести таймер на 5 мкс, в его прерывании делать т... Jun 22 2010, 16:18 singlskv Цитата(xemul @ Jun 22 2010, 20:18) uint24... Jun 23 2010, 18:26 =GM= Цитата(xemul @ Jun 22 2010, 15:18) Завест... Jun 24 2010, 22:35  xemul Цитата(=GM= @ Jun 25 2010, 02:35) Тогда у... Jun 25 2010, 10:07   =GM= Из поста #26.
1) Ну смотрите, объясняю конструкци... Jun 25 2010, 11:30    xemul Цитата(=GM= @ Jun 25 2010, 15:30) Из пост... Jun 25 2010, 12:46     =GM= Немного повергло в шок, как компилятор WinAVR тран... Jun 25 2010, 15:56      xemul Цитата(=GM= @ Jun 25 2010, 19:56) Но по з... Jun 25 2010, 16:26       =GM= А зачем орить? После std сразу brne ... Но это не ... Jun 25 2010, 21:05       =GM= Вот, немного переделал алгоритм
if(sysTime>end... Jun 28 2010, 12:12      demiurg_spb Цитата(=GM= @ Jun 25 2010, 19:56) Немного... Jun 28 2010, 17:14       =GM= Цитата(demiurg_spb @ Jun 28 2010, 16:14) ... Jun 28 2010, 22:08        demiurg_spb Цитата(=GM= @ Jun 29 2010, 02:08) Где ж н... Jun 29 2010, 11:48         =GM= Това-а-рищ Иванов, не надо настаивать на глупости ... Jun 29 2010, 12:13          demiurg_spb Для волатильных объектов компилятор фактически не ... Jul 1 2010, 10:07 Andruxa-1 Спасибо за ответы и подсказки, буду пробовать. Jun 24 2010, 14:33 singlskv Кстати, задачка на самом деле очень интересная, и ... Jun 24 2010, 21:04 Палыч Цитата(singlskv @ Jun 25 2010, 01:04) Кст... Jun 25 2010, 05:57  singlskv Цитата(Палыч @ Jun 25 2010, 09:57) Вот и ... Jun 25 2010, 07:08   MrYuran Цитата(singlskv @ Jun 25 2010, 11:08) Вид... Jun 25 2010, 07:18    singlskv Цитата(MrYuran @ Jun 25 2010, 11:18) Вы в... Jun 25 2010, 07:24 XVR ЦитатаЕстественно, можно было оптимизировать и не ... Jul 2 2010, 06:22 demiurg_spb Цитата(XVR @ Jul 2 2010, 10:22) Если комп... Jul 2 2010, 12:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|