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

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

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

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

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

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


 
Опции темы
Непрочитано 22.07.2013, 11:43  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Не знаю что у вас за задача и что за камень, но похоже вы и сами плохо представляете что к чему. Рассмотрите несколько вариантов, возможно вы удивитесь узнав, что DMA вам может быть и не нужно, и что DMA - не всегда быстро.
Цитата:
niXto, Добрый день. А как лучше останавливать поток DMA или запускать по требованию преобразование АЦП?
Ответа вы не услышите, он знает по STM32 меньше школьника коррекционной группы, но что-то пытается вставить, "писатель, аднака".
Реклама:
nahimovv вне форума  
Непрочитано 22.07.2013, 13:38  
swat24
Гражданин KAZUS.RU
 
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
swat24 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Камень STM32F407IGT6. Поидее его хватит с головой. А задачу я немного описывал выше. Нужно максимально быстро оцифровать аналоговый сигнал. Сигнал имеет вид импульса. Передний фронт очень затянутый, потом резкий спад. И так несколько импульсов. Длительность всего импульса 1-2 мс. Но интересуют моменты начала спада и нарастания. Где происходит вибрация. Длительность импульсов на этих участках сказать не могу. Поэтому и хочу максимум, что можно выжать с используемого камня.
Когда использовал PIC18F4550, то импульс получался очень примерным. Т.е. не видно вибраций на вершине и внизу графика.

Дело даже не в скорости обработки, а в количестве результатов.
Из-за этого и думаю, что использовать проц для перезаписи из АЦП в SRAM 512К результатов это лишняя трата времени и ресурсов...

Последний раз редактировалось swat24; 22.07.2013 в 13:45.
swat24 вне форума  
Непрочитано 22.07.2013, 14:03  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Пройдитесь поиском по элху, там такое поднималось.
Цитата:
Из-за этого и думаю, что использовать проц для перезаписи из АЦП в SRAM 512К результатов это лишняя трата времени и ресурсов...
На данном камне - может быть, на F1xx - я бы уже задумался.
nahimovv вне форума  
Непрочитано 22.07.2013, 17:34  
Impartial
Прописка
 
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
Impartial на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от swat24 Посмотреть сообщение
Длительность всего импульса 1-2 мс
Максимальную скорость, которую можно выжать из 407 - 6 мегасемплов тремя АЦП в режиме чередования. Стоит ли морочить голову с внешним озу для 6000-12000 выборок? Во внутреннем озу там достаточно места.
А чтобы не мешать ДМА разместите данные своей программы в CCM RAM.

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

в 407IG 192+4 кб озу. чего явно не достаточно для того, что хочу сделать. Флеш планирую ставить на 512К слов. - 1 МБ.
А на счет ацп попробую со встроенным и со внешнем. т.к. никогда их не использовал еще.

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

Сообщение от swat24 Посмотреть сообщение
в 407IG 192+4 кб озу.
Для ДМА - только 128к, 64к ССМ для него недоступны (только через процессор)
niXto вне форума  
Непрочитано 22.07.2013, 21:00  
swat24
Гражданин KAZUS.RU
 
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
swat24 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Так, вроде получилось. При прерывании ДМА о завершении заполнения буфера, выключаю АЦП и начинаю обработку. После обработки массива опять включаю ацп и стартую начало измерения.
Только сейчас немного странно прыгают результаты... Сейчас еще посмотрю. При повторном старте, иногда, каналы меняются местами. Т.е. оцифрованое с первого канала попадает на второе слово в памяти, а результат второго канала на первое слово...

niXto, хоть 128к, хоть 192 к все равно мало... поэтому и внешнюю беру.

Последний раз редактировалось swat24; 22.07.2013 в 21:43.
swat24 вне форума  
Непрочитано 30.07.2013, 08:47  
TAutomatic
Временная регистрация
 
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
TAutomatic на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Добрый день, коллеги.
Есть одна непонятка с работой EXTI, контроллер STM32F100.
Есть такой код инициализации прерываний от двух портов по обоим фронтам:
Код:
void InitExtInterrupt()
{
RCC_APB2PeriphClockCmd(RCC_APB2ENR_AFIOEN , ENABLE); //альтернативные функции пинов

AFIO-›EXTICR[PinSet1››0x02]&=  ~AFIO_EXTICR2_EXTI6_PB;
AFIO-›EXTICR[PinSet2››0x02]&=  ~AFIO_EXTICR2_EXTI7_PB;	 

AFIO-›EXTICR[PinSet1››0x02]|=  AFIO_EXTICR2_EXTI6_PB;
AFIO-›EXTICR[PinSet2››0x02]|=  AFIO_EXTICR2_EXTI7_PB;
	 
EXTI-›IMR  |=EXTI_IMR_MR6|EXTI_IMR_MR7;//
	
EXTI-›FTSR |=EXTI_FTSR_TR6|EXTI_FTSR_TR7;// Событие по спаду 	  |EXTI_FTSR_TR0
	
EXTI-›RTSR |=EXTI_RTSR_TR6|EXTI_RTSR_TR7;// Событие по фронту			

NVIC_EnableIRQ (EXTI9_5_IRQn);	  
}
Ну и обработчик прерываний:
Код:
void EXTI9_5_IRQHandler(void)
{   
if (EXTI-›PR & (1‹‹PinSet1))
  {
   .................
   ChangeModeStatus = 1;	
   EXTI-›PR |= 1‹‹PinSet1;
  }		

if (EXTI-›PR & (1‹‹PinSet2))		  	
  {
   ..................
   ChangeModeStatus = 1;	
   EXTI-›PR |= 1‹‹PinSet2;	
   }
}
Непонятный момент состоит в том, что если установлены оба флага прерывания, например, если объединить оба входа и подавать один сигнал, то при сбросе флага прерывания от одного источника сбрасывается и второй флаг. Есть опасность потерять необработанное прерывание. В еррате ничего про это не сказано, ни с чем подобным ранее не сталкивался. Прошу подсказки.
TAutomatic вне форума  
Непрочитано 30.07.2013, 09:06  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от TAutomatic Посмотреть сообщение
В еррате ничего про это не сказано, ни с чем подобным ранее не сталкивался. Прошу подсказки.
NVIC это ядро , посему и читать надо не в даташите и еерате .
Читайте на тему приоритета прерываний и вообще что такое NVIC
Nested Vectored Interrupt Controller
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 30.07.2013, 09:59  
TAutomatic
Временная регистрация
 
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
TAutomatic на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

А при чем тут приоритет прерывания и все остальное?
В системе нет других приоритетов, ранжировать нечего.
Да и EXTI вроде как не к ядру относится, а к периферии.
Я вроде объяснил, в чем проблема. Попробую еще раз.
Если одним сигналом вызвать оба прерывания, как и положено, вызывается обработчик. И я вижу, что установлены оба флага, как и должно быть. Но при сбросе флага первого прерывания записью единички в соответствующий разряд сбрасывается и соседний. Тоесть фактически второе условие всегда дает ложь. Вот в этом и проблема?
Я не прав, что к периферии относится? Может тогда скажете, что конкретно в NVIC не так, вместо того, что бы отправлять что-то читать целыми главами и книгами...
TAutomatic вне форума  
 

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

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

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, время: 19:00.


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