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

 
 
> генерация 12 шимов
srm
сообщение Jan 9 2010, 18:39
Сообщение #1


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



сейчас переделываю своё устрорйство с atmega32 на at91sam7. с последним контроллером я не знаком и не знаю с какой стороны лучше подойти к следующей задаче. нужно сгенерировать 12 шимов с периодом повторения T = 20мс и длительностью импульса 0.9 .. 2.1 мс. На авре я использовал прерывание от таймера и по нему устанавливал/сбрасывал нужный пин. в результате период повторения был несколько больше 20 мс, но всё работало.

pin0 _--______
pin1 ___--____
pin2 ____--___
..

вобщем на арме скорее всего придётся делать подобным образом, но может есть какой-нибудь более красивый способ..?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jan 9 2010, 19:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(srm @ Jan 9 2010, 21:39) *
вобщем на арме скорее всего придётся делать подобным образом, но может есть какой-нибудь более красивый способ..?

Если взять SAM7A3, то можно и аппаратно устроить 12 каналов. На остальных придется программно. Если не нужна большая разрядность (которую не грех было бы указать сразу) и какие-то особые требования к джиттеру, то способ вполне сойдет за "красивый".
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 9 2010, 19:34
Сообщение #3


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата(aaarrr @ Jan 10 2010, 00:26) *
Если взять SAM7A3, то можно и аппаратно устроить 12 каналов. На остальных придется программно. Если не нужна большая разрядность (которую не грех было бы указать сразу) и какие-то особые требования к джиттеру, то способ вполне сойдет за "красивый".

at91sam7s256. пасиб. есть идейка генерировать не так:

pin0: __--__________--_____
pin1: ____--__________--___
pin2: ______--__________--_

а так:

pin0: __--__________--_____
pin1: __--__________--_____
pin2: __--__________--_____

т.е. устонавливать все пины в один момент, а сбрасывать по мере срабатывания. только есть подозрение, что при одинаковых временах будет сильно глючить из-за отложенных прерываний. так было на авре, на арме, думаю, данный способ может быть прокатит...?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 9 2010, 20:10
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(srm @ Jan 9 2010, 22:34) *
т.е. устонавливать все пины в один момент, а сбрасывать по мере срабатывания. только есть подозрение, что при одинаковых временах будет сильно глючить из-за отложенных прерываний. так было на авре, на арме, думаю, данный способ может быть прокатит...?

Синхронные 12 каналов сделать много проще, естественно. Почему только "одинаковые времена" должны как-то сказываться? Все каналы обрабатываются в одном прерывании, на ARM'е можно задействовать под это дело FIQ для пущей пущести.
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 9 2010, 23:39
Сообщение #5


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата(aaarrr @ Jan 10 2010, 01:10) *
Синхронные 12 каналов сделать много проще, естественно. Почему только "одинаковые времена" должны как-то сказываться? Все каналы обрабатываются в одном прерывании, на ARM'е можно задействовать под это дело FIQ для пущей пущести.


ну.. я не знаю как арм, но авр как-то долго обрабатывает прерывание. на сохранение регистров уходит довольно большое время, что приводит к глюкам.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- srm   генерация 12 шимов   Jan 9 2010, 18:39
|- - aaarrr   Цитата(srm @ Jan 10 2010, 02:39) ну.. я н...   Jan 10 2010, 00:02
- - ReAl   Цитата(srm @ Jan 9 2010, 20:39) нужно сге...   Jan 10 2010, 08:27
|- - srm   Цитата(ReAl @ Jan 10 2010, 13:27) Не совс...   Jan 10 2010, 12:33
|- - ReAl   Цитата(srm @ Jan 10 2010, 14:33) достаточ...   Jan 10 2010, 14:19
- - ukpyr   сервы ? должно хватить одного таймера, импульс...   Jan 10 2010, 13:03
|- - srm   Цитата(ukpyr @ Jan 10 2010, 18:03) сервы ...   Jan 10 2010, 14:22
|- - ReAl   Цитата(srm @ Jan 10 2010, 16:22) угум. се...   Jan 10 2010, 14:52
- - ukpyr   Цитатавот и спрашиваю - может быть есть мегаспособ...   Jan 10 2010, 15:53
- - srm   вот такой вопрос ещё. чтобы сгенерировать шим с за...   Jan 10 2010, 20:29
|- - aaarrr   Цитата(srm @ Jan 10 2010, 23:29) вот тако...   Jan 10 2010, 20:45
|- - srm   Цитата(aaarrr @ Jan 11 2010, 01:45) AT91C...   Jan 10 2010, 20:49
- - aaarrr   Ну, заведите переменную или дефайн, содержащий час...   Jan 10 2010, 20:54
- - adnega   Можно все 20мс разбить на куски по 2.5 мс, генерит...   Jan 11 2010, 14:52
- - koyodza   Возьмите STM32 - там 16 каналов таймеров (4х4) мож...   Jan 14 2010, 16:21
- - skripach   ЦитатаВозьмите STM32 - там 16 каналов таймеров (4х...   Jan 15 2010, 13:57
- - nicks80   используй за ранее подготовленный табличный шим ег...   Feb 24 2010, 13:58


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

 


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


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