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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Прерывание UART
Karaox
сообщение Oct 25 2010, 16:59
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-01-10
Пользователь №: 54 649



Большое спасибо,
За советы.
Я разобрался в своём вопросе. biggrin.gif
Пишу это, для того, чтобы помочь другим новичкам вроде меня избежать аналогичных проблем.

В моём случае имела место совокупность ошибок:
1. Прерывание приёма на самом деле всё-таки возникало всё это время, однако, в конце кода его обработки (к сожалению, рассматривать её как источник ошибок я стал слишком поздно) стояла строка вида UCSRB = UCSRB | (1<<UDRIE); разрешающая прерывания освобождения буфера USART, обработчик которого не был объявлен, что является багом. Это вызывало циклический RESERT МК, напрочь стирая все следы возникновения прерываний. Нужно было внимательнее партировать код из доступного примера rolleyes.gif
2. после того, как я исправил это, USART всё равно принимал/посылал кашу. Виной было то, что я упустил из виду хрестоматийную истину о важности точного клока для UART – я использовал внутренний генератор системного клока для ATMega8L, который по даташиту «не надёжен». Как только я запаял внешний кварцевый резонатор – всё заработало как надо.

Удачи всём тем, кто работает с USART’ом.
И большое спасибо всем откликнувшимся!
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Oct 26 2010, 10:37
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Виной было то, что я упустил из виду хрестоматийную истину о важности точного клока для UART – я использовал внутренний генератор системного клока для ATMega8L, который по даташиту «не надёжен».

По даташиту он "с завода с точностью +/-3%" для Vcc=5В и температуры 25гр. В принципе должно хватать(+/-5% достаточно) и с температурой меняется не сильно. Но скорее всего у Вас не 5В, а 3В при которых частота 1.9МГц +/-3% т.е. еще на 5% ниже.
Проблема может решаться алгоритмом автокаллибровки по символам из потока если внешнее устройство первым при включении начинает обмен.
Go to the top of the page
 
+Quote Post
Karaox
сообщение Oct 26 2010, 19:30
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-01-10
Пользователь №: 54 649



Цитата(ArtemKAD @ Oct 26 2010, 14:37) *
Но скорее всего у Вас не 5В, а 3В при которых частота 1.9МГц +/-3% т.е. еще на 5% ниже.


Да у меня именно 3В и шла каша.

Цитата(ArtemKAD @ Oct 26 2010, 14:37) *
Проблема может решаться алгоритмом автокаллибровки по символам из потока если внешнее устройство первым при включении начинает обмен.


Автокаллибровка – классная идея, спасибо, возьму на вооружение, на будущее. Типа, когда приёмник в начале калибровки знает, что посылает источник, т.е. первые N пакетов и «устанавливает таблицу соответствия».
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Oct 26 2010, 19:43
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
т.е. первые N пакетов и «устанавливает таблицу соответствия».

Достаточно одного символа в котором N фронтов между которыми меряешь времянку. Перепады можно мерять прерыванием по изменению порта (PCINT).
Go to the top of the page
 
+Quote Post
Karaox
сообщение Nov 25 2010, 11:37
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-01-10
Пользователь №: 54 649



Цитата(ArtemKAD @ Oct 26 2010, 23:43) *
Достаточно одного символа в котором N фронтов между которыми меряешь времянку. Перепады можно мерять прерыванием по изменению порта (PCINT).



Никак не возьму в толк как может помочь знание таймингов между фронтами в 1 посылке?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 25 2010, 15:37
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Karaox @ Nov 25 2010, 14:37) *
Никак не возьму в толк как может помочь знание таймингов между фронтами в 1 посылке?
Вот посмотрите это. И пример применения.
Go to the top of the page
 
+Quote Post
Karaox
сообщение Nov 26 2010, 10:10
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-01-10
Пользователь №: 54 649



Цитата(Палыч @ Nov 25 2010, 18:37) *
Вот посмотрите это. И пример применения.



Большое спасибо! smile.gif
Обязательно посмотрю.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 11:27
Рейтинг@Mail.ru


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