|
Прерывание от таймера в AT91SAM7X256 |
|
|
|
May 28 2008, 18:23
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(aaarrr @ May 28 2008, 21:21)  Спасибо, я в процессе...)))
Сообщение отредактировал ZAA - May 28 2008, 18:24
|
|
|
|
|
May 28 2008, 20:51
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(aaarrr @ May 28 2008, 21:21)  ... В общем, полнейшая ерунда...Если разрешать прерывания по Tx, то программа какое-то количество раз заходит в обработчик, а потом все останавливается. А по Rx прерывания так и не воспринимаются, хотя все делаю по Вашим советам, да и по логике-то должно работать((( Вообще для общения с контроллером я пользуюсь программой Terminal.exe. В обработчике я пишу, так как Вы советовали: Код if(status & AT91C_US_TXRDY) { // Делаем что нужно, но обязательно пишем US_THR или запрещаем прерывание TXRDY (pUS0->US_THR) = 0x1;//Data & 0x1FF; vParTestToggleLED(2); AT91F_DBGU_Printc(count_uart_interrupt); //эта функция по DBGU байт передает }  Мозг взрывается уже
|
|
|
|
|
May 29 2008, 03:06
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(ZAA @ May 29 2008, 00:51)  Если разрешать прерывания по Tx, то программа какое-то количество раз заходит в обработчик, а потом все останавливается. Останавливается как - процессор виснет, или прерывания не прерываются? Цитата(ZAA @ May 29 2008, 00:51)  А по Rx прерывания так и не воспринимаются, хотя все делаю по Вашим советам, да и по логике-то должно работать((( А вот это совсем странно, тем более, что инициализируется оно одновременно с TX. Проверьте все внимательно еще раз. PDC точно выключен?
|
|
|
|
|
May 29 2008, 03:11
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(aaarrr @ May 29 2008, 06:06)  Останавливается как - процессор виснет, или прерывания не прерываются? Похоже на то, что прерывания не прерываются. Потому что в условии обработчика, где про Tx, я посылаю через DBGU значение счётчика, к-рый инкрементируется каждое прерывание. ПОсылается примерно значений 1500, а дальше все. Да ещё и в прерывание заходит, даже если кабель RS232 не подключен.
|
|
|
|
|
May 29 2008, 07:46
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(aaarrr @ May 29 2008, 07:56)  Ну, это правильно - откуда ему знать, подключен кабель, или нет? Какая-нибудь светодиодная моргалка в проекте есть? Да, есть. Это функция vParTestToggleLED ('номер светодиода') Я её использую, чтобы определить. зашла программа в прерывание или нет. Отладчика-то не имеется. вот и приходится лампочками отлаживать  А не может дело быть в структуре самой программы? То есть в ф-ии main вызывается PrvSetupHardware (ну как обычно), потом ф-ия ReadComPort(), потом vStartSheduler; А ф-ия ReadComPort выглядит так: void ReadComPort() { init_uart(); } init_uart - это инициализация уарта. про которую обсуждалось выше. А данные в порт с компа все равно какой программой отправлять? (либо terminal.exe, либо ComPUMP ну или еще какой-нить  )
Сообщение отредактировал ZAA - May 29 2008, 07:52
|
|
|
|
|
May 29 2008, 10:01
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(aaarrr @ May 29 2008, 10:50)  Так добавьте какую-нибудь задачу, которая просто будет LED'ом моргать. А то не понятно, хвост-IRQ отваливается, или лапы-OS  Спасибо за поддержку. Попробую...)
|
|
|
|
|
Jun 13 2008, 05:15
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906

|
Цитата(aaarrr @ May 29 2008, 10:50)  Так добавьте какую-нибудь задачу, которая просто будет LED'ом моргать. А то не понятно, хвост-IRQ отваливается, или лапы-OS  Уважаемый aaarrr! Не было возможности Вам ответить раньше. Хочется очень Вас поблагодарить. проблема с UARTом разрешилась. причиной всему была собственная глупость, тупость и т п. если бы в руках схема не оказалась, долго бы ещё голову ломали. В общем, USART0, который я так настойчиво пыталась конфигурировать ,выведен совсем на другие выводы. Припаяли разъём на PA0, PA1 (к-рые отвечают за TxD RxD) и все заработало. Наука мне на будущее. СПАСИБО ещё раз
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|