Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-окт-21 10:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: UART нет прерываний
СообщениеДобавлено: 2017-дек-14 15:40 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Уважаемые форумчане подскажите пожалуйста. Написал код для работы RS232. Работаю с отладочной миландровской платой на которой установлен 1986ВЕ91Т. В коде разршаю обработку прерываний от приемника, передатчика и таймаута. Отключаю FIFA. подключаю к плате компьютер через преобразователь USB-RS232. Работаю в среде Кейл, в режиме отладки. Точка останова установлена в начале функции обработки прерываний. Посылаю 1 байт. Происходит прерывание. Смотрю регистр RIS. 4 галочки стоят только в окошках изменения линий. Но там они всегда стоят. Вот здесь первая непонятка. Что вызвало прерывание. Сбрасываю контроллер и снова запускаю программу. в этот раз посылаю два байта. Снова возникло прерывание, но уже добавилась галочка в бите OERIS этого же регистра. Но здесь галочка понятна. Ведь ФИФО отключен. Но почему нет прерывания от передатчика? Далее включаю ФИФО. И опять посылаю 1 байт. История такая же как и в начале. Снова все обнуляю и запускаю. Посылаю 2 байта. Теперь уже в RIS появилась галочка в окне прерываний по таймауту. Но в окне приемника её так и нет! Как же должен срабатывать приемник? и почему появилось прерывание по таймауту? И вот только если я пошлю больше 16 байт, появляется галочка и на приемнике.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-14 16:26 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 668
Откуда: г. Санкт-Петербург
vladh писал(а):
... Смотрю регистр RIS...

Как Вы это делаете? Если при этом просматриваете отладчиком регистр DR то прерывание от приемника будет сброшено, потому что оно сбрасывается при чтении регистра DR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-14 16:37 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
vasili писал(а):
vladh писал(а):
... Смотрю регистр RIS...

Как Вы это делаете? Если при этом просматриваете отладчиком регистр DR то прерывание от приемника будет сброшено, потому что оно сбрасывается при чтении регистра DR.

А вот здесь, пожалуйста, разъясните. После остановки программы в момент перехода на подпрограмму обработки прерываний я и просматриваю регистры. причем их состояние не меняется в режиме просмотра. А Вы считаете, что это не так? И если я просматриваю, а точнее отладчик просматривает регистр DR, то я думаю, что он тоже должен обнулится? Или он обнуляется если его данные будут сохраняться в некую переменную?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-14 17:39 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 668
Откуда: г. Санкт-Петербург
Обнуляется или нет регистр DR при его чтении точно сообщить не могу (скорее всего нет если FIFO отключен), но прерывания от приемника при этом сбрасываются.
Если хотите узнать состояние контроллера UART в момент начала обработки прерывания, в подпрограмме обработки сохраните интересующие Вас регистры UART в памяти или регистрах ядра (DR сохраняйте последним), после чего поставьте точку останова.
По остановке просматривайте отладчиком регистры ядра или память, при этом окно просмотра регистров периферии д.б. закрытым


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-14 22:28 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1155
Откуда: Тула
vasili писал(а):
Обнуляется или нет регистр DR при его чтении точно сообщить не могу (скорее всего нет если FIFO отключен)

Не обнуляется. Выдаёт одни и те же принятые данные (с фифо и без).

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-15 08:31 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Спасибо vasili, спасибо prostoRoman. Разобрался! Я раньше работал с импортными контроллерами, и отладку делал в Протеусе. Естественно состояние регистров при остановках работы программы я видел виртуальные, а здесь необходимо учитывать, что прежде меня просмотром занимается отладчик. Еще раз большое спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-15 11:53 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
vasili писал(а):
Обнуляется или нет регистр DR при его чтении точно сообщить не могу (скорее всего нет если FIFO отключен), но прерывания от приемника при этом сбрасываются.
Если хотите узнать состояние контроллера UART в момент начала обработки прерывания, в подпрограмме обработки сохраните интересующие Вас регистры UART в памяти или регистрах ядра (DR сохраняйте последним), после чего поставьте точку останова.
По остановке просматривайте отладчиком регистры ядра или память, при этом окно просмотра регистров периферии д.б. закрытым

Заодно хотел бы спросить, Если FIFО разрешен то как правильно считать из него данные? Это же надо как то делать через DR?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-15 12:26 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1155
Откуда: Тула
Читать DR пока бит FR.RXFE != 1

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-15 12:34 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
prostoRoman писал(а):
Читать DR пока бит FR.RXFE != 1

Т.е. Вы хотите сказать, что при каждом моем обращении к регистру DR, данные из регистра пропадают, а на их место приходят очередные из FIFO?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-15 13:46 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1155
Откуда: Тула
Именно! раздел Электроника

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART нет прерываний
СообщениеДобавлено: 2017-дек-15 13:59 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Еще раз спасибо, prostoRoman


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB