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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Слетает прерывание UART при работающем LWIP, плата Freescale FRDM-K64F
asm_lock
сообщение Mar 30 2016, 12:19
Сообщение #16


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Поставил пере инициализацию уарта если UART_HAL_GetRxDataRegFullIntCmd(baseAddr) == false.

Не помогло....
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 30 2016, 15:36
Сообщение #17


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

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (asm_lock @ Mar 30 2016, 05:19) *
Не помогло....
Если "выключается прерывание" - это действительно не "пропадает флаг разрешения в регистре", а "вообще ничего не работет", то нужно действительно настраивать MPU и ловить левые обращения.

Не важно что для чего предназначено, для отладки любое MPU подойдет.
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 30 2016, 15:45
Сообщение #18


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(ataradov @ Mar 30 2016, 19:36) *
Если "выключается прерывание" - это действительно не "пропадает флаг разрешения в регистре", а "вообще ничего не работет", то нужно действительно настраивать MPU и ловить левые обращения.

Не важно что для чего предназначено, для отладки любое MPU подойдет.


Ну как это ничего ?? LWIP работает, таймеры все работают....UART который весит на USB работает...
Не работает только прерывание UART который весит на 485-м интерфейсе....

Сообщение отредактировал asm_lock - Mar 30 2016, 15:48
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 30 2016, 15:55
Сообщение #19


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

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (asm_lock @ Mar 30 2016, 08:45) *
Не работает только прерывание UART который весит на 485-м интерфейсе....
Ну так что говорит бит в регистре разрешения прерываний?

Гадать на кофе тут не выйдет, нужно отлаживать.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 30 2016, 20:23
Сообщение #20


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(asm_lock @ Mar 30 2016, 18:45) *
Ну как это ничего ?? LWIP работает, таймеры все работают....UART который весит на USB работает...
Не работает только прерывание UART который весит на 485-м интерфейсе....


С LwIP так понимаю работаете из под FreeRTOS и все взято из примеров которые идут с SDK?
Судя по тому что в SDK нет примеров LwIP совместно с USB, то вы наверно совершили рискованное скрещивание. biggrin.gif
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 31 2016, 06:14
Сообщение #21


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(AlexandrY @ Mar 31 2016, 00:23) *
С LwIP так понимаю работаете из под FreeRTOS и все взято из примеров которые идут с SDK?
Судя по тому что в SDK нет примеров LwIP совместно с USB, то вы наверно совершили рискованное скрещивание. biggrin.gif


Никакого FreeRTOS'а нету... у Frescale примеры есть в KSDK_1.0.0
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 31 2016, 07:10
Сообщение #22


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(asm_lock @ Mar 31 2016, 09:14) *
Никакого FreeRTOS'а нету... у Frescale примеры есть в KSDK_1.0.0


Староватый SDK.
Теперь 2.0 актуальный и поддерживаемый.
Но кто мешает взять там пример под IAR и отлаживать с нормальным перехватом обращений к регистрам?
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 31 2016, 08:15
Сообщение #23


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(ataradov @ Mar 30 2016, 19:55) *
Ну так что говорит бит в регистре разрешения прерываний?

Гадать на кофе тут не выйдет, нужно отлаживать.


В осовном цикле UART3_C2 = 0x2C;
В обработчике UART3_C2 = 0x8C;
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 31 2016, 08:34
Сообщение #24


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(asm_lock @ Mar 31 2016, 11:15) *
В осовном цикле UART3_C2 = 0x2C;
В обработчике UART3_C2 = 0x8C;


TIE зависит от наличия процесса передачи и может быть любой и в обработчике и в цикле.
RIE должен быть всегда установлен.
Однако при переполнении прием запрещается. RIE устанавливается в 0, так написано в драйвере fsl_uart_driver.c
Поэтому проверьте переполнение.
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 31 2016, 09:21
Сообщение #25


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(AlexandrY @ Mar 31 2016, 12:34) *
TIE зависит от наличия процесса передачи и может быть любой и в обработчике и в цикле.
RIE должен быть всегда установлен.
Однако при переполнении прием запрещается. RIE устанавливается в 0, так написано в драйвере fsl_uart_driver.c
Поэтому проверьте переполнение.


В самом начале обработчика прерывания стоит опрос функции UART_HAL_GetRxDataRegFullIntCmd(baseAddr).
Когда перестаю приниматься данные , он всегда false .
Как это переполнение очистить то ?

Сообщение отредактировал asm_lock - Mar 31 2016, 09:24
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 31 2016, 10:23
Сообщение #26


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(asm_lock @ Mar 31 2016, 12:21) *
В самом начале обработчика прерывания стоит опрос функции UART_HAL_GetRxDataRegFullIntCmd(baseAddr).
Когда перестаю приниматься данные , он всегда false .
Как это переполнение очистить то ?


Так эта функция всего лишь возвращает значение RIE.
В новом SDK от нее уже отказались.
Поставьте просто
Код
UART3_C2 |= 0x20;

после этой функции.
Но будьте готовы к потере данных.
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 31 2016, 10:55
Сообщение #27


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(AlexandrY @ Mar 31 2016, 14:23) *
Код
UART3_C2 |= 0x20;

после этой функции.
Но будьте готовы к потере данных.


попробую...

ЗЫ: не помогло...

Сообщение отредактировал asm_lock - Mar 31 2016, 11:28
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 31 2016, 11:33
Сообщение #28


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(asm_lock @ Mar 31 2016, 13:55) *
попробую...

ЗЫ: не помогло...


А какая установка глубины FIFO стоит?
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 31 2016, 13:55
Сообщение #29


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата
А какая установка глубины FIFO стоит?


Спасибо что спросили....
в инициализации только вот это прописано...

UART_HAL_SetRxFifoWatermark(baseAddr, 1);

/* Enable and flush the FIFO prior to enabling the TX/RX */
UART_HAL_SetTxFifoCmd(baseAddr, true);
UART_HAL_SetRxFifoCmd(baseAddr, true);
UART_HAL_FlushTxFifo(baseAddr);
UART_HAL_FlushRxFifo(baseAddr);
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Apr 1 2016, 09:09
Сообщение #30


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

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Увеличил размер FIFO в регистре UARTx_PFIFO до 64 слов....
И начал чистить его как только выползал флаг OR в регистре UARTx_S1.

Уже два часа работает без глюков...
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 July 2025 - 12:13
Рейтинг@Mail.ru


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