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

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

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

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

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

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


 
Опции темы
Непрочитано 17.09.2013, 20:12  
nerozero
Вид на жительство
 
Регистрация: 26.07.2007
Сообщений: 483
Сказал спасибо: 18
Сказали Спасибо 107 раз(а) в 68 сообщении(ях)
nerozero на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

swat24, Спасибо большое, буду посмотреть
Реклама:
nerozero вне форума  
Непрочитано 17.09.2013, 21:02  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

ST наконец разродился чипами в LQFP с поддержкой SDRAM и TFT:
http://www.st.com/web/catalog/mmc/FM...N1806/PF255424
zöner вне форума  
Непрочитано 19.09.2013, 12:11  
swat24
Гражданин KAZUS.RU
 
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
swat24 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Добрый день.
Я оцифровываю 7 каналов. С помощью DMA они поочередно складываются в массив. После прерывания от DMA о завершении передачи я вызываю усреднение результата и запись результата в массив. После записи результата я разрешаю работу ДМА и все повторяется.
Вопрос, не будет ли проблем при одновременно обращении к одному массиву? Т.е. если подпрограмма усреднения будет обращаться к массиву в тот же момент, когда и главный цикл?
Может сама идея работы с АЦП и не правильная, просто я считаю мне будет удобнее в любой момент времени обратится к переменной, в которой уже будет оцифрованное значение с определенного канала.
swat24 вне форума  
Непрочитано 19.09.2013, 12:32  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,033
Сказал спасибо: 2,559
Сказали Спасибо 11,881 раз(а) в 5,958 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Суть ПДП в аппаратности. "Когда говорят пушки - музы молчат"
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 19.09.2013, 12:39  
sslobodyan
Частый гость
 
Регистрация: 14.06.2006
Сообщений: 40
Сказал спасибо: 20
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
sslobodyan на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от swat24 Посмотреть сообщение
не будет ли проблем при одновременно обращении к одному массиву? Т.е. если подпрограмма усреднения будет обращаться к массиву в тот же момент, когда и главный цикл
Для таких вещей нужно либо задействовать методы разделения ресурсов РТОС либо так:
1. Взводим флаг.
2. Считываем значение массива.
3. Смотрим на флаг, и если он сброшен, то идем к п.1

А в прерывании по усреднению всегда сбрасываем флаг.
sslobodyan вне форума  
Непрочитано 19.09.2013, 12:55  
swat24
Гражданин KAZUS.RU
 
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
swat24 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Первоначально при прерывании ПДП я выставлял флаг и в главном цикле проверяя флаг уже обрабатывал значения (усреднял, выводил...). После чего разрешал прерывание по ПДП и все повторялось заново.

ПДП не имеет доступа к массиву результата. ПДП пишет свои 700 измерений в один массив, после прерывания о завершении передачи. Вызываю подпрограмму усреднения, которая уже пишет результат в отдельный массив, к которому я и хочу обращаться из главного цикла.
Вопрос в том, что будет если при считывании информации в программе из массива результата произойдет прерывание ПДП и будет вызвана подпрограмма усреднения?

И еще вопрос, на одном из сайтов видел, что при обработке результата отключают только прерывание ПДП --›DMA_ITConfig(DMA2_Stream0,DMA_IT_TC,DISABLE);
После обработки включают. Но как я понимаю, это не совсем правильно, т.к. ПДП в этот момент всеравно пишет данные или они стартуют только после прошедшего прерывания о завершении?
Или лучше полностью выключать ПДП на время обработки?

Данные на одном канале перезапишутся, пока я буду читать второй - мне это не критично. Главное что бы программа не вылетела в HardFault...
А какая - нибудь обработка исключений есть в KEIL для STM32? Или только смотреть по прерываниям, куда зашли - такая и ошибка?

Последний раз редактировалось swat24; 19.09.2013 в 13:25.
swat24 вне форума  
Непрочитано 19.09.2013, 16:28  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Организуй двойную буферизацию, тем более что ДМА стм32 поддерживает ее аппаратно. В один буфер пишет ДМА, программа в это время обсчитывает второй буфер

Если программа обратится к той ячейке, в которую сейчас пишет ДМА, будет бус еррор
niXto вне форума  
Непрочитано 19.09.2013, 16:44  
swat24
Гражданин KAZUS.RU
 
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
swat24 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Добрый день niXto
С двойной буферизацией - отпадает необходимость отключать ДМА при усреднении.
Но я спрашивал немного про другое. К моему массиву с результатом может обращаться только или подпрограмма по просчету средних значений, или из главного цикла (и обращение к определенным элементам массива в разный момент времени). Т.е. не будет ли проблемой при чтении массива в главном цикле вызванное прерывание ПДП с запуском подпрограммы подсчета средних значений?
Как я понимаю при вызове прерывания в стеке будет находится только адрес ячейки массива, к которой было обращение (и не важно изменится ли ее содержимое во время прерывания или нет). Правильно я думаю?

А ПДП пишет в отдельный массив, к которому идет обращение только при выключенном прерывании конца передачи ПДП.

А как правильно выключать ПДП в момент обработки результата? Так как я написал выше? или
DMA_Cmd(DMA2_Stream0, DISABLE); ?

Последний раз редактировалось swat24; 19.09.2013 в 17:12.
swat24 вне форума  
Непрочитано 19.09.2013, 20:15  
sslobodyan
Частый гость
 
Регистрация: 14.06.2006
Сообщений: 40
Сказал спасибо: 20
Сказали Спасибо 10 раз(а) в 5 сообщении(ях)
sslobodyan на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от swat24 Посмотреть сообщение
Но я спрашивал немного про другое. К моему массиву с результатом может обращаться только или подпрограмма по просчету средних значений, или из главного цикла (и обращение к определенным элементам массива в разный момент времени). Т.е. не будет ли проблемой при чтении массива в главном цикле вызванное прерывание ПДП с запуском подпрограммы подсчета средних значений?
Ну я же написал как. В функции усреднения, которая дергается из прерывания, сбрасывай флаг. А в главном цикле сначала взведи флаг, потом читай массив и потом проверь флаг. Если он сброшен, значит пока читали массив, сработало прерывание и массив возможно считан неправильно. Тогда опять взводи флаг и повторно перечитай массив.
sslobodyan вне форума  
Непрочитано 19.09.2013, 20:54  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

То есть ДМА пишет в массив1, прерывание читает массив1 и складывает усредненные результаты в массив2, основной цикл читает массив2? Никаких аппаратных проблем, возможны только программные - если усредненные результаты одного преобразования допустим в районе 40...50, а второго - 70...80, то после случайного прерывания "усредненные" данные резко изменятся с 45 на 75... Поэтому лучше работать по флагам, как рекомендует sslobodyan
niXto вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


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