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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Какие есть особенности инициализации UART2 и UART3 в atmega2560?
Oleg_IT
сообщение Feb 28 2011, 12:18
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(xelax @ Feb 28 2011, 13:26) *
Может дело не в uart'е? Вы же не зря атмегу2560 выбрали, вам известно что у gcc по дефолту проблемы с использованием кода в старших 128к? Без заморочек с trampoline секцией, вызовы функций(находящихся в старших 128к) по указателю приводит к попаданию на левые адреса. Я не утверждаю что проблема в этом, но как вариант проверить стоит.

То есть прерывания есть, но в обработчики, которые вне тела прерывания(в супер петле, ну или что там вы используете) вы не попадаете.

Не судите строго, но я уже перестаю чего-либо понимать. Размер адреса у UART2 и UART3 по размерности такие же, как и у UART0 и UART1 (в моём случае UART0 - 0000041E, UART1 - 00000484, UART2 - 000004EE, UART3 - 00000554).
Ставил точки прерывания в таблице адресов прерывания, на все строки. Та же картина, UART0 и UART1 остановы есть, UART2 и UART3 остановов нет. Ладно, переход из таблицы прерываний не туда (куда? и если не туда, то невероятно, что программа не рушится), но должна же программа прийти в таблицу прерывания
Ни когда не работал с trampoline секцией. Где об этом почитать, поисковики куда-то ни туда направляют.
Go to the top of the page
 
+Quote Post
xelax
сообщение Feb 28 2011, 16:24
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Вот здесь кое что обсуждалось

Так же в документации на gcc линкер можно почитать.

Но раз у вас даже на вектор прерывания не попадает, то проблема не в этом.

Хотя при написании кода под 2560 всё равно с этой проблемой столкнётесь, когда за 128к перевалите.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Mar 1 2011, 07:17
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(xelax @ Feb 28 2011, 19:24) *
Вот здесь кое что обсуждалось

Так же в документации на gcc линкер можно почитать.

Но раз у вас даже на вектор прерывания не попадает, то проблема не в этом.

Хотя при написании кода под 2560 всё равно с этой проблемой столкнётесь, когда за 128к перевалите.

С 128к это я учту, но тут проблема явно не та, объём кода меньше 3,5к.
Чего ещё проверить можно, нужно?
Go to the top of the page
 
+Quote Post
SysRq
сообщение Mar 1 2011, 07:39
Сообщение #19


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(Oleg_IT @ Mar 1 2011, 10:17) *
Чего ещё проверить можно, нужно?
Выкладывайте весь проект, урезав до минимума, в котором проявляется проблема. Отметём хотябы программную часть.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Mar 1 2011, 10:36
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(SysRq @ Mar 1 2011, 10:39) *
Выкладывайте весь проект, урезав до минимума, в котором проявляется проблема. Отметём хотябы программную часть.

Минимальный вариант проекта.

Прикрепленные файлы
Прикрепленный файл  TestUART_ATMega2560.rar ( 3.31 килобайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post

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

 


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


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