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

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

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

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

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

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


 
Опции темы
Непрочитано 27.12.2020, 21:06  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy, Выход устанавливается в полярность которую задаешь в конфигурации выхода TIM1-›CCER или я чего то не понял?.
Реклама:
sat_art вне форума  
Непрочитано 27.12.2020, 21:09  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

sat_art, ну так мне нужно, чтобы в активном состоянии была единица, а в пассивном - нуль. Однако, после UE независимо от значения CCR1 выставляется единица. А через ~120нс проверяется значение CCR1, и если оно нулевое, то выставляется нуль...
Вот такие, блин, пироги!
Лет 5 назад, когда я ковырялся с 1-wire (но тогда не на CMSIS, а с opencm3), намучился с этим лишним импульсом. Но там частота маленькая, так что можно было в прерывании таймера выставлять линию в нуль.
В данном же случае такое не прокатывает!

В общем, лишнее доказательство говнистости STM32F103: на F0x2 я таких косяков не припомню. Но думал же, что у 103 шина пошустрей, плюс аппаратное деление есть - как раз, что нужно для работы с адресуемыми светодиодами, чтобы панель 20×30 хотя бы 30 раз в секунду обновлять…
__________________
Смерть бандеровской мразоте!

Последний раз редактировалось eddy; 27.12.2020 в 21:14.
eddy вне форума  
Непрочитано 27.12.2020, 21:16  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy, Ну тогда можно PWM режим. И значения от верха таймера. Тогда будет красиво.
sat_art вне форума  
Непрочитано 27.12.2020, 22:21  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 683
Сказал спасибо: 362
Сказали Спасибо 757 раз(а) в 359 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Дело в том, что я для светодиодной ленты на WS2815 код выдумываю.
Возможно, пригодится подход с использованием SPI+DMA или USART+DMA.
Чтобы не быть многословным, вот ссылка на статью, где описан принцип формирования сигнала для таких светиков. Правда, для передачи 1 байта цвета потребуется 4 байта ОЗУ.

Это как вариант; понятно, что можно делать разными способами.
Ногодрыг не рассматривается
В STM32F0xx выхлоп USART можно инвертировать настройкой, что есть гуд.
j-Roger вне форума  
Непрочитано 27.12.2020, 23:56  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от j-Roger Посмотреть сообщение
Правда, для передачи 1 байта цвета потребуется 4 байта ОЗУ
Или с любым таймером но 8 байт на цвет.
sat_art вне форума  
Непрочитано 28.12.2020, 19:21  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sat_art Посмотреть сообщение
И значения от верха таймера
Нет, не получается так. Либо в конце будет опять единица, либо на выходе инверсный сигнал (т.е. ничего передать не получится).
Похоже, задача абсолютно нерешаема на STM32F103 в общем случае. Только в частных…
__________________
Смерть бандеровской мразоте!

Последний раз редактировалось eddy; 28.12.2020 в 19:41.
eddy вне форума  
Непрочитано 28.12.2020, 20:12  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сделал два варианта: для больших и маленьких скоростей:
Код:
void hw_setup(){
    gpio_setup();
    RCC-›APB2ENR |= RCC_APB2ENR_TIM1EN; // enable TIM1 clocking
    TIM1-›ARR = 8; // 9 ticks till UEV
#ifdef HIGHSPEED
    TIM1-›PSC = 7;
#else
    TIM1-›PSC = 6999;
#endif
    // PWM mode 1 (active-›inactive)
    TIM1-›CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1;
    // main output
    TIM1-›BDTR = TIM_BDTR_MOE;
    // main PWM output
    TIM1-›CCER = TIM_CCER_CC1E;
#ifndef HIGHSPEED
    NVIC_EnableIRQ(TIM1_CC_IRQn);
#endif
    RCC-›AHBENR |= RCC_AHBENR_DMA1EN; // DMA1 clocking
    // memsize 8bit, periphsize 16bit, memincr, circular, mem2periph, half & full transfer interrupt
    DMA1_Channel5-›CCR = DMA_CCR_PSIZE_0 | DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE;
    DMA1_Channel5-›CPAR = (uint32_t)&TIM1-›CCR1;
    NVIC_EnableIRQ(DMA1_Channel5_IRQn);
}
Код:
#ifndef HIGHSPEED
void tim1_cc_isr(){
    TIM1-›SR = 0;
    TIM1-›CCR1 = 0;
    TIM1-›DIER = 0;
}
#endif

void dma1_channel5_isr(){
    if(DMA1-›ISR & DMA_ISR_TCIF5){ // transfer complete - stop
        TIM1-›CR1 |= TIM_CR1_OPM;
        // THIS IS A DIRTY HACK! IT WORKS ONLY @ HIGH SPEEDS, WHEN THERE'S NO TIME TO GO INTO IRQ
        // On small frequencies comment this line and allow CC1 IRQ
#ifdef HIGHSPEED
        TIM1-›CCR1 = 0;
#else
        TIM1-›DIER = TIM_DIER_CC1IE;
#endif
    }
    DMA1-›IFCR = DMA_IFCR_CGIF5;
}

uint8_t dmabuff[] = {3,6,3,3,6,6,3,6};

static void sendone(){
    TIM1-›CR1 = 0; // stop
    DMA1_Channel5-›CCR &= ~DMA_CCR_EN; // disable DMA to reconfigure
    TIM1-›DIER = TIM_DIER_UDE; // enable DMA requests
    DMA1-›IFCR = DMA_IFCR_CGIF5;
    DMA1_Channel5-›CNDTR = 8;
    DMA1_Channel5-›CMAR = (uint32_t)dmabuff;
    DMA1_Channel5-›CCR |= DMA_CCR_EN; // start DMA
    TIM1-›CR1 = TIM_CR1_CEN | TIM_CR1_URS;// | TIM_CR1_DIR;
}
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 03.01.2021, 17:10  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy,
Код:
void hw_setup(){
        gpio_setup();
	RCC-›APB2ENR |= RCC_APB2ENR_TIM1EN; // enable TIM1 clocking
	TIM1-›ARR = 8; // 9 ticks till UEV
	TIM1-›PSC = 6999;
	TIM1-›CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2| TIM_CCMR1_OC1PE;
	TIM1-›BDTR = TIM_BDTR_MOE;
	TIM1-›CCER = TIM_CCER_CC1E;
	
 	RCC-›AHBENR |= RCC_AHBENR_DMA1EN; 
 	DMA1_Channel2-›CCR = DMA_CCR_PSIZE_0 | DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE;
 	DMA1_Channel2-›CPAR = (uint32_t)&TIM1-›CCR1;
 	NVIC_EnableIRQ(DMA1_Channel2_IRQn);
}

uint8_t dmabuff[] = {3,6,3,3,6,6,3,6,0};
	
	
void sendone(){
	TIM1-›CCR1=dmabuff[0];
	TIM1-›CR1 = 0; // stop
	DMA1_Channel2-›CCR &= ~DMA_CCR_EN; // disable DMA to reconfigure
	TIM1-›DIER = TIM_DIER_CC1DE; // enable DMA requests
	DMA1-›IFCR = DMA_IFCR_CGIF2;
	DMA1_Channel2-›CNDTR = 8;
	DMA1_Channel2-›CMAR = (uint32_t)dmabuff+1;
	DMA1_Channel2-›CCR |= DMA_CCR_EN; // start DMA
	TIM1-›CR1|= TIM_CR1_CEN;
}

void DMA1_Channel2_IRQHandler()
{
	if(DMA1-›ISR & DMA_ISR_TCIF2)
	{
		TIM1-›CR1 |= TIM_CR1_OPM;
		DMA1-›IFCR = DMA_IFCR_CGIF2;
	}
	
}
sat_art вне форума  
Непрочитано 03.01.2021, 17:41  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

sat_art, и самый первый импульс канет в Лету, т.к. UEV при старте таймера пнет DMA…
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 03.01.2021, 17:44  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy,
DMA по сравнению сработает.
sat_art вне форума  
 

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

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

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


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