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

 
 
> как работает TC на at91rm9200, прерывание не сбрасывается
boryx
сообщение May 25 2006, 06:55
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 25-05-06
Пользователь №: 17 428



столкнулся с проблемой.

конфигурю регистры для любого таймера скажем для TC5

at91_tc5_write(AT91_TC_CCR, AT91_TC_CLKEN);//enable timer
at91_tc5_write(AT91_TC_CMR,
AT91_TC_TIMER_CLOCK5| //slow clock ~32kHz
AT91_TC_WAVE| //wave mode
AT91_TC_WAVESEL_UP_AUTO); //triger on RC

at91_tc5_write(AT91_TC_RC, 0x1000);
at91_tc5_write(AT91_TC_CCR, AT91_TC_SWTRG); //restart timer
at91_tc5_write(AT91_TC_IER, AT91_TC_CPCS);//enable interrupt

теперь по даташиту счетчик должен считать, и когда дойдет до 0х1000 должно сработать прерывание.

на практике прекращается загрузка сисетмы и прерыване запускается все время, захватывая все ресурсы
я так понимаю, что флажок не сбрасывается. Или я что-то не так делаю???

какие будут соображения
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение May 25 2006, 07:26
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



А вы правильно настроили AIC?
B что-нибудь подобное использовали?
Код
//clear interrupt flag
AT91F_PITGetPIVR(AT91C_BASE_PITC);
//end of intterupt
AT91C_BASE_AIC->AIC_EOICR = 0;


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
boryx
сообщение May 25 2006, 10:05
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 25-05-06
Пользователь №: 17 428



Цитата(beer_warrior @ May 25 2006, 10:26) *
А вы правильно настроили AIC?
B что-нибудь подобное использовали?
Код
//clear interrupt flag
AT91F_PITGetPIVR(AT91C_BASE_PITC);
//end of intterupt
AT91C_BASE_AIC->AIC_EOICR = 0;


Да с этим вроде как все впорядке.
на at91rm9200 стоит LINUX.

при инициализации драйвера
request_irq(AT91_ID_TC5, ...)

до того момента, как я энаблю прерывание на соответствие с RC (да или любого другоа) все в порядке.
а как включаю прерывание, оно срабатывает сного и сного без перерыва.

Таимер я использую для своих нужд и ножки не энаблю в PIO.

мне нужно, чтобы через определенные промежутки времени срабатывала функцияю

Сейчас использую Линуксовский таймер, но промежутки получаются слишком большие.

в проце 6 таймеров а я linux загружаю лишней работой...

кто может привести рабочий пример как с таймером работать, какие команды в каком порядке запускать.

писал дрова для SPI,SSC и такой проблемы не возникало.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 03:59
Рейтинг@Mail.ru


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