|
Подскажите по прерываниям, Как происходит ветвление в случае System Controller Interrupt?? |
|
|
|
Apr 5 2011, 11:44
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
До сих пор в системном контроллере у меня прерывания генерировал только интервальный таймер PIT. Процедура была простой: Код __irq void PIT_int (void) { //Прерывание от интервального таймера (System, переферийный номер 1, стр 35) if (*AIC_ISR1 & (1)) { //Чья здесь стоит единица??????????? Предположительно это Peripheral Id System Controller Strob = 1; //Установка строба для Main //Прерывание обязано читать PIT_PIVR для сброса бита PITS, вызывающего прерывание. *AIC_EOICR1 = *PIT_PIVR1;} //Конец прерывания. В EOICR пишется ЛЮБОЕ значение. else {*AIC_EOICR1 = 0;}} //Если источник прерывания не интервальный таймер: конец прерывания Теперь потребовался Real-time Timer. Но он тоже в System Controller. Я плохо себе представляю - кажется чтение Цитата if (*AIC_ISR1 & (1)) Фильтрует прерывание от System Controller (единица это его Peripheral Id). Но в самом системном контроллере теперь два прерывания. Как произвести дальнейшее ветвление??
Сообщение отредактировал Димон Безпарольный - Apr 5 2011, 11:46
|
|
|
|
|
 |
Ответов
|
Apr 5 2011, 12:53
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(aaarrr @ Apr 5 2011, 14:48)  Вручную проверить возможные источники, только так.
Проверять AIC_ISR не нужно, тем более столь экстравагантным способом.
Если хотите использовать RTT, то нужно учесть, что его линия прерывания сбрасывается не сразу, а через 2 цикла SCLK. Т.е. будете терять 60us впустую. AIC_ISR я проверяю способом из примера. Если не трудно, подскажите что в нем экстравагантного? Если не проверять AIC_ISR, то каким способом можно осуществить ветвление? Т.е. вопрос - то и был в том, как проверять источники таких прерываний?
Сообщение отредактировал Димон Безпарольный - Apr 5 2011, 12:54
|
|
|
|
|
Apr 5 2011, 12:58
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Димон Безпарольный @ Apr 5 2011, 16:53)  AIC_ISR я проверяю способом из примера. Если не трудно, подскажите что в нем экстравагантного? Откуда пример? Вообще-то ISR содержит ID текущего прерывания, а не битовую маску, отсюда и экстравагантность (=неправильность) проверки. Цитата(Димон Безпарольный @ Apr 5 2011, 16:53)  Если не проверять AIC_ISR, то каким способом можно осуществить ветвление? Т.е. вопрос - то и был в том, как проверять источники таких прерываний? Читать статусы задействованной периферии.
|
|
|
|
|
Apr 5 2011, 13:32
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(aaarrr @ Apr 5 2011, 15:58)  Читать статусы задействованной периферии. Понятно. Применительно к данному случаю это бит PITS из PIT_SR и бит RTTINC из RTT_SR. Спасибо. Цитата(aaarrr @ Apr 5 2011, 14:48)  Если хотите использовать RTT, то нужно учесть, что его линия прерывания сбрасывается не сразу, а через 2 цикла SCLK. Т.е. будете терять 60us впустую. Странно, почему я должен терять это время, если контроллер прерываний запрограммирован на передний фронт? Цитата because the status register is cleared two Slow Clock cycles after read.
|
|
|
|
Сообщений в этой теме
Димон Безпарольный Подскажите по прерываниям Apr 5 2011, 11:44    aaarrr Цитата(Димон Безпарольный @ Apr 5 2011, 17... Apr 5 2011, 13:51     Димон Безпарольный Цитата(aaarrr @ Apr 5 2011, 16:51) Увы, т... Apr 5 2011, 13:54  sasamy Цитата(Димон Безпарольный @ Apr 5 2011, 16... Apr 5 2011, 17:40   DmitryM [quote name='sasamy' date='Apr 5 2011,... Apr 5 2011, 17:56    sasamy Цитата(DmitryM @ Apr 5 2011, 21:56) З.Ы. ... Apr 5 2011, 18:04     aaarrr Цитата(sasamy @ Apr 5 2011, 22:04) Пример... Apr 5 2011, 18:17      sasamy Цитата(aaarrr @ Apr 5 2011, 22:17) Ладно,... Apr 5 2011, 18:20     DmitryM Цитата(sasamy @ Apr 5 2011, 22:04) Пример... Apr 5 2011, 20:14      sasamy Цитата(DmitryM @ Apr 6 2011, 00:14) З.Ы.
... Apr 6 2011, 00:34 aaarrr Вы рискуете вообще потерять прерывания от System C... Apr 5 2011, 13:58 Димон Безпарольный Цитата(aaarrr @ Apr 5 2011, 16:58) Вы рис... Apr 6 2011, 06:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|