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

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

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

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

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

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


 
Опции темы

STM32F103, непонятки с DMA

Непрочитано 15.11.2014, 13:49  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Сообщение от niXto Посмотреть сообщение
Что за дебри?
Дебри gdbg

P.S. Мастдайку и прочую пиратчину не предлагать!
Реклама:
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 15.11.2014 в 13:55.
eddy вне форума  
Непрочитано 15.11.2014, 13:57  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Да не слушай ты никого! Отлаживать периферию пошагово полный бред! За это время уже смастерил бы или купил анализатор, толку больше бы было.
STM32F0 вне форума  
Непрочитано 15.11.2014, 14:50  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Сообщение от eddy Посмотреть сообщение
P.S. Мастдайку и прочую пиратчину не предлагать!
Гордый какой!

P.S.
Нашёл проблему на ровном месте...
Поставь лицензионную.
omercury вне форума  
Непрочитано 15.11.2014, 15:08  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Сообщение от STM32F0 Посмотреть сообщение
За это время уже смастерил бы или купил анализатор, толку больше бы было.
Осциллограф есть!
А для дома купил китайский клон saleae, жду.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 15.11.2014, 15:54  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Сообщение от eddy Посмотреть сообщение
А для дома купил китайский клон saleae, жду.
Этот пока не спасёт?
omercury вне форума  
Непрочитано 15.11.2014, 15:54  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Сообщение от eddy Посмотреть сообщение
А для дома купил китайский клон saleae, жду.
То есть пиратчину всё-таки приветствуете
И только некоторые обстоятельства не позволяют пользоваться для работы нормальной ОСью, где всё просто, удобно и интуитивно понятно...
niXto вне форума  
Непрочитано 15.11.2014, 16:22  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Сообщение от niXto Посмотреть сообщение
И только некоторые обстоятельства не позволяют пользоваться для работы нормальной ОСью, где всё просто, удобно и интуитивно понятно...
Ну вот не надо чушь про мастдайку нести, ладно? Это убожество вообще операционной системой недостойно называться! Только как пускалка игрулек и годится. Говно, одним словом.

Ну, а по делу: почитал я даташит. Понял, как установить нужный уровень сигнала: т.к. у меня polarity = "active low", то достаточно сделать при инициализации (а также в прерыванях по окончанию передачи) TIM2_CCR4 = 0. Однако, оказывается, чтобы занести значение в TIM2_CCR4, нужно сгенерировать update event (то-то у меня и был первый импульс каким-то идиотским). И если первый update event, а также он самый из прерывания, нормально срабатывают, и рабочий уровень сигнала держится на 1, то внутри функции сброса шины 1-wire почему-то генерируется прерывание, хоть UEV и не должен его генерировать (да и я явно запрещаю прерывания до настройки).

Буду дальше ковырять даташит.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 15.11.2014, 17:31  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Итак, чушь у меня получалась потому, что как только я запускал таймер, генерировалось событие обновления, которое вызывало срабатывание прерывания и получалось, что я сразу же отрубал таймер. Сделал вот так:
Код:
void ow_reset(){
	ow_done = 0;
	rstat = 0;
	TIM2_SR = 0; // clear all flags
	TIM2_DIER = 0; // disable timer interrupts
	TIM2_ARR = OW_RESET_TIME; // set period to 1ms
	TIM2_CCR4 = OW_RESET; // zero pulse length
	TIM2_EGR = TIM_EGR_UG; // update values of ARR & CCR4
	TIM2_CR1 |= TIM_CR1_OPM | TIM_CR1_CEN; // we need only single pulse & run timer
	TIM2_SR = 0; // clear update flag generated after timer's running
	TIM2_DIER = TIM_DIER_UIE | TIM_DIER_CC3IE; // generate interrupts on update event & cc
	nvic_enable_irq(NVIC_TIM2_IRQ);
}
т.е. сбросил все флаги перед тем, как разрешить прерывания. В итоге прерывание на UEV возникает как раз когда надо — после одного отрабатывания. Ну, а в прерывании уже вырубаю все, устанавливаю правильный уровень сигнала и сохраняю значение CCR3:
Код:
void tim2_isr(){
	if(TIM2_SR & TIM_SR_UIF){ // update interrupt
		TIM2_SR &= ~TIM_SR_UIF; // clear flag
		TIM2_DIER = 0; // disable all timer interrupts
		TIM2_CCR4 = 0; // set output value to 1
		TIM2_EGR |= TIM_EGR_UG; // generate update event to change value in CCR4
		TIM2_CR1 &= ~TIM_CR1_CEN;    // timer_disable_counter(TIM2);
		nvic_disable_irq(NVIC_TIM2_IRQ);
		ow_done = 1;
	}
	if(TIM2_SR & TIM_SR_CC3IF){ // we need this interrupt to store CCR3 value
		TIM2_SR = 0; // clear flag (we've manage TIM_SR_UIF before, so can simply do =0)
		rstat = TIM2_CCR3;
	}
}
Вот, правда, иной раз возникают импульсы длиной 1мкс после отработки.
Не могу найти в даташите, как заставить в режиме one-pulse не изменять значение выхода после завершения работы таймера.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 15.11.2014, 17:46  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Все. Теперь остается причесать функции по генерированию ШИМа при помощи DMA, да допилить протокол.

Воистину, библиотеки - зло! Выпиливание функций opencm и замена пяти-семи функций на одно выражение вида регистр=значение неплохо так код подсократило: уже полтора килобайта ушло!
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 15.11.2014 в 18:44.
eddy вне форума  
Непрочитано 16.11.2014, 13:56  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: STM32F103, непонятки с DMA

Это херня! Абстрагируйся от прежнего АВР/ПИК хлама.
Вот так должен выглядеть майн:
Код:
  
GPIO_Init();  
TIM2_Init();
__enable_interrupt();

TIM2-›CR1 |= TIM2_CR1_CEN;

while(1);
Это от СТМ8, но суть та же.
И одно прерывание, для контроля состояния линии. Всё, больше никакие функции для работы с 1-wire там не нужны! Дальше как обычно, вытаскиваем из байтов температуру, считаем КС и т.д..
STM32F0 вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32 - Tips 'N Tricks nahimovv ARM 28 14.10.2024 06:42
STM32F103 ADC+DMA Nik_UFO Микроконтроллеры, АЦП, память и т.д 11 24.08.2016 11:57
Tim19 -> DMA -> значение ADC в memory kvark85 ARM 6 03.06.2014 15:00
STM32 Повторный запуск DMA Nik_UFO Микроконтроллеры, АЦП, память и т.д 2 07.03.2012 17:38
DMA в ATxmega vav618 Микроконтроллеры, АЦП, память и т.д 1 03.04.2010 10:57


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.