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

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

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

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

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

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


 
Опции темы
Непрочитано 22.02.2017, 14:34  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Чего в RM0008 не сильно то описан модуль прерываний NVIC,статью нашел http://mcucpu.ru/index.php/platformy...vaniya-v-stm32
Реклама:
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 22.02.2017, 15:24  
eenote
Частый гость
 
Регистрация: 11.02.2017
Сообщений: 25
Сказал спасибо: 11
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
eenote на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

CERGEI1982, NVIC это ядро и надо читать документацию от арм .
eenote вне форума  
Непрочитано 22.02.2017, 15:48  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

От АРМ не обязательно. Нужно тоже читать от СТМ, только док называется Programming manual, на Cortex M3 это PM0056.
NewWriter вне форума  
Непрочитано 22.02.2017, 20:24  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Если хотите точно отмерить очень малые интервалы - вставляйте ассемблерные вставки nop-ов или циклов. И в эту задержку закладывайте время исполнения действий.
В любом случае - одну микросекунду - подождете, не опоздаете.
Вы просто шутите или у вас это от белой горячки?
STM32F0 вне форума  
Непрочитано 25.02.2017, 04:09  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Создал файл main.h и подключил в main.c. Перекидываю в main.h определения define ,а в main.c он их не видит define из main.h . Пути прописаны все в конфиге. Чего ему надо не пойму.

main.h
Код:
#ifdef MAIN_H
#define MAIN_H

#define    DWT_CYCCNT    *(volatile unsigned long *)0xE0001004
#define    DWT_CONTROL   *(volatile unsigned long *)0xE0001000
#define    SCB_DEMCR     *(volatile unsigned long *)0xE000EDFC


#endif
main.c
Код:
#include "main.h"
#include "init.h"

#define RTE_DEVICE_STDPERIPH_GPIO
#define RTE_DEVICE_STDPERIPH_RCC

#include "stm32f10x.h"
#include "stm32f10x_conf.h"


//void init(void);

uint16_t delay_count=0;
uint16_t flag_count=0;
uint16_t dwt=0;
uint16_t i=0;

void SysTick_Handler(void)  // 1 ms
{
	delay_count++;
	if(delay_count==500)
	{
		delay_count=0;
		flag_count=1;
	}
	dwt=DWT_CYCCNT;
	DWT_CYCCNT = 0;
	if(i)
	{ GPIO_SetBits(GPIOC,GPIO_Pin_14); i=0;}
	else { GPIO_ResetBits(GPIOC,GPIO_Pin_14); i=1;}
}

int main()
{
	init();
	while(1)
	{
		
		GPIO_SetBits(GPIOC,GPIO_Pin_13);
		while(!flag_count) ;
		flag_count=0;
		GPIO_ResetBits(GPIOC,GPIO_Pin_13);
		while(!flag_count) ;
		flag_count=0;
	}
	
}
Миниатюры:
Нажмите на изображение для увеличения
Название: 2017-02-25_08-07-06.png
Просмотров: 0
Размер:	78.2 Кб
ID:	110857   Нажмите на изображение для увеличения
Название: 2017-02-25_08-07-20.png
Просмотров: 0
Размер:	79.2 Кб
ID:	110858   Нажмите на изображение для увеличения
Название: 2017-02-25_08-08-31.png
Просмотров: 0
Размер:	67.2 Кб
ID:	110859  

Нажмите на изображение для увеличения
Название: 2017-02-25_08-08-56.png
Просмотров: 0
Размер:	119.2 Кб
ID:	110860  
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 25.02.2017, 04:34  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

а там разве первым не #ifndef MAIN_H должен быть?
А так, если MAIN_H не определён, что собственно и есть, то всё в этом main.h пропускается препроцессором. Я так понимаю...
H4LF вне форума  
Сказали "Спасибо" H4LF
CERGEI1982 (25.02.2017)
Непрочитано 25.02.2017, 05:20  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от H4LF Посмотреть сообщение
а там разве первым не #ifndef MAIN_H должен быть?
А так, если MAIN_H не определён, что собственно и есть, то всё в этом main.h пропускается препроцессором. Я так понимаю...
Ой точно,простите за глупый вопрос,спасибо.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 28.02.2017, 03:16  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Такты самого таймера для подавления шумов ? Нужно при тактировании с внешним сигналом таймера? Думаю для внутренего тактирования без надобности.
Код:
Bits 9:8 CKD[1:0]: Clock division
This bit-field indicates the division ratio between the timer clock (CK_INT) frequency and the
dead-time and sampling clock (tDTS)used by the dead-time generators and the digital filters
(ETR, TIx),
00: tDTS=tCK_INT
01: tDTS=2*tCK_INT
10: tDTS=4*tCK_INT
11: Reserved, do not program this value
Также хотел спросить по поводу TIM_RepetitionCounter, это как я понял через сколько тактов таймера будет обновляться прескалер и срабатывать событие ?
Ну и жирные же таймеры в стм,по сравнению с пиком.
Миниатюры:
Нажмите на изображение для увеличения
Название: 2017-02-28_07-09-33.png
Просмотров: 0
Размер:	57.8 Кб
ID:	111080   Нажмите на изображение для увеличения
Название: 2017-02-28_07-20-36.png
Просмотров: 0
Размер:	82.1 Кб
ID:	111081  
__________________
Глаза боятся,а руки делают.

Последний раз редактировалось CERGEI1982; 28.02.2017 в 03:21.
CERGEI1982 вне форума  
Непрочитано 28.02.2017, 22:53  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от CERGEI1982 Посмотреть сообщение
TIM_RepetitionCounter
Это число циклов счета от 0 до ARR (при счете вверх, при счете вниз - наоборот, от ARR до 0), в течение которых не будет фиксироваться событие UEV (Update Event). Но остальные события - сравнение по каждому каналу - будут фиксироваться КАЖДЫЙ цикл счета от 0 до ARR.
Соответствиенно, от событий UEV и сравнения зависят например запуск DMA или генерация ШИМ, захваты.
Так же, RepetitionCounter влияет на однократный запуск OPM (One-pulse mode). Благодаря этому можно сгенерировать несколько (до 256) циклов счета и автоматически остановиться.
Совместно с режимом PWM можно сгенерировать заданное число (до 256) импульсов на выходном пине. Либо провести несколько измерений частоты входного сигнала.
А в комбинации с другим таймером (который будет являться запускающим), можно организовать автоматические измерения частоты входного сигнала - через некоторые промежутки времени снимаются несколько последовательных замеров частоты входного сигнала.

Например, реальный случай: потребовалась разная частота генерации событий.
PHP код:
/* --------------------------
 * Генератор частоты дискретизации ADC и DAC
 * SampleRate_ADC - частота дискретизации АЦП.
 * DAC_divider - коэфф. уменьшения частоты дискретизации ЦАП относительно АЦП
 */
void SampleRate_Generator_Init(uint32_t SampleRate_ADCuint8_t DAC_divider)
{
    
/* SampleRate = SystemCoreClock / ((PSC+1) * ARR) */
    /* ARR = SystemCoreClock / (SampleRate * (PSC+1)) */

    
RCC-›APB2ENR |= RCC_APB2ENR_TIM1EN;

    
TIM1-›PSC 0;                        //1:1
    
TIM1-›ARR SystemCoreClock / (SampleRate_ADC) - 1;    // частота работы таймера
    
TIM1-›RCR DAC_divider-1;                // коэффициент деления для DAC
    
TIM1-›CCR4 2;                        //  сдвиг события по времени
    
TIM1-›CR2 TIM_CR2_MMS;                // TRGO CCR4 для запуска АЦП
    
TIM1-›CCMR2 TIM_CCMR2_OC4M;                //
    
TIM1-›DIER TIM_DIER_UDE;            // генерация запроса DMA по UEV для PWM-DAC

    
TIM1-›CR1 |= TIM_CR1_CEN;                // запуск генератора


По первой части вопроса. Нет, это так сказать, оверсемплинг, при работе с цифровой фильтрацией при захвате внешнего сигнала. Актуально только при включенном делителе шины, от которой тактируется таймер.

Кстати, у таймеров есть очень удобный режим работы с инкрементальными энкодерами.

Последний раз редактировалось NewWriter; 28.02.2017 в 23:46.
NewWriter вне форума  
Сказали "Спасибо" NewWriter
majorka65 (01.03.2017)
Непрочитано 01.03.2017, 16:32  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Получается в вашем коде TIM1-›RCR это настроено событие для DMA через UEV,который в свою очередь запускает ЦАП, а для АЦП уже без деления TIM1-›RCR через TRGO. Таймер управляет сразу запуском АЦП и ЦАП.
UEV это же событие переполнения,до нуля и т.д.,в голове маленько каша от битов. UG еще есть:
Код:
if the URS bit (update request selection) in
TIMx_CR1 register is set, setting the UG bit generates an update event UEV but without setting the UIF flag (thus no interrupt or DMA request is sent).
Как я уже сообразил по блок схеме. Таймер может работать как в Master режиме так и Slave. И в зависимости от режима управляет чем то TRGO или управляется TRGI.
__________________
Глаза боятся,а руки делают.

Последний раз редактировалось CERGEI1982; 01.03.2017 в 16:45.
CERGEI1982 вне форума  
 

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

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

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


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