|
Прерывания SAM |
|
|
|
Jun 3 2006, 21:55
|

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

|
Написал прием/передачу по USART по прерываниям. До этого прерывания использовал PIT, на котором базируется системный таймер. Вызова приема/передачи в теле программы нет, присутствует только сама функция прерывания, тем не менее программа в это прерывание залетает(включается светодиод), при этом таймер тихо сходит с ума.(Если пишу в AIC_EOICR, зависает, если нет увеличивется частота). Такое впечетление, что влет в оба прерывания происходит по переполнению PIT. Прерывания конфигурил по AT91F_AIC_ConfigureIt, приоритет PIT = 7, USART = 6.Компилятор gcc, режим ARM, о баге с thumb режимом осведомлен, атрибут прерывания поставлен. Я что-то не понял в конфигурации AIC? или на выходе из USART Interrupt нужны какие-то танцы? Помогите ибо день на это уже убил.
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
 |
Ответов
|
Jun 5 2006, 13:41
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 25-08-05
Из: Украина, Харьков
Пользователь №: 7 954

|
Цитата(beer_warrior @ Jun 4 2006, 00:55)  Написал прием/передачу по USART по прерываниям. До этого прерывания использовал PIT, на котором базируется системный таймер. Вызова приема/передачи в теле программы нет, присутствует только сама функция прерывания, тем не менее программа в это прерывание залетает(включается светодиод), при этом таймер тихо сходит с ума.(Если пишу в AIC_EOICR, зависает, если нет увеличивется частота). Такое впечетление, что влет в оба прерывания происходит по переполнению PIT. Прерывания конфигурил по AT91F_AIC_ConfigureIt, приоритет PIT = 7, USART = 6.Компилятор gcc, режим ARM, о баге с thumb режимом осведомлен, атрибут прерывания поставлен. Я что-то не понял в конфигурации AIC? или на выходе из USART Interrupt нужны какие-то танцы? Помогите ибо день на это уже убил.  Победил подобное поведение, сконфигурировав оба прерывания (и PIT, и UART) как level sensetive (НЕ edge sensetive).
Сообщение отредактировал gmax - Jun 5 2006, 13:42
|
|
|
|
|
Jun 5 2006, 14:48
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 25-08-05
Из: Украина, Харьков
Пользователь №: 7 954

|
Цитата(defunct @ Jun 5 2006, 16:47)  Цитата(gmax @ Jun 5 2006, 16:41)  Победил подобное поведение, сконфигурировав оба прерывания (и PIT, и UART) как level sensetive (НЕ edge sensetive).
Точно, и в даташите есть информация об этом: 31.5.3 Interrupt The USART interrupt line is connected on one of the internal sources of the Advanced Interrupt Controller. Using the USART interrupt requires the AIC to be programmed first. Note that it is not recommended to use the USART interrupt line in edge sensitive mode.Прошу заметить, что я конфигурирую НЕ ТАК, как написано в datasheet. Хотя для PIT в datasheet по этому поводу никаких рекомендаций нет, а ведь именно он "останавливается" (не генерит прервыние), или "увеличивает частоту" (прерывание возникает постоянно).
|
|
|
|
Сообщений в этой теме
beer_warrior Прерывания SAM Jun 3 2006, 21:55 defunct Цитата(beer_warrior @ Jun 4 2006, 00:55) ... Jun 4 2006, 21:51 beer_warrior Цитатаimho трабла не с AIC'ом в общем, а с тем... Jun 5 2006, 04:44 defunct Цитата(beer_warrior @ Jun 5 2006, 07:44) ... Jun 5 2006, 08:57   PrSt Цитата(gmax @ Jun 5 2006, 17:48) Прошу за... Jun 6 2006, 13:16    gmax Цитата(PrSt @ Jun 6 2006, 16:16) Цитата(g... Jun 6 2006, 14:39     defunct Цитата(gmax @ Jun 6 2006, 17:39) В datash... Jun 6 2006, 20:52      gmax Цитата(defunct @ Jun 6 2006, 23:52) Цитат... Jun 7 2006, 15:09 beer_warrior Цитатапроблема обнаружилась? озвучьте результаты, ... Jun 8 2006, 04:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|