![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Есть тестовый пример I2S для Keil, МК LPC2478 (плата SK-MLPC2478, JTAG отладчик DPM-ARM_Cortex).
Программа виснет на ожидании флагов
Функция прерывания void DMAHandler(void) __irq, из файла dma.c срабатывает один раз, и значение в регистре GPDMA_INT_TCSTAT равно 1. Соответственно переменная I2SDMA0Done равна 1, а I2SDMA1Done всегда равна 0. Почему так? Как сделать так, что бы программа работала правильно? Присоединённый файл ( Кол-во скачиваний: 2 )
I2S_Test.rar 37,74 Kb |
|||
|
||||
| daemonaz |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 4.5.2008 Репутация: нет Всего: нет |
У меня такая же проблема была на I2C, стартовый сигнал принят и ждешь адрес, а его нет, хотя сигналы были. Я решал проблему таймаутом, может поможет, не сидеть в цикле, а по таймеру ждем таймаут, если не отправили, то повторить, то есть с первого раза не получается почему-то. Библиотеку с примерами можно взять из сайта STM, там же коллекция аппноутов с исходниками, или же в папке IAR там тоже есть примеры..
|
|||
|
||||
| OlegIT |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Попробовал проект SSP0, там используются два канала DMA. Вообще ни от одного DMA канала прерывание не возникает. Чего то я тут не до понимаю.
Но в I2S адреса нет и ждать кроме как прихода прерываний от каналов DMA не чего. Или я Вас не так понял?
Я так и делаю, но только с NXP беру. И с макетной платой они пришли. |
||||
|
|||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
А вы добавьте таймаут и программа не будет виснуть.
Это сообщение отредактировал(а) Mazzi - 29.10.2010, 19:40 -------------------- Мне нужны помощники. |
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Вообще-то вопрос не в самом зависании (извиняюсь за не точность формулировки), а в том, почему DMA1 не отвечает. Как я понимаю после инициализации канал DMA должен проинформировать о своём состоянии, а с DMA1 этого не происходит.
Это сообщение отредактировал(а) OlegIT - 31.10.2010, 11:14 |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |