Заметки электроника
Простое - надёжнее!
Меню
  • Главная
  • Погода
  • Заметки
  • Календарь
  • Фотогалерея
  • Песни
  • Чтиво
  • Программы
  • Скачать
  • Связь и ссылки
  • Чехия
  • Lavka

Живёшь в Чехии?

День недели по дате: алгоритм Си

  • Печать
  • E-mail
Информация о материале
Родительская категория: Заметки
Категория: Программирование
Создано: 29 января 2013
Обновлено: 21 сентября 2016
Просмотров: 5667
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

Быстрый алгоритм определения дня недели по дате:

Учтите, что месяц задаётся от 0 (январь) до 11 (декабрь).

Получаемый день недели - от 0 (воскресенье) до 6 (суббота).

unsigned short dayofweek(unsigned short year, unsigned short month, unsigned short day)
{
 unsigned short t1, t2, t2r, t3;
 const unsigned short m[12] = {0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5};
  t1 = year - 2000;
  t2 = t1 / 100;
  t2r = t1 % 100;
  t3 = t1 + (t1 >> 2) - t2 + (t2 >> 2) - 1;
  if ( ((t1 & 0x0003 == 0) && ((t2r != 0) || (t2 & 0x0003 == 0))) && (month < 2) ) t3--;
 return (t3 + m[month] + day) % 7;
}

Алгоритм неоднократно проверялся

STM32L051 инициализация для низкого энергопотребления

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 19 сентября 2016
Обновлено: 19 сентября 2016
Просмотров: 5525
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

+Сниппеты (примеры) на С для L0 серии от самих ST:

http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32snippets/stm32snippetsl0.html

Пример инициализации:

https://www.snip2code.com/Snippet/258709/STM32L051C8-Current-Consumption-Test

 #include "stm32l0xx.h"
/*
* Stop mode/LSE/RTC: 1.28uA
* Stop mode without RTC: 0.4uA
**/
//#define RTC_ENABLE
 
int main(void)
{
/** */
RCC->APB1ENR |= (RCC_APB1ENR_PWREN);
PWR->CR = (PWR->CR & ~(PWR_CR_VOS)) | PWR_CR_VOS_0;
while(PWR->CSR & PWR_CSR_VOSF);
 
/** DBP enable */
PWR->CR |= PWR_CR_DBP;
 
/* Disable PWR clock */
RCC->APB1ENR &= (uint32_t)(~RCC_APB1ENR_PWREN);
 
/* Enable HSI, wait until ready */
RCC->CR |= RCC_CR_HSION | RCC_CR_HSIDIVEN;
while ((RCC->CR & (RCC_CR_HSIRDY |RCC_CR_HSIDIVF)) != (RCC_CR_HSIRDY |RCC_CR_HSIDIVF));
 
/* Enable PLL, set HSI as PLL source, wait until PLL is ready */
RCC->CFGR |= RCC_CFGR_PLLSRC_HSI | RCC_CFGR_PLLMUL8 | RCC_CFGR_PLLDIV2;
RCC->CR |= RCC_CR_PLLON;
while ((RCC->CR & RCC_CR_PLLRDY) == 0);
 
/* Choose PLL as System clock */
RCC->CFGR |= RCC_CFGR_SW_PLL;
while ((RCC->CFGR & RCC_CFGR_SWS_PLL) == 0);
 
/* Enable all GPIO clock */
RCC->IOPENR |= RCC_IOPENR_GPIOAEN | RCC_IOPENR_GPIOBEN | RCC_IOPENR_GPIOCEN | \
RCC_IOPENR_GPIODEN | RCC_IOPENR_GPIOHEN;
 
/* Take care of PA4, set to Analog input */
// PA4 is set as input by default, this cause current leakage(~4uA)
GPIOA->MODER |= (0x03 << 4*2);
 
/* Disable GPIO clock for stop mode */
RCC->IOPENR &= (uint32_t)~(RCC_IOPENR_GPIOAEN | RCC_IOPENR_GPIOBEN | RCC_IOPENR_GPIOCEN | \
RCC_IOPENR_GPIODEN | RCC_IOPENR_GPIOHEN);
 
#ifdef RTC_ENABLE
 
/** reset RTC */
RCC->CSR |= RCC_CSR_RTCRST;
RCC->CSR &= ~RCC_CSR_RTCRST;
 
/** enable LSE */
RCC->CSR |= RCC_CSR_LSEON;
while((RCC->CSR & RCC_CSR_LSERDY)!=RCC_CSR_LSERDY);
 
/** Enable RTC, use LSE as clock */
RCC->CSR = (RCC->CSR & ~RCC_CSR_RTCSEL) | RCC_CSR_RTCEN | RCC_CSR_RTCSEL_0;
 
/* Enable Alarm interrupt */
RTC->WPR = 0xCA;
RTC->WPR = 0x53;
RTC->CR &=~ RTC_CR_ALRAE;
while((RTC->ISR & RTC_ISR_ALRAWF) != RTC_ISR_ALRAWF)
{
/* add time out here for a robust application */
}
RTC->ALRMAR = 0;
RTC->CR = RTC_CR_ALRAIE | RTC_CR_ALRAE;
RTC->WPR = 0xFE;
RTC->WPR = 0x64;
 
/** */
EXTI->IMR |= EXTI_IMR_IM17;
EXTI->RTSR |= EXTI_RTSR_TR17;
NVIC_SetPriority(RTC_IRQn, 0);
NVIC_EnableIRQ(RTC_IRQn);
 
RTC->WPR = 0xCA;
RTC->WPR = 0x53;
RTC->ISR |= RTC_ISR_INIT;
while((RTC->ISR & RTC_ISR_INITF)!=RTC_ISR_INITF)
{
/* add time out here for a robust application */
}
RTC->PRER = 0x00010001;
RTC->TR = 0; /* (5) */
RTC->DR = 0x00002101;
RTC->CR = (RTC->CR & ~RTC_CR_FMT);
RTC->ISR &=~ RTC_ISR_INIT;
RTC->WPR = 0xFE;
RTC->WPR = 0x64;
 
#endif
 
while (1) /* Infinite loop */
{
/* Set SLEEPDEEP bit of Cortex System Control Register */
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
 
/* Enable PWR clock */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
 
/* Disable the Power Voltage Detector */
PWR->CR &= (uint32_t)(~PWR_CR_PVDE);
PWR->CR = ( PWR->CR & (uint32_t)(~PWR_CR_PLS) )| PWR_CR_PLS_LEV4;
 
/* Set MCU in ULP (Ultra Low Power) */
PWR->CR |= PWR_CR_ULP;
 
/*Enable fast wakeUp*/
PWR->CR |= (uint32_t)(PWR_CR_FWU);
 
/* Enter Stop mode(not standby mode) when mcu enters deepsleep */
PWR->CR &= (uint32_t)(~PWR_CR_PDDS);
 
/* Regulator is in low power mode */
PWR->CR |= PWR_CR_LPSDSR;
 
/* WeakUp flag must be cleared before enter sleep again */
PWR->CR |= (uint32_t)(PWR_CR_CWUF);
while( (PWR->CSR & PWR_CSR_WUF) == PWR_CSR_WUF );
 
/* Disable PWR clock */
RCC->APB1ENR &= (uint32_t)(~RCC_APB1ENR_PWREN);
 
__WFI();
}
}

Ждёт ли "жижу" дно?

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Категория: Новости
Создано: 16 сентября 2016
Обновлено: 16 сентября 2016
Просмотров: 3231
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

C одного известного форума:

За два дня 13 и 14 сентября объем ставок на падение цен на нефть, сделанных на Московской бирже, вырос почти в три раза. Это следует из данных самой биржи. 14 сентября всего за четыре часа кто-то поставил на падение цен на нефть более трех млрд рублей. Так как речь идет о срочных финансовых инструментах, кто-то сделал противоположную ставку. Согласно данным биржи, падения цен ждут крупные игроки (юридические лица), которые продали «свою» нефть массе физлиц. Интерес представляет тот факт, что сделанная ставка на падение цен на нефть должна быть реализована до 3 октября. Получается, что большие деньги поставлены с очень большим риском и ограничены весьма коротким сроком. С учетом того, что московская биржа не является основной торговой площадкой для определения мировых цен на нефть, возможно, кто-то обладает неизвестной широкой публике информацией. Это может представлять интерес в условиях грядущей встречи стран-экспортеров нефти в Алжире в конце месяца. Возможно, один из ключевых игроков на рынке нефти, которым, в том числе, является наша страна, не собирается ни о чем договариваться.

SRU-12VDC-SD-C

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Электроника / cхемотехника
Создано: 12 сентября 2016
Обновлено: 12 сентября 2016
Просмотров: 2237
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

Аналоги реле JZC-22F-S-C-15-D-12VDC
Реле имп.. Мин. заказ (mpq): 25. Аналоги: RUUH-Sx-112D GOODSKY, G5LE-1-E-12VDC OMRON, TRU-12VDC-SC-CD-R TTI, HJR-21FF-12VDC-S-Z TIANBO, SRU-SH-112D SANYOU RELAY, SRU-12VDC-SD-C SONGLE

Расшифровка ошибок CAN

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 07 сентября 2016
Обновлено: 07 сентября 2016
Просмотров: 2682
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

Stuff Error, CRC Error, Form Error, Bit Error, Acknowledgment Error ...

http://www.dsrminc.com/whitepaper/bus_error_management_in_controller_area_nework__rev_1_.pdf

Схема для тестирования CAN без интерфейсных внешних CAN трансмиттеров:

CAN

  1. Классика жанра таргетированной статьи для разгона акций. Скопировал ради примера, на что нельзя вестись, чтобы не пропало
  2. AVIS AVS656CPR распиновка (цоколёвка, pinout)
  3. 6 сентября Москва. Ожидается ясная тёплая погода
  4. Перемещение материальной точки

Страница 142 из 196

  • 137
  • 138
  • 139
  • ...
  • 141
  • 142
  • 143
  • 144
  • ...
  • 146

Back to Top

© 2026 Заметки электроника

Top.Mail.Ru