Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 19.02.2019, 21:58  
pavell
Прохожий
 
Регистрация: 19.02.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pavell на пути к лучшему
По умолчанию Re: ADC -> DMA -> UART прерывния

Сообщение от eddy Посмотреть сообщение
Чтобы обеспечить постоянную загрузку канала я бы сделал так. Запускаем ПДП на АЦП. На середине заполнения буфера выставляем флаг, что можно запускать ПДП на уарт. Прерывание по окончанию буфера АЦП не нужно. А вот по окончанию передачи уартом - нужно. Как только передача закончилась, опять запускаем заполнение буфера со стороны АЦП, а пока он первую половину заполняет, отправляем метку, что предыдущая порция данных кончилась и сейчас пойдет новая. А тут и флаг, разрешающий отправку, подоспеет. В принципе, можно вообще без него работать и сразу после отправления метки запускать ПДП на отправку буфера.
Значит я был не так и далек от истины т.к. примерно такому ходу мыслей я и следовал. У меня нет прерываний АЦП. А в настройках ПДП у меня как раз и установлены запросы прерываний на HT (половина) на TC (полный) строки 73 и 74 приложенного кода.

У меня сейчас вопрос даже не по реализации получения/передачи как таковой, у меня прерывания не обрабатываются, а вот почему я понять и не могу
Реклама:
pavell вне форума  
Непрочитано 19.02.2019, 22:13  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 116
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: ADC -> DMA -> UART прерывния

pavell, я ж говорю: надо надергать инициализации из сниппетов!
Там и более компактно записано, и с нормальными комментариями, и работает!

Я, кстати, понял, что судя по коду, читается только один канал АЦП, т.е. передавать надо квазинепрерывно → сделать что-то вроде звуковой карты. Можно, кстати, и сделать из МК псевдозвуковушку и слать себе данные по USB.

Ну, а если так хочется по уарту добиться псевдо-реального времени, то лучше воспользоваться двойной буферизацией. Алгоритм:
0. N = 0
1. заполняем буфер N данными с АЦП, на середине заполнения выставляем в прерывании флаг; по этому флагу запускаем передачу по уарту буфера N (когда уарт свободен)
2. N = !N, ждем прерывания половины передачи данных по уарту; как только оно произошло, переходим к п.1; в прерывании по окончании передачи выставляем флаг - уарт свободен.

В результате уарт будет постоянно передавать данные то из одного буфера, то из другого. Квазинепрерывно.
В main просто будет происходить проверка двух флагов: свободен ли уарт и заполнен ли очередной буфер (в качестве флага можно использовать номер буфера + 1). Если там еще полным-полно чего происходит, то можно попробовать этот функционал прямо в прерывания запихнуть. Но я, например, стараюсь слишком длинные обработчики прерываний не делать, некошерно это. Там только флаги должны устанавливаться/сниматься.
__________________
Союз Советских Социалистических Округов Северной Америки

Последний раз редактировалось eddy; 19.02.2019 в 22:22.
eddy вне форума  
Непрочитано 20.02.2019, 00:16  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: ADC -> DMA -> UART прерывния

pavell, в отладчике после init проверяйте состояние всех флагов по DS (вообще всех, а не только установленных в Вашей программе). Что-то пошло не так именно там, поскольку считаем камень рабочим и демонов Максвелла не привлекаем

PS Что-то я про вектора прерываний ещё забыл упомянуть - их тоже проверить…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…

Последний раз редактировалось mike-y-k; 20.02.2019 в 05:51.
mike-y-k вне форума  
Непрочитано 21.02.2019, 20:27  
pavell
Прохожий
 
Регистрация: 19.02.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pavell на пути к лучшему
По умолчанию Re: ADC -> DMA -> UART прерывния

Из последнего, что нарыл - программа заходит в default_handler, осталось найти почему
pavell вне форума  
Непрочитано 21.02.2019, 21:37  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 116
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: ADC -> DMA -> UART прерывния

Сообщение от pavell Посмотреть сообщение
осталось найти почему
Очевидно, потому, что не объявлен свой обработчик прерываний.
Нужно внимательно смотреть, правильно ли указано имя функции-обработчика. Сравнить с таблицей имен векторов в vector.c или где там оно у вас перечисляется.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 23.02.2019, 11:11  
pavell
Прохожий
 
Регистрация: 19.02.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pavell на пути к лучшему
По умолчанию Re: ADC -> DMA -> UART прерывния

Благодаря знающим людям проблема решена и причина ее тривиальна - extertn "C"
Спасибо за помощь

Последний раз редактировалось pavell; 23.02.2019 в 12:33.
pavell вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен пример по ADC и UART demetrius2003 Песочница (вопросы новичков) 46 24.12.2018 09:22
stm32F030f4 + ADC + DMA miwutka ARM 40 05.11.2016 12:42
STM32 - Tips 'N Tricks nahimovv ARM 8 08.08.2016 14:35
Tim19 -> DMA -> значение ADC в memory kvark85 ARM 6 03.06.2014 15:00
STM32 ADC + DMA в циклическом режиме Nik_UFO Микроконтроллеры, АЦП, память и т.д 4 24.02.2012 18:49


Часовой пояс GMT +4, время: 05:47.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot