Мигать светодиодом. ARM или не-ARM?

Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: ARM или не-ARM?

Сообщение ARV »

Мурик писал(а):Считайте сами и делайте выводы
товарищ не понимает :)
не надо мне рекламных слоганов, табличек выигрыша производительности и т.п.! для часов возможностей меги более, чем достаточно. применение остальных имеющихся ресурсов ARM остается под вопросом.
вы нашли применение этим мегагерцам, мегафлопсам, аппаратным энкодерам и т.п.?
можно использовать еще не означает, реально используется. вот оно вам реально чем помогло в домашнем хобби? DMA для динамической индикации используете? на что высвободившиеся ресурсы тратите?

мерседес реально круче запорожца - кто спорит! но запорожец у меня есть, а мерседеса - нет. и одно это перечеркивает все параметры мерса. зато пешком не хожу :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: ARM или не-ARM?

Сообщение Мурик »

ARV писал(а):но я так понимаю, там задействована система прерываний
Для правильной организации задержки. Можно сделать как обычно поступают любители пиков, авров и прочего ногодрыга - задержка в цикле, только зачем? В STM32 хватает таймеров.
ARV писал(а):для часов возможностей меги более, чем достаточно.
В меге есть встроенный RTC? Или предлагаете внешний юзать, или на асинхронном таймере? :))) В STM32 имеется аппаратный RTC с календарем, будильниками и т. д. То что нужно для часов. :)
The RTC is an independent BCD timer/counter. Its main features are the following:
 Calendar with subsecond, seconds, minutes, hours (12 or 24 format), week day, date,
month, year, in BCD (binary-coded decimal) format
 Automatically correction for 28, 29 (leap year), 30, and 31 day of the month
 Programmable alarm with wake up from Stop and Standby mode capability
 On-the-fly correction from 1 to 32767 RTC clock pulses. This can be used to
synchronize it with a master clock.
 Digital calibration circuit with 1 ppm resolution, to compensate for quartz crystal
inaccuracy
 2 anti-tamper detection pins with programmable filter. The MCU can be woken up from
Stop and Standby modes on tamper event detection.
 Timestamp feature which can be used to save the calendar content. This function can
triggered by an event on the timestamp pin, or by a tamper event. The MCU can be
woken up from Stop and Standby modes on timestamp event detection.
 Periodic wakeup from Stop/Standby
 Reference clock detection: a more precise second source clock (50 or 60 Hz) can be
used to enhance the calendar precision.
The RTC clock sources can be:
 A 32.768 kHz external crystal
 A resonator or oscillator
 The internal low-power RC oscillator (typical frequency of 40 kHz)
 The high-speed external clock divided by 32
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: ARM или не-ARM?

Сообщение ARV »

да чем вас асинхронный таймер не устраивает? нормальные часы получаются.
вы мне лучше скажите, куда вы задействуете лишнюю периферию в ARMе? просто "шоб було"? и это называется эффективностью?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: ARM или не-ARM?

Сообщение scorpi_0n »

можно использовать еще не означает, реально используется. вот оно вам реально чем помогло в домашнем хобби? DMA для динамической индикации используете? на что высвободившиеся ресурсы тратите?
А какая разница? Их никто не считает, смысла нет. Считают когда ресурсов не хватает, как в меге. А здесь - индикация хардварно, 18Б20хардварно, РЦ5 хардварно, майн пустой. Это для примера. А там хоть музыку играйте, хоть РЖБ светиками блымайте, хоть частоту сети меряйте, хоть ФФТ крутите. Это уже на своё усмотрение.
вы мне лучше скажите, куда вы задействуете лишнюю периферию в ARMе?
А лишней там и нет, таймеров бы побольше и каналов ДМА для полного счастья.
Последний раз редактировалось scorpi_0n Ср июл 12, 2017 15:28:43, всего редактировалось 1 раз.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: ARM или не-ARM?

Сообщение oleg110592 »

[uquote="ARV",url="/forum/viewtopic.php?p=3143690#p3143690"]вы мне лучше скажите, куда вы задействуете лишнюю периферию в ARMе?[/uquote]
туда же куда и в AVRе, т.е. никуда - пусть себе лежит, потом может понадобится для более сложной хрени
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: ARM или не-ARM?

Сообщение Zhuk72 »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3143659#p3143659"]о, спасибо, практика - мигание светодиодом на STM32F0, реально работает:[/uquote]
Вы забыли упомянуть про парочку стартовых файлов, создаваемых средой при выборе соответствующей опции в настройках проекта. А там, если не считать ассемблерного старта с векторами и прочим, имеется SystemInit с настройкой тактов, выбором источника тактов и прочая мелочь.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: ARM или не-ARM?

Сообщение scorpi_0n »

Вы забыли упомянуть про парочку стартовых файлов
Такой мелочью никто и не заморачивается, без особой нужды. Многие ли на меге заморачиваются что там компиль накрутил при старте?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: ARM или не-ARM?

Сообщение Мурик »

ARV писал(а):да чем вас асинхронный таймер не устраивает?
Тем что не во всех МК при этом можно подключить кварц для тактирования. Почему-то разработчики решили что выводы для высокочастотного и низкочастотного кварцев должны быть одни и те же. :facepalm:
Плюс зачем программно делать то что есть аппаратное? Не задумывались над тем что при питании от резервного источника меге нужно каждую секунду просыпаться и считать время, дату и т. д. связанное с часами, а это повышенное потребление энергии резервного источника! :dont_know:
STM32 может уснуть на все время питания от резервной батареи, ведь RTC аппаратный и работает без участия процессора. :)
ARV писал(а):куда вы задействуете лишнюю периферию в ARMе?
Не включаю ее тактирование и она кушать не просит (в смысле ток не потребляет). :)
У меня встречный вопрос, что вы делаете если в меге оказывается не задействовано что-то из периферии? :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: ARM или не-ARM?

Сообщение ARV »

Zhuk72 писал(а):Вы забыли упомянуть
о нет, не забыл! это так надо, чтобы убедить в простоте. точно так же, как в разговоре про осмысленность применения ARM в любительских проектах просто сообщается
oleg110592 писал(а):потом может понадобится для более сложной хрени
т.е. ARM однозначно лучше любого другого МК, но ни для чего, кроме как для хрени, не применяется - нет достойных применений.

самая сложная осмысленная хрень - осциллограф. еще есть, на мой взгляд, неплохой проект RLC-метра Nekeetos-а, но и там кроме АЦП практически ничего из обширнейшей периферии не применяется. ситуация примерно та же, как у меня в гараже: инструмент уже положить некуда, а реально нужен был за последние 4 года только молоток. многих за такой подход называют Плюшкиными, но в случае с ARM это называется "в ногу со временем" :)))
Мурик писал(а):Почему-то разработчики решили что выводы для высокочастотного и низкочастотного кварцев должны быть одни и те же.
да вы знаете, для часов как-то без разницы... встроенный генератор вполне достаточен. разумеется, недостатки архитектуры - это недостатки, но они ведь не мешают. В ARM количество встроенной периферии то же ведь почти всегда превышает количество доступных выводов и что-то остается недоступным - с этим тоже можно мириться.
Мурик писал(а):STM32 может уснуть на все время питания от резервной батареи, ведь RTC аппаратный и работает без участия процессора
это очень чудесно! но даже при необходимости просыпаться часы на меге от литиевой батарейки проработают пару лет :))) опять же - плюшка новая, а вкус-то старый. не часами над мериться, не термомтерами, а чем-то занятнее... только ни для чего иного, кроме как для крутых цветных дисплеев и выхода в интернет ARMы в любительских проектах не применяются, что почти всегда является бессмысленной крутотой.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: ARM или не-ARM?

Сообщение oleg110592 »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3143701#p3143701"]Вы забыли упомянуть про парочку стартовых файлов[/uquote]
в GCC можно обойтись одним стартовым файлом на Си, таблицу с векторами можно даже в main.c разместить, SystemInit.c не нужен - по умолчанию 8МГц тактовая внутренняя будет.
Пример стартапа на Си:
Спойлер

Код: Выделить всё

void init(void);
void Default_Handler(void);

// The following are 'declared' in the linker script
extern unsigned char  INIT_DATA_VALUES;
extern unsigned char  INIT_DATA_START;
extern unsigned char  INIT_DATA_END;
extern unsigned char  BSS_START;
extern unsigned char  BSS_END;
// the section "vectors" is placed at the beginning of flash 
// by the linker script
const void * Vectors[] __attribute__((section(".vectors"))) ={
	(void *)0x20001000, 	/* Top of stack (4k) */ 
	init,   		/* Reset Handler */
	Default_Handler,	/* NMI */
	Default_Handler,	/* Hard Fault */
	Default_Handler,	/* MemManage */
	Default_Handler,	/* Reserved  */
	Default_Handler,	/* Reserved */
	Default_Handler,	/* Reserved */ 
	Default_Handler,	/* Reserved */
	Default_Handler,	/* Reserved */
	Default_Handler,	/* Reserved */
	Default_Handler,	/* SVCall */
	Default_Handler,	/* Reserved */
	Default_Handler,	/* Reserved */
	Default_Handler,	/* PendSV */
	Default_Handler,	/* SysTick */	
/* External interrupt handlers follow */
	Default_Handler, 	/* 0: WWDG */
	Default_Handler, 	/* 1: Reserved */
	Default_Handler, 	/* 2: RTC */
	Default_Handler, 	/* 3: FLASH */
	Default_Handler, 	/* 4: RCC */
	Default_Handler, 	/* 5: EXTI0_1 */
	Default_Handler, 	/* 6: EXTI2_3 */
	Default_Handler, 	/* 7: EXTI4_5 */
	Default_Handler, 	/* 8: Reserved */
	Default_Handler, 	/* 9: DMA_CH1 */
	Default_Handler, 	/* 10: DMA_CH2_3 */
	Default_Handler, 	/* 11: DMA_CH4_5 */
	Default_Handler, 	/* 12: ADC */
	Default_Handler, 	/* 13: TIM1_BRK_UP_TRG_COM */
	Default_Handler, 	/* 14: TIM1_CC */
	Default_Handler, 	/* 15: Reserved */
	Default_Handler, 	/* 16: TIM3 */
	Default_Handler, 	/* 17: Reserved */
	Default_Handler, 	/* 18: Reserved */
	Default_Handler, 	/* 19: TIM14 */
	Default_Handler, 	/* 20: TIM15 */
	Default_Handler, 	/* 21: TIM16 */
	Default_Handler, 	/* 22: TIM17 */
	Default_Handler, 	/* 23: I2C1 */
	Default_Handler, 	/* 24: I2C2 */
	Default_Handler, 	/* 25: SPI1 */
	Default_Handler, 	/* 26: SPI2 */
	Default_Handler, 	/* 27: USART1 */
	Default_Handler 	/* 28: USART2 */
};
void init()
{
// do global/static data initialization
	unsigned char *src;
	unsigned char *dest;
	unsigned len;
	src= &INIT_DATA_VALUES;
	dest= &INIT_DATA_START;
	len= &INIT_DATA_END-&INIT_DATA_START;
	while (len--)
		*dest++ = *src++;
// zero out the uninitialized global/static variables
	dest = &BSS_START;
	len = &BSS_END - &BSS_START;
	while (len--)
		*dest++=0;
	main();
}

void Default_Handler()
{
	while(1);
} 
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: ARM или не-ARM?

Сообщение ARV »

oleg110592 писал(а):в GCC можно обойтись одним стартовым файлом на Си, таблицу с векторами можно даже в main.c разместить, SystemInit.c не нужен
не в стартапе дело - вы привели пример кода, где используется функция инициализации прерывания таймера, а саму функцию не показали. т.е. простой пример на самом деле оказался сложнее, чем выглядит. большинству не важно, как и что компилятор делает по умолчанию, но то, что надо делать обязательно самому - это важно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: ARM или не-ARM?

Сообщение Zhuk72 »

[uquote="scorpi_0n",url="/forum/viewtopic.php?p=3143706#p3143706"]Такой мелочью никто и не заморачивается, без особой нужды.[/uquote]
Новичку заморочиться придется. Он просто запутается среди всех этих #if !defined STM32F0xxxxx и далее по списку.

Я когда увидел это, просто офигел от количества комментарий и скобок (я тоже как бы новичок, особенно в Си). А потом плюнул, просто забрал startup.s, заглушил в нем вызов SystemInit(), а потом расписал инициализацию по-своему, по шагам, почитывая RM.

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

А теперь спасибо всем за беседу, она заполнила почти весь мой день ))
Поеду домой.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: ARM или не-ARM?

Сообщение oleg110592 »

где используется функция инициализации прерывания таймера
функция известная написана самим ого-го-го, еще и в хидере, тем кто начинает уже должна быть известна - а начинают обычно с чтения документации, куски документации тут в теме считаю излишни
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: ARM или не-ARM?

Сообщение scorpi_0n »

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

Добавлено after 2 minutes:
а потом расписал инициализацию по-своему, по шагам, почитывая RM.
А чем ещё новичку заниматься?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: ARM или не-ARM?

Сообщение Мурик »

ARV писал(а):где используется функция инициализации прерывания таймера, а саму функцию не показали.
Это стандартная библиотечная функция из файла core_cm0.h. Ее код

Код: Выделить всё

static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */

  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}
ARV, вы практикуете политику двойных стандартов. Когда вы понимаете что вы не правы или мега явно проигрывает, то типа так и должно быть, но при любом случае хаете ARMы даже когда для этого нет причин. :facepalm:
Не нравятся ARMы или просто не способны с ними разобраться, дело ваше. Паяйте дальше устаревшие меги. :solder:
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: ARM или не-ARM?

Сообщение oleg110592 »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3143720#p3143720"]заглушил в нем вызов SystemInit(), а потом расписал инициализацию[/uquote]
можно и не глушить - у меня в main.c такэ для F0:

Код: Выделить всё

void SystemInit()
{
    // This is potentially a dangerous function as it could
    // result in a system with an invalid clock signal - result: a stuck system
    // Set the PLL up
    // First ensure PLL is disabled
    RCC->CR &= ~RCC_CR_PLLON;
    while ((RCC->CR & RCC_CR_PLLRDY))
        ;
    // wait for PLL ready to be cleared
    // set PLL multiplier to 12 (yielding 48MHz)
    // Warning here: if system clock is greater than 24MHz then wait-state(s) need to be
    // inserted into Flash memory interface
    FLASH->ACR |= FLASH_ACR_LATENCY;

    // Turn on FLASH prefetch buffer
    FLASH->ACR |= FLASH_ACR_PRFTBE;
    RCC->CFGR &= ~(RCC_CFGR_PLLMUL_3 | RCC_CFGR_PLLMUL_2 | RCC_CFGR_PLLMUL_1 | RCC_CFGR_PLLMUL_0);
    RCC->CFGR |= (RCC_CFGR_PLLMUL_3 | RCC_CFGR_PLLMUL_1);

    // Need to limit ADC clock to below 14MHz so will change ADC prescaler to 4
    RCC->CFGR |= RCC_CFGR_ADCPRE;

    // Do the following to push HSI clock out on PA8 (MCO)
    // for measurement purposes.  Should be 8MHz or thereabouts (verified with oscilloscope)
    /*
        RCC->CFGR |= (RCC_CFGR_MCO_2 | RCC_CFGR_MCO_0);
        RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
        GPIOA->MODER |= GPIO_MODER_MODER8_1;
    */
    // and turn the PLL back on again
    RCC->CR |= RCC_CR_PLLON;
    // set PLL as system clock source
    RCC->CFGR |= RCC_CFGR_SW_1;
}
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: ARM или не-ARM?

Сообщение scorpi_0n »

Новичок либо вообще не полезет туда и в дальнейшем не будет знать, какая у него тактовая и по какому пути она выбрана, либо выберет Куб с визуализацией. И опять же не поймет что с чем связано. Поэтому я и говорю, что порог входа здесь выше.
С чего это вдруг? С ПИКовых привычек? Так там тоже не всё однозначно. Другое дело что новички на ПИКах почти вымерли.
Гляньте порог вхождения на ардуино. Там вообще мракобесие. Особенно нравятся вопросы "а что, не получится? а мне говорили что на ардуине можно решить любую задачу.". А с миллисекундами там вообще вечная борьба и вечный кайф и лепят по несколько ардуин где можно обойтись одним МК.
Ну вот, легки на помине. Свеженькое.
__http://arduino.ru/forum/otvlechennye-temy/arduino-nano-pic16
ARV, вы практикуете политику двойных стандартов.
Это называется "А просто поговорить?". Кто хотел создавать что-то новое уже давно ушли на СТМ.
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: ARM или не-ARM?

Сообщение Ivanoff-iv »

я ARVа понимаю, сааому как серпом... когда чтото сделано не оптимально или куча лишних ресурсов остается. попросили мигалку срочно — тинька (под рукой была 2313) 5мин. и готово, пока шли за ней меня жаба вынудила спаять на транзисторах (вон сколько ног пропадает...), хотя выгоды в этом никакой (ни финансовой, ни по времени, ни по трудозатратам) не было.

Добавлено after 2 minutes 10 seconds:
хромую тиньку (пара ног издохли при экспериментах ранее) и то пожалел...

Добавлено after 6 minutes 43 seconds:
и я буду счастлив если найдется максимально трудное для неё дело, где какраз эти ноги не понадобятся.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25163
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: ARM или не-ARM?

Сообщение КРАМ »

Ладно вам дебаты беспредметные разводить.
Давайте ближе к телу.
Имеем F051.
Необходимо контролировать скважность входящей частоты 8 МГц. Для этого подаем на таймер сисклоки 48 МГц, а входящую подаем на направление счета.
АутпутКомпэйром фиксируем выходы таймера за некие пределы относительно нуля. Периодически (скажем 1 раз на 128 периодов входной частоты) его сбрасываем, дабы обеспечить начальные условия интегрирования.
С методом все понятно. Непонятно с управлением направлением счета. Знатоки энкодерного интерфейса в СТМ32 должны знать сие и дать мгновенный ответ по конфигурированию таймера.
Заранее благодарен.
ЗЫ. Не корысти ради - занят зело на ином проекте, а этот делает коллега. Я лишь курирую алгоритм.
ЗЗЫ. В догон. Код писать нет необходимости. Достаточно СЛОВЕСАМИ рассказать. Я понятлив. :)
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: ARM или не-ARM?

Сообщение oleg110592 »

энкодерный интерфейс непонятно причем, а сниппетс 04_PWM_Input не подходит?
This example configures the TIM1 in order to compute the period and the duty cycle of a signal applied on its TI1 (channel 1). This channel is used as trigger input.
Ответить

Вернуться в «МЯЯЯУ!»