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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Прерывание от таймера в AT91SAM7X256
ZAA
сообщение May 28 2008, 18:23
Сообщение #31


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



Цитата(aaarrr @ May 28 2008, 21:21) *

Спасибо, я в процессе...)))

Сообщение отредактировал ZAA - May 28 2008, 18:24
Go to the top of the page
 
+Quote Post
ZAA
сообщение May 28 2008, 20:51
Сообщение #32


Частый гость
**

Группа: Участник
Сообщений: 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 байт передает
    }

crying.gif crying.gif crying.gif Мозг взрывается уже
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 29 2008, 03:06
Сообщение #33


Гуру
******

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



Цитата(ZAA @ May 29 2008, 00:51) *
Если разрешать прерывания по Tx, то программа какое-то количество раз заходит в обработчик, а потом все останавливается.

Останавливается как - процессор виснет, или прерывания не прерываются?

Цитата(ZAA @ May 29 2008, 00:51) *
А по Rx прерывания так и не воспринимаются, хотя все делаю по Вашим советам, да и по логике-то должно работать(((

А вот это совсем странно, тем более, что инициализируется оно одновременно с TX. Проверьте все внимательно еще раз. PDC точно выключен?
Go to the top of the page
 
+Quote Post
ZAA
сообщение May 29 2008, 03:11
Сообщение #34


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



Цитата(aaarrr @ May 29 2008, 06:06) *
Останавливается как - процессор виснет, или прерывания не прерываются?

Похоже на то, что прерывания не прерываются. Потому что в условии обработчика, где про Tx, я посылаю через DBGU значение счётчика, к-рый инкрементируется каждое прерывание. ПОсылается примерно значений 1500, а дальше все. Да ещё и в прерывание заходит, даже если кабель RS232 не подключен.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 29 2008, 04:56
Сообщение #35


Гуру
******

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



Цитата(ZAA @ May 29 2008, 07:11) *
Да ещё и в прерывание заходит, даже если кабель RS232 не подключен.

Ну, это правильно - откуда ему знать, подключен кабель, или нет? Какая-нибудь светодиодная моргалка в проекте есть?
Go to the top of the page
 
+Quote Post
ZAA
сообщение May 29 2008, 07:46
Сообщение #36


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



Цитата(aaarrr @ May 29 2008, 07:56) *
Ну, это правильно - откуда ему знать, подключен кабель, или нет? Какая-нибудь светодиодная моргалка в проекте есть?

Да, есть. Это функция vParTestToggleLED ('номер светодиода')
Я её использую, чтобы определить. зашла программа в прерывание или нет. Отладчика-то не имеется. вот и приходится лампочками отлаживать 05.gif
А не может дело быть в структуре самой программы? То есть в ф-ии main вызывается PrvSetupHardware (ну как обычно), потом ф-ия ReadComPort(), потом vStartSheduler;
А ф-ия ReadComPort выглядит так:
void ReadComPort()
{
init_uart();
}

init_uart - это инициализация уарта. про которую обсуждалось выше.

А данные в порт с компа все равно какой программой отправлять? (либо terminal.exe, либо ComPUMP ну или еще какой-нить sad.gif )

Сообщение отредактировал ZAA - May 29 2008, 07:52
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 29 2008, 07:50
Сообщение #37


Гуру
******

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



Так добавьте какую-нибудь задачу, которая просто будет LED'ом моргать. А то не понятно, хвост-IRQ отваливается, или лапы-OS smile.gif
Go to the top of the page
 
+Quote Post
ZAA
сообщение May 29 2008, 10:01
Сообщение #38


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



Цитата(aaarrr @ May 29 2008, 10:50) *
Так добавьте какую-нибудь задачу, которая просто будет LED'ом моргать. А то не понятно, хвост-IRQ отваливается, или лапы-OS smile.gif

Спасибо за поддержку. Попробую...)
Go to the top of the page
 
+Quote Post
ZAA
сообщение Jun 13 2008, 05:15
Сообщение #39


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



Цитата(aaarrr @ May 29 2008, 10:50) *
Так добавьте какую-нибудь задачу, которая просто будет LED'ом моргать. А то не понятно, хвост-IRQ отваливается, или лапы-OS smile.gif

Уважаемый aaarrr! Не было возможности Вам ответить раньше. Хочется очень Вас поблагодарить. проблема с UARTом разрешилась. причиной всему была собственная глупость, тупость и т п. если бы в руках схема не оказалась, долго бы ещё голову ломали. В общем, USART0, который я так настойчиво пыталась конфигурировать ,выведен совсем на другие выводы. Припаяли разъём на PA0, PA1 (к-рые отвечают за TxD RxD) и все заработало. Наука мне на будущее. СПАСИБО ещё раз
Go to the top of the page
 
+Quote Post

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

 


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


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