Jump to content

    
Sign in to follow this  
ZAA

Прерывание от таймера в AT91SAM7X256

Recommended Posts

...

В общем, полнейшая ерунда...Если разрешать прерывания по 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: :crying: :crying: Мозг взрывается уже

Share this post


Link to post
Share on other sites
Если разрешать прерывания по Tx, то программа какое-то количество раз заходит в обработчик, а потом все останавливается.

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

 

А по Rx прерывания так и не воспринимаются, хотя все делаю по Вашим советам, да и по логике-то должно работать(((

А вот это совсем странно, тем более, что инициализируется оно одновременно с TX. Проверьте все внимательно еще раз. PDC точно выключен?

Share this post


Link to post
Share on other sites
Останавливается как - процессор виснет, или прерывания не прерываются?

Похоже на то, что прерывания не прерываются. Потому что в условии обработчика, где про Tx, я посылаю через DBGU значение счётчика, к-рый инкрементируется каждое прерывание. ПОсылается примерно значений 1500, а дальше все. Да ещё и в прерывание заходит, даже если кабель RS232 не подключен.

Share this post


Link to post
Share on other sites
Да ещё и в прерывание заходит, даже если кабель RS232 не подключен.

Ну, это правильно - откуда ему знать, подключен кабель, или нет? Какая-нибудь светодиодная моргалка в проекте есть?

Share this post


Link to post
Share on other sites
Ну, это правильно - откуда ему знать, подключен кабель, или нет? Какая-нибудь светодиодная моргалка в проекте есть?

Да, есть. Это функция vParTestToggleLED ('номер светодиода')

Я её использую, чтобы определить. зашла программа в прерывание или нет. Отладчика-то не имеется. вот и приходится лампочками отлаживать :05:

А не может дело быть в структуре самой программы? То есть в ф-ии main вызывается PrvSetupHardware (ну как обычно), потом ф-ия ReadComPort(), потом vStartSheduler;

А ф-ия ReadComPort выглядит так:

void ReadComPort()

{

init_uart();

}

 

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

 

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

Edited by ZAA

Share this post


Link to post
Share on other sites
Так добавьте какую-нибудь задачу, которая просто будет LED'ом моргать. А то не понятно, хвост-IRQ отваливается, или лапы-OS :)

Спасибо за поддержку. Попробую...)

Share this post


Link to post
Share on other sites
Так добавьте какую-нибудь задачу, которая просто будет LED'ом моргать. А то не понятно, хвост-IRQ отваливается, или лапы-OS :)

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this