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

 
 
> Прерывание на SAM7s, Нужен совет и помошь
en0t
сообщение Mar 12 2008, 10:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 31-01-08
Пользователь №: 34 612



Есть микроконтролер AT91sam7s256
Задача: Получение прямоугольных импульсов от 1 Гц до 200 кГц с возможностью регулирования скважности.

Подскажите как проще сделать это.

Сам склоняюсь к использованию таймеров, но вот как оптимальней настроить и какие именно взять незнаю.

Кто знает подскажите, Зарание С П А С И Б О

Сообщение отредактировал en0t - Mar 12 2008, 10:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
en0t
сообщение Mar 12 2008, 10:32
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 31-01-08
Пользователь №: 34 612



не через ШИМ не получится т. к. в полученом сигнале пауза должна измерятся в микросекундах и соответственно изменятся тоже в них.
Вобшем на выходе должен получится генератор прямоугольных импульсов.

чёто типа вот этого:


http://www.telesys.ru/electronics/projects.php?do=p072

Может кто подскажет и покажет как настроить прерывание по переполнению таймер счётчика с частотой 200 кГц
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 12 2008, 10:36
Сообщение #3


Гуру
******

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



Цитата(en0t @ Mar 12 2008, 13:29) *
не через ШИМ не получится т. к. в полученом сигнале пауза должна измерятся в микросекундах и соответственно изменятся тоже в них.

Не вижу связи между ШИМ'ом и микросекундами, поясните.
Go to the top of the page
 
+Quote Post
en0t
сообщение Mar 12 2008, 10:39
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 31-01-08
Пользователь №: 34 612



Цитата(aaarrr @ Mar 12 2008, 13:36) *
Не вижу связи между ШИМ'ом и микросекундами, поясните.


Не Не Не
ненадо о ШИМ'е я сразу его отмел, а вот о настройке прерывания если можно поподробней раскажите обьясните покажите.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 12 2008, 10:43
Сообщение #5


Гуру
******

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



Цитата(en0t @ Mar 12 2008, 13:39) *
ненадо о ШИМ'е я сразу его отмел

Почему?

Цитата(en0t @ Mar 12 2008, 13:39) *
раскажите обьясните покажите.

smile.gif Да легко. Вот только прерываться с частотой 200KHz не советую, впрочем, хозяин - барин.

Для 48MHz MCK:
Код
void timer0_ini(void)
{
    AT91C_BASE_PMC->PMC_PCER = (0x01 << AT91C_ID_TC0);

    // Wave mode, MCK/8,  UP mode with automatic trigger on RC Compare
    AT91C_BASE_TCB->TCB_TC0.TC_CMR = AT91C_TC_CLKS_TIMER_DIV2_CLOCK | AT91C_TC_WAVESEL_UP_AUTO | AT91C_TC_WAVE;
    AT91C_BASE_TCB->TCB_TC0.TC_RC = 29;
    AT91C_BASE_TCB->TCB_TC0.TC_CCR = AT91C_TC_CLKEN;
    AT91C_BASE_TCB->TCB_TC0.TC_IER = AT91C_TC_CPCS;
    AT91C_BASE_TCB->TCB_TC0.TC_CCR = AT91C_TC_SWTRG;

    AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = 0x07;
    AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (u_int)tc0_irq_handler;
}
Go to the top of the page
 
+Quote Post
en0t
сообщение Mar 12 2008, 10:54
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 31-01-08
Пользователь №: 34 612



насчёт шима всё просто , процесор должен выдавать несколько таких частот притом разных (от 3 до 12)
вот я и подумал что проше всего использовать преполнение по т/c , вообшё планируется ипользование частот не более 10кГц , но для того чтобы чтото можно было регулировать на таких частотак длину паузы решил что для этого 200 кГц вполне должно хватить.

Скорей всего я выбрал путь не совсем правельный так что хотел услышать мнение профи как лутше это организоватью
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 12 2008, 11:00
Сообщение #7


Гуру
******

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



Цитата(en0t @ Mar 12 2008, 13:54) *
насчёт шима всё просто , процесор должен выдавать несколько таких частот притом разных (от 3 до 12)
вот я и подумал что проше всего использовать преполнение по т/c , вообшё планируется ипользование частот не более 10кГц , но для того чтобы чтото можно было регулировать на таких частотак длину паузы решил что для этого 200 кГц вполне должно хватить.

Скорей всего я выбрал путь не совсем правельный так что хотел услышать мнение профи как лутше это организоватью

Понятно. Беда в том, что время между двумя прерываниями на 200КГц составит всего 48000000/200000=240 тактов процессора, что очень мало.

Учитывая "ногодрыгательную специфику" задачи, я бы вообще не стал использовать для ее решения ARM. AVR или мелкая логика будут смотреться куда как гармоничнее.
Go to the top of the page
 
+Quote Post



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

 


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


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