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

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

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

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

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

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


 
Опции темы
Непрочитано 21.09.2017, 23:51  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию STM32F4 и RTC

Помогите пожалуйста. Часы тикают, но не происходит прерывание... На F100 помню было очень удобно, там хорошо реализовано прерывание каждую секунду. А на F4 такого нет, приходится делать через ALARM.

Код:
void RTC_Alarm_IRQHandler(){
	if(RTC-›ISR & RTC_ISR_ALRAF){
		RTC-›ISR = ~RTC_ISR_ALRAF;
		GPIOB-›ODR ^= 0x4000;
	}
}

void rtc_ini(void){
	RCC-›APB1ENR |= RCC_APB1ENR_PWREN;
	PWR-›CR |= PWR_CR_DBP; //Open access to Backup regs
	RCC-›BDCR |= RCC_BDCR_BDRST;
	RCC-›BDCR &= ~RCC_BDCR_BDRST;
	RCC-›BDCR |= RCC_BDCR_LSEON;
	while(!(RCC-›BDCR & RCC_BDCR_LSERDY)){}
	RCC-›BDCR |= RCC_BDCR_RTCSEL_0;
	RCC-›BDCR |= RCC_BDCR_RTCEN;
	RTC_WaitForSynchro();
	RTC-›WPR = 0xCA; //Open access to RTC
	RTC-›WPR = 0x53; //Open access to RTC
	RTC-›CR &= ~RTC_CR_FMT;	//24h format		
	RTC-›PRER |= 0xFF;
	RTC-›PRER |= (uint32_t)(0x7F ‹‹ 16);	
	//Alarm
	RTC-›CR &= ~RTC_CR_ALRAE;
	while(!(RTC-›ISR & RTC_ISR_ALRAWF)){}	
	RTC-›ALRMAR |= RTC_ALRMAR_MSK1 | RTC_ALRMAR_MSK2 | RTC_ALRMAR_MSK3;
	RTC-›ALRMAR |= RTC_ALRMAR_SU_0 | RTC_ALRMAR_SU_1;	
	RTC-›CR |= RTC_CR_ALRAE;
	RTC-›CR |= RTC_CR_ALRAIE;
  RTC-›ISR = ~RTC_ISR_ALRAF;
	RTC-›WPR = 0xFF; //Close access to RTC
	NVIC_EnableIRQ(RTC_Alarm_IRQn);	
}
вот сюда RTC-›ALRMAR |= RTC_ALRMAR_SU_0 | RTC_ALRMAR_SU_1; я подставлял разные значения. Не помогает. Что-то упустил, подскажите пожалуйста, что?
Реклама:
supercelt вне форума  
Непрочитано 22.09.2017, 00:31  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

В чипах F4 прерывание от часов замаплено куда-то на линию EXTI, смотри референс на свой чип (примерно на EXTI-18 кажется)
Hives вне форума  
Непрочитано 23.09.2017, 00:42  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Заработало

Код:
void RTC_Alarm_IRQHandler(){
	if(RTC-›ISR & RTC_ISR_ALRAF){
		RTC-›ISR = ~RTC_ISR_ALRAF;
		EXTI-›PR = ~EXTI_PR_PR17;
		GPIOB-›ODR ^= 0x4000;
	}
}

void rtc_ini(void){
	RCC-›APB1ENR |= RCC_APB1ENR_PWREN;
	PWR-›CR |= PWR_CR_DBP; //Open access to Backup regs
	RCC-›BDCR |= RCC_BDCR_BDRST;
	RCC-›BDCR &= ~RCC_BDCR_BDRST;
	RCC-›BDCR |= RCC_BDCR_LSEON;
	while(!(RCC-›BDCR & RCC_BDCR_LSERDY)){}
	RCC-›BDCR |= RCC_BDCR_RTCSEL_0;
	RCC-›BDCR |= RCC_BDCR_RTCEN;
	RTC_WaitForSynchro();
	RTC-›WPR = 0xCA; //Open access to RTC
	RTC-›WPR = 0x53; //Open access to RTC
	RTC-›CR &= ~RTC_CR_FMT;	//24h format		
	RTC-›PRER |= 0xFF;
	RTC-›PRER |= (uint32_t)(0x7F ‹‹ 16);	
	//Alarm A Every 1 second
	//RTC-›ISR = ~RTC_ISR_ALRAF; //STM32 is stuck
  EXTI-›PR = EXTI_PR_PR17;
	EXTI-›IMR |= EXTI_IMR_MR17;
	EXTI-›EMR &= ~EXTI_EMR_MR17;
	EXTI-›RTSR |= EXTI_RTSR_TR17;	
	NVIC_EnableIRQ(RTC_Alarm_IRQn);
	RTC-›CR &= ~RTC_CR_ALRAE;
	while(!(RTC-›ISR & RTC_ISR_ALRAWF)){}	
	RTC-›ALRMAR |= RTC_ALRMAR_MSK1 | RTC_ALRMAR_MSK2 | RTC_ALRMAR_MSK3 | RTC_ALRMAR_MSK4; //Alarm every 1 second
	RTC-›ALRMAR |= RTC_ALRMAR_SU_0; // 1 second in BCD format	
	RTC-›CR |= RTC_CR_ALRAE;
	RTC-›CR |= RTC_CR_ALRAIE;
	RTC-›WPR = 0xFF; //Close access to RTC	
}
Только странно, в даташите сказано, перед настройкой аларм сбросить флаг прерывания, хотя он и так там не стоит . RTC-›ISR = ~RTC_ISR_ALRAF;. Если поставить эту строчку перед алармом, то МК зависает
supercelt вне форума  
Непрочитано 23.09.2017, 10:57  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

маладец, всего 4 ошибки в коде.
1. после включения тактирования надо делать паузу на неск тактов
2. перед выборкой источника тактирования RTC надо маской чистить место под бит
3. при настройке часов надо переходить в режим настройки, видимо поэтому и виснет
4. сброс битов прерывания делается прямой а не инверсной маской в EXTI и прочих
это что сразу в глаза бросилось...
Hives вне форума  
Непрочитано 23.09.2017, 20:34  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Сообщение от Hives Посмотреть сообщение
маладец, всего 4 ошибки в коде.
1. после включения тактирования надо делать паузу на неск тактов
2. перед выборкой источника тактирования RTC надо маской чистить место под бит
3. при настройке часов надо переходить в режим настройки, видимо поэтому и виснет
4. сброс битов прерывания делается прямой а не инверсной маской в EXTI и прочих
это что сразу в глаза бросилось...
А можно подробнее про пункт 2?
И по п. 4. Про EXTI, согласен, в даташите rc_w1. Что значит запись 1. А вот в RTC_ISR - rc_w0. Значит здесь-то ноль записывать?
supercelt вне форума  
Непрочитано 23.09.2017, 22:00  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

2. как то так
RCC-›BDCR = (RCC-›BDCR & (~RCC_BDCR_RTCSEL)) | RCC_BDCR_RTCSEL_0;
выборка источника RTC независимо от того что было до этого.
4. регистр RTC_ISR чистится записью нолей, правильно.
Hives вне форума  
Непрочитано 23.09.2017, 23:00  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Спасибо) осталось только одна загвоздка, не тикает от батарейки, при включении сбрасывает все по нулям(
supercelt вне форума  
Непрочитано 23.09.2017, 23:49  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

а сброс бакап домена убрать из кода не догадался?
Hives вне форума  
Сказали "Спасибо" Hives
supercelt (24.09.2017)
Непрочитано 24.09.2017, 00:18  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Сообщение от Hives Посмотреть сообщение
а сброс бакап домена убрать из кода не догадался?
О, спасибо. Убрал
//RCC-›BDCR |= RCC_BDCR_BDRST;
//RCC-›BDCR &= ~RCC_BDCR_BDRST;
теперь тикают от батарейки. Тогда почему в большинстве уроков про rtc есть эти строки? зачем они тогда нужны?
supercelt вне форума  
Непрочитано 24.09.2017, 00:52  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

уроки писали идиоты, что еще сказать.
Hives вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SDIO на STM32F4 Discovery TmYAG ARM 4 12.10.2016 11:21
RTC - уход мене минуты в год picavr STM8 9 26.07.2015 19:46
Точность RTC STM32F407VG в режиме LSE (внешний кварц 32.768) vvv998 ARM 38 04.12.2014 12:48
Помогите запустить RTC в LPC1768 Chudilo Микроконтроллеры, АЦП, память и т.д 3 28.05.2012 02:24
Вопросик по RTC в LPC23xx serb-radio Микроконтроллеры, АЦП, память и т.д 15 25.05.2011 19:49


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


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