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

 
 
> Глюк контроллера прерываний или что-то еще?, LPC1114
vasta
сообщение Nov 16 2012, 13:49
Сообщение #1


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

Группа: Участник
Сообщений: 183
Регистрация: 3-02-09
Из: Нск
Пользователь №: 44 325



Хотел бы узнать мнение специалистов по сим микроконтроллерам, ибо обнаружился глюк скорее всего на низком уровне, не знаю в какую сторону ковырять, ибо всю низкоуровненвые настройки далал библиотеками из иара, полагая, что все должно быть корректно, писал только верхний алгоритм, который как будто работает.
Алгоритм следующий.
НА I2C шине висит несколько (конкретно 5) устройств. LPC представляет собой тупо мост I2C - UART. Читает устройство №1, отправляет данные в UART, получает пакет из UART, пишет его в устройство №1, читает устройство №2, отправляет данные в UART, получает пакет из UART, пишет его в устройство №1 ... и далее по алгоритму до №5. Пакеты по 10 байт.
В общем, этот алгоритм у меня глючит. Может пройти 10 циклов, 20, 30, 50, но в конце концов виснет. В дебаггере это выглядит как СSTACK full, выпадает в B_Default_Handler.
Теперь интересные факты. Если убрать обмен по UART, т.е при алгоритме читает устройство №1, пишет в устройство №1, читает устройство №2, пишет в устройство №2 итд все работает без сбоев. UART сам по себе (без I2C) тоже работает - есть режим записи-чтения флеш по UArt, прогнал не один мегабайт, все нормально.
Изза чего может слетать стек? Была мысль, что может прерывания одновременно приходят - хотя вроде такого быть не должно, процессы разнесены. Понизил приоритет прерыванию I2C. Не помогает
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Nov 16 2012, 14:05
Сообщение #2


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А может просто размер стека надо увеличить?
Если приоритеты у прерываний разные на Cortex-M3 они могут быть вложенными - нагрузка на стек увеличивается!
Go to the top of the page
 
+Quote Post
vasta
сообщение Nov 16 2012, 14:23
Сообщение #3


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

Группа: Участник
Сообщений: 183
Регистрация: 3-02-09
Из: Нск
Пользователь №: 44 325



Не знаю.
Я однажды попадал в такую ошибку (конкретно на LPC), проблема была не в этом и решение было простым. Нюансы к сожалению забыл за давностью лет.
Попробую отключать прерывания, но хотелось бы разобраться (в каких ситуациях обычно вроде бы рабочий код приводит к переполнению стека)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:28
Рейтинг@Mail.ru


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