www.open-tager.ru

открытый лазертаг форум
Текущее время: 29 мар 2024, 04:58

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


В разделе запрещены - обсуждение оборудования не поддерживающего открытых протоколов, реклама и ссылки на готовые продукты лазертага, обсуждение политики производителей и самих производителей. Виден всем.



Начать новую тему Ответить на тему  [ Сообщений: 332 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 34  След.
Автор Сообщение
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 26 окт 2013, 22:05 
Не в сети
Завсегдатай
Аватар пользователя

Зарегистрирован: 27 мар 2013, 14:34
Сообщений: 147
Откуда: Кривой Рог
ВовВовыч писал(а):
Я к своему DSO 203 в добавку тоже заказал,ибо на мониторе действительно некоторые вещи смотреть гораздо удобнее))
Пока в пути,ждём-с)

А как отзывы, кто пользовался по осциллографу? Нормальные? А тоже присматриваюсь и пока не могу определиться...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 27 окт 2013, 07:47 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
ВовВовыч писал(а):
Кстати,8-ми канальный лоджик стоит ещё дешевле))А нам-то по хорошему 16 и не особо нужно.
Я к своему DSO 203 в добавку тоже заказал,ибо на мониторе действительно некоторые вещи смотреть гораздо удобнее))
Пока в пути,ждём-с)
Пы.Сы,По размеру похожи,а вот по шагу ног нужно поднимать левел пайщика))

На фотке на плате Ардуино не 32 Атмега!
32-я точь в точь как ARM на фотке справа.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 27 окт 2013, 09:28 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Gruffi писал(а):
Pingvin писал(а):
И что у нас с системой тактирования?
Как настраивается?


Здесь не так как у atmega :D . По умолчанию практически все тактирование отключено и надо каждый раз ручками подключать тактирование портов и другой периферии. В принципе, если мигать научились :D , то с этим Вы уже разобрались. Внутренний тактовый генератор на 8МГц настраивается не сложно:
Код:
RCC->CR|=RCC_CR_HSION; // Включить генератор HSI.
   while(!(RCC->CR & RCC_CR_HSIRDY))
   {} // Ожидание готовности HSI.
   RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0, SW1.
   RCC->CFGR |= RCC_CFGR_SW_HSI; // Выбрать HSI для тактирования SW0=1



В кокосе определена такая функция в файле system_stm32fxx.c

Код:
static void SetSysClock(void)
{
/******************************************************************************/
/*            PLL (clocked by HSE) used as System clock source                */
/******************************************************************************/
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
 
  /* Enable HSE */
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);
 
  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (uint32_t)0x01;
  }
  else
  {
    HSEStatus = (uint32_t)0x00;
  }

  if (HSEStatus == (uint32_t)0x01)
  {
    /* Enable high performance mode, System frequency up to 168 MHz */
    RCC->APB1ENR |= RCC_APB1ENR_PWREN;
    PWR->CR |= PWR_CR_PMODE;

    /* HCLK = SYSCLK / 1*/
    RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
     
    /* PCLK2 = HCLK / 2*/
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
   
    /* PCLK1 = HCLK / 4*/
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;

    /* Configure the main PLL */
    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

    /* Enable the main PLL */
    RCC->CR |= RCC_CR_PLLON;

    /* Wait till the main PLL is ready */
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }
   
    /* Configure Flash prefetch, Instruction cache, Data cache and wait state */
    FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;

    /* Select the main PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= RCC_CFGR_SW_PLL;

    /* Wait till the main PLL is used as system clock source */
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
    {
    }
  }
  else
  { /* If HSE fails to start-up, the application will have wrong clock
         configuration. User can add here some code to deal with this error */
  }

/******************************************************************************/
/*                        I2S clock configuration                             */
/******************************************************************************/
  /* PLLI2S clock used as I2S clock source */
  RCC->CFGR &= ~RCC_CFGR_I2SSRC;

  /* Configure PLLI2S */
  RCC->PLLI2SCFGR = (PLLI2S_N << 6) | (PLLI2S_R << 28);

  /* Enable PLLI2S */
  RCC->CR |= ((uint32_t)RCC_CR_PLLI2SON);

  /* Wait till PLLI2S is ready */
  while((RCC->CR & RCC_CR_PLLI2SRDY) == 0)
  {
  }
}



Только здесь
Код:
 RCC->CR |= ((uint32_t)RCC_CR_HSEON);


А у Вас
Код:
RCC->CR|=RCC_CR_HSION; // Включить генератор HSI.


Опечатка?

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 27 окт 2013, 10:10 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Настроил в FreeRTOS-ке систему тактирования!
Диодики мигают как и прописано - 1 Гц и 1,5 Гц.

Шаблон готов!

Теперь это основа для любого моего проекта на ARM! :geek:
Лепота!!! :) :lol:

А вот с примерами - засада!
Все примеры рассчитаны на пропритарные среды разработки и под кокосом многие не собираются, с том числе и пример с записью звука на флешку. :cry:
А я губешки раскатал на халяву! :lol:
Но нас это не остановит! ;) :)

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 27 окт 2013, 13:44 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Примерчик набросал использования FreeRTOS- 4 светодиода мигают с различной частотой.

http://www.youtube.com/watch?v=a9Rkjg0sSQU&feature=youtu.be

Вот содержимое файла main.с

Код:
#include "stm32f4xx.h"
#include "stm32f4xx_conf.h"
#include "stm32f4_discovery.h"
#include "FreeRTOS.h"
#include "task.h"

void vTaskLED5(void *pvParameters);
void vTaskLED6(void *pvParameters);
void vTaskLED3(void *pvParameters);
void vTaskLED4(void *pvParameters);

int main(void)
{

   STM32F4_Discovery_LEDInit(LED3);
   STM32F4_Discovery_LEDInit(LED4);
   STM32F4_Discovery_LEDInit(LED6);
   STM32F4_Discovery_LEDInit(LED5);

   xTaskCreate( vTaskLED5, ( signed char * ) "LED5", configMINIMAL_STACK_SIZE, NULL, 2, ( xTaskHandle * ) NULL);
   xTaskCreate( vTaskLED6, ( signed char * ) "LED6", configMINIMAL_STACK_SIZE, NULL, 2, ( xTaskHandle * ) NULL);
   xTaskCreate( vTaskLED3, ( signed char * ) "LED3", configMINIMAL_STACK_SIZE, NULL, 2, ( xTaskHandle * ) NULL);
   xTaskCreate( vTaskLED4, ( signed char * ) "LED4", configMINIMAL_STACK_SIZE, NULL, 2, ( xTaskHandle * ) NULL);

   vTaskStartScheduler();
}


void vTaskLED5(void *pvParameters) {
   for (;;) {
      STM32F4_Discovery_LEDOn(LED5);
      vTaskDelay(50);
      STM32F4_Discovery_LEDOff(LED5);
      vTaskDelay(50);
   }
}

void vTaskLED6(void *pvParameters) {
   for (;;) {
      STM32F4_Discovery_LEDOn(LED6);
      vTaskDelay(32);
      STM32F4_Discovery_LEDOff(LED6);
      vTaskDelay(32);
   }
}


void vTaskLED3(void *pvParameters) {
   for (;;) {
      STM32F4_Discovery_LEDOn(LED3);
      vTaskDelay(60);
      STM32F4_Discovery_LEDOff(LED3);
      vTaskDelay(60);
   }
}

void vTaskLED4(void *pvParameters) {
   for (;;) {
      STM32F4_Discovery_LEDOn(LED4);
      vTaskDelay(70);
      STM32F4_Discovery_LEDOff(LED4);
      vTaskDelay(70);
   }
}


Попробуйте реализовать это "штатными средствами" - сравним код! ;) :)


Вложения:
STM32F4_freertos_blink_leds_example.zip [1.04 MiB]
Скачиваний: 305

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 27 окт 2013, 23:47 
Не в сети
Завсегдатай
Аватар пользователя

Зарегистрирован: 27 мар 2013, 14:34
Сообщений: 147
Откуда: Кривой Рог
Pingvin писал(а):
Gruffi писал(а):
Pingvin писал(а):
И что у нас с системой тактирования?
Как настраивается?


Здесь не так как у atmega :D . По умолчанию практически все тактирование отключено и надо каждый раз ручками подключать тактирование портов и другой периферии. В принципе, если мигать научились :D , то с этим Вы уже разобрались. Внутренний тактовый генератор на 8МГц настраивается не сложно:
Код:
RCC->CR|=RCC_CR_HSION; // Включить генератор HSI.
   while(!(RCC->CR & RCC_CR_HSIRDY))
   {} // Ожидание готовности HSI.
   RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0, SW1.
   RCC->CFGR |= RCC_CFGR_SW_HSI; // Выбрать HSI для тактирования SW0=1


В кокосе определена такая функция в файле system_stm32fxx.c

Код:
static void SetSysClock(void)
{
/******************************************************************************/
/*            PLL (clocked by HSE) used as System clock source                */
/******************************************************************************/
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
 
  /* Enable HSE */
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);
 
  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (uint32_t)0x01;
  }
  else
  {
    HSEStatus = (uint32_t)0x00;
  }

  if (HSEStatus == (uint32_t)0x01)
  {
    /* Enable high performance mode, System frequency up to 168 MHz */
    RCC->APB1ENR |= RCC_APB1ENR_PWREN;
    PWR->CR |= PWR_CR_PMODE;

    /* HCLK = SYSCLK / 1*/
    RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
     
    /* PCLK2 = HCLK / 2*/
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
   
    /* PCLK1 = HCLK / 4*/
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;

    /* Configure the main PLL */
    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

    /* Enable the main PLL */
    RCC->CR |= RCC_CR_PLLON;

    /* Wait till the main PLL is ready */
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }
   
    /* Configure Flash prefetch, Instruction cache, Data cache and wait state */
    FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;

    /* Select the main PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= RCC_CFGR_SW_PLL;

    /* Wait till the main PLL is used as system clock source */
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
    {
    }
  }
  else
  { /* If HSE fails to start-up, the application will have wrong clock
         configuration. User can add here some code to deal with this error */
  }

/******************************************************************************/
/*                        I2S clock configuration                             */
/******************************************************************************/
  /* PLLI2S clock used as I2S clock source */
  RCC->CFGR &= ~RCC_CFGR_I2SSRC;

  /* Configure PLLI2S */
  RCC->PLLI2SCFGR = (PLLI2S_N << 6) | (PLLI2S_R << 28);

  /* Enable PLLI2S */
  RCC->CR |= ((uint32_t)RCC_CR_PLLI2SON);

  /* Wait till PLLI2S is ready */
  while((RCC->CR & RCC_CR_PLLI2SRDY) == 0)
  {
  }
}



Только здесь
Код:
 RCC->CR |= ((uint32_t)RCC_CR_HSEON);


А у Вас
Код:
RCC->CR|=RCC_CR_HSION; // Включить генератор HSI.


Опечатка?

HSI - это внутренний генератор
HSE - внешний генератор (кварц) :)
Можно использовать SetSysClock(), я просто показал как руками :) не используя библиотек. В функции кроме запуска кварца настраивается служба, которая следит за работой кварца и если он отказывает, то переключает тактирование на внутренний источник (8МГц).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 28 окт 2013, 00:40 
Не в сети
Завсегдатай
Аватар пользователя

Зарегистрирован: 27 мар 2013, 14:34
Сообщений: 147
Откуда: Кривой Рог
Pingvin писал(а):
Попробуйте реализовать это "штатными средствами" - сравним код! ;) :)

Сейчас не на чем экспериментировать, но в принципе код был бы не намного больше :) . Я бы запустил один таймер и по прерыванию увеличивал бы счетчик, а в основном цикле проверял заданные промежутки настроек светодиодов. Но флеша съел бы точно на 6 кил меньше :D . Эта не та задача на которой нужно проверять :D . У нас ребята сейчас уже испытывают gps-трекер и там как раз используют FreeRTOS и без нее там точно не обойтись, но уже жалуются что проца со 128кб мало. Сейчас оптимизируют, как могут, чтобы выжать еще немного памяти. Только они используют не stm, а nxp. Скоро мне понадобится как раз ось, хотя могу и без нее сделать проект, но пощупать хочется, вот заодно и пощупаю :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 28 окт 2013, 05:59 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Gruffi писал(а):
Pingvin писал(а):
Попробуйте реализовать это "штатными средствами" - сравним код! ;) :)

Сейчас не на чем экспериментировать, но в принципе код был бы не намного больше :) . Я бы запустил один таймер и по прерыванию увеличивал бы счетчик, а в основном цикле проверял заданные промежутки настроек светодиодов. Но флеша съел бы точно на 6 кил меньше :D . Эта не та задача на которой нужно проверять :D . У нас ребята сейчас уже испытывают gps-трекер и там как раз используют FreeRTOS и без нее там точно не обойтись, но уже жалуются что проца со 128кб мало. Сейчас оптимизируют, как могут, чтобы выжать еще немного памяти. Только они используют не stm, а nxp. Скоро мне понадобится как раз ось, хотя могу и без нее сделать проект, но пощупать хочется, вот заодно и пощупаю :D

Я бы тоже сделал, как Вы предлагаете без оси.
Конечно, всего лишь пример, но и то проще написать 4 потока по нескольку строк каждый, чем анализировать несколько значений.
А частоту поменять? ;)
А вот попробуйте, например, поработать с модемом по UART, где нужно дождаться ответа, и при этом нужно ещё кое какие дела делать одновременно (реагировать на нажатие кнопок), без многопоточности!
Задолбаетесь!

Вырисовывается концепция нового девайса.
Меняются приоритеты - сначала SD карта.
Флешка, конечно, круто, но габаритная.

На карте, помимо звуковых файлов, будет лежать файл со всеми настройками тага, например tag.conf

А то я поначалу переживал, что нет внутреннего eeprom у ARM, а сейчас понял, и без него можно обойтись.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 28 окт 2013, 06:34 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 окт 2012, 12:24
Сообщений: 1246
прежде чем уповать на многопоточность, неплохо было бы разобраться в механизме ее реализации для данной конкретной оси ;)
а то получится как с форматированием дискетки под win95 :lol:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: АРМейский лазертаг
СообщениеДобавлено: 28 окт 2013, 06:52 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
mail_robot писал(а):
прежде чем уповать на многопоточность, неплохо было бы разобраться в механизме ее реализации для данной конкретной оси ;)
а то получится как с форматированием дискетки под win95 :lol:

Как то тоже об этом подумал. ;)
Но все равно - Спасибо!

P.S. Все-таки интересно стало? ;) :lol:

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 332 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16 ... 34  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB