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

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

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

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

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

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


 
Опции темы
Непрочитано 24.03.2015, 09:36  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Это же антилоп-гну!
Та да, на пингуина как бы совсем не похож.
Сообщение от eddy Посмотреть сообщение
это у тебя косяк, т.к. таймеры абсолютно идентичны".
Не абсолюьно, но в целом.
Сообщение от eddy Посмотреть сообщение
могу и 2-3 дня убить, методом тыка "отлаживая".
Если такая тяга к садомазохизму, юзай тестовые светодиоды, вывод через ЮАРТ. Отладочную информацию как-то получать то надо?
Реклама:
STM32F0 вне форума  
Непрочитано 24.03.2015, 10:15  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от STM32F0 Посмотреть сообщение
вывод через ЮАРТ
Им и пользуюсь, только не UART, а USB.
Проблему решил выкидыванием таймера. Причину зависона понял: почему-то я считал, что у меня частота APB1 == 72МГц (хотя там 36МГц), соответственно, в prescaler выставлял 71. Таймер 1 сидит на APB2, у которой частота 72 → период получился реально 1мкс, а не 2мкс как было раньше, и функции, похоже, просто не успевали завершиться до срабатывания таймера. В итоге происходила хрень, когда функция еще не закончилась, а из прерывания уже ее опять вызвали.
А может я и не прав и там какая-то магия.

Так как задержки там микросекундные, я решил не мудрствовать лукаво и поступить, как делают аврщики:
Код:
	us *= 72;
	for (i = 0; i ‹ us; i++) __asm__("nop");
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 24.03.2015, 10:21  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну не все даже AVR щики так делают. Ибо сначала определяют сколько тактов процессора будет выполняться этот цикл. И уж 72 точно станет меньше 24
Boba_spb вне форума  
Непрочитано 24.03.2015, 10:35  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Проблему решил выкидыванием таймера.
Предлагаю более радикальный метод - выкинуть МК! Это настоящее решение всех проблем!
Сообщение от eddy Посмотреть сообщение
Так как задержки там микросекундные, я решил не мудрствовать лукаво и поступить, как делают аврщики
Вперёд к прошлому!
(слов нет)
STM32F0 вне форума  
Непрочитано 24.03.2015, 10:37  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Во, нагуглил более подходящий способ микросекундных задержек: на измерении количества тактов.
Код:
#define    DWT_CYCCNT    *(volatile uint32_t *)0xE0001004
#define    DWT_CONTROL   *(volatile uint32_t *)0xE0001000
#define    SCB_DEMCR     *(volatile uint32_t *)0xE000EDFC
	us *= 72;
	SCB_DEMCR  |= 0x01000000;
	DWT_CYCCNT  = 0;
	DWT_CONTROL|= 1;
	while(DWT_CYCCNT ‹ us);
Конечно, получается малость побольше, но мне важно именно минимальную задержку выдержать, чтобы у затвора переходные процессы успели пройти.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 24.03.2015, 10:56  
Wiza_
Почётный гражданин KAZUS.RU
 
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
Wiza_ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Так как задержки там микросекундные, я решил не мудрствовать лукаво и поступить, как делают аврщики
Сорри за оффтоп: А как же "говнокод" с "ногодрыгом" ?
Wiza_ вне форума  
Непрочитано 24.03.2015, 11:18  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Wiza_, пусть у меня лучше TIM1 в резерве будет, нежели я и его задействую для микросекундных пауз.
Хотя, конечно, можно запускать таймер в режиме "одновибратора", но не асинхронно, а ожидать, пока он отработает.
Те же яйца, только в профиль.

У меня подобная хрень была с реализацией программного I2C на STM8: сначала хотел по-кошерному, на таймерах (DMA там нет, поэтому жопа), но т.к. скорость слишком высока, в прерываниях ничего не выходит сделать, т.е. таймер можно использовать лишь для сравнительно точных пауз.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 24.03.2015, 11:27  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Конечно, получается малость побольше, но мне важно именно минимальную задержку выдержать, чтобы у затвора переходные процессы успели пройти.
М-м. Не понял соли.
Пины ногодрыгом управляются что ли?
omercury вне форума  
Непрочитано 24.03.2015, 11:43  
Wiza_
Почётный гражданин KAZUS.RU
 
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
Wiza_ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
пусть у меня лучше TIM1 в резерве будет
Так и я о том же ! "Если можешь сделать без лишней периферии - делай без неё". А то выводы о "коровости говнокода" в последнее время встречаются... слишком неуместно
Wiza_ вне форума  
Непрочитано 24.03.2015, 11:49  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Wiza_, Ну дык не каждому это дано .
Это всего лишь ляпы eddy и не более, выводы о говнокоде в силе ...
__________________
Осторожно , злой кот
dosikus вне форума  
 

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

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

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:16.


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