реклама на сайте
подробности

 
 
> попогите разобраться с тактированием портов в stm32f105/107, ищу примеры
super_puper
сообщение Feb 13 2013, 02:30
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



начал изучать данный контроллер но столкнулся с отсутствием примеров может я плохо ищу.. подскажите плиз..
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 36)
PoReX
сообщение Feb 13 2013, 05:17
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



STM32 самые популярные микроконтроллеры на ядре Cortex-M3 и вы не можете найти под них примеры? wacko.gif Существует куча различных блогов посвященных данным контроллерам. Ну или самое простое зайти на сайт STM в раздел Firmware для F1хх-го семейства и посмотреть какие там есть примеры. Там можно обнаружить stm32f10x stdperiph library и в ней куча примеров по всей переферии F1xx-го семейства.


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 13 2013, 06:53
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



по моему вопросу опять же ничего не нашел.. если у кого есть проекты которые не жалко кинить плиз я хоть посмотрю как должно выглядеть всё
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 13 2013, 07:03
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (super_puper @ Feb 13 2013, 08:53) *
по моему вопросу опять же ничего не нашел..
А в чем состоит ваш вопрос? Как включить тактирование портов? Открываете документ RM0008 "Reference manual. STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs". Ищете раздел "Connectivity line devices: reset and clock control (RCC)". Читаете его. Доходите до описания регистра RCC_APB2ENR. Тактирование портов включается в нем. Какой пример нужен? Битик в регистре выставить?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 13 2013, 07:31
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



пример в IARе и чтоб работало я написал по пдфке не работает
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 13 2013, 07:31
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



.

Сообщение отредактировал super_puper - Feb 13 2013, 07:59
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 13 2013, 08:14
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Код
  GPIO_InitTypeDef GPIO_InitStructure;
  /* GPIOD Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);

  /* Configure PD0 and PD2 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 13 2013, 08:15
Сообщение #8


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(super_puper @ Feb 13 2013, 10:31) *
пример в IARе и чтоб работало я написал по пдфке не работает

Теперь последует традиционная фраза "Телепаты в отпуске. Код - в студию!"
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 13 2013, 09:11
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



спасибо за пример на частоте 2мгц пин у меня тоже работает(несмотря на то что я на 50 разрешил) а вот выше не получается, наверное я клоки не так настраиваю
дайте плиз пример настройки частоты тактирования от внешнего кварца 25мгц и чтоб на порт максимальную частоту возможную я мог подать, я совсем начинающий в кортексах, раньше на амеге писал и структурами не пользовался
CODE
#include "stm32f10x.h"
#include "bits.h"
#include "stm32f10x_pet.h"

unsigned long d, e;
#define HSE_on RCC -> CR |= (RCC_CR_HSEON)// Включает внешний высокоскочастотный кварц(HSE)
#define HSE_sel RCC -> CFGR &= ~(RCC_CFGR_SW_1); RCC -> CFGR |= (RCC_CFGR_SW_0)// выбираем HSE в качастве
// источника системного клока sysclk
#define enable_clock(port) RCC->APB2ENR|=RCC_APB2ENR_IOP##port##EN // включение тактирования порта

//VVVVVVVVVVVVVVVVVVVVV main() VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
void main()
{

//FLASH->ACR |= FLASH_ACR_PRFTBE; // Enable Prefetch Buffer.
//FLASH->ACR |= FLASH_ACR_LATENCY_1;
// HSE_on;
//for (d=0; d<1000000; ++d){e ++;};
//HSE_sel;
//enable_clock(D);//включение тактирования порта
//GPIOD->CRL&=~(GPIO_CRL_MODE7_1); GPIOD->CRL|=(GPIO_CRL_MODE7_0); //11: Output mode, max speed 50 MHz
//GPIOD->CRL&=~(GPIO_CRL_CNF7_0);GPIOD->CRL&=~(GPIO_CRL_CNF7_1); // set port as General purpose output push-pull

GPIO_InitTypeDef GPIO_InitStructure;
/* GPIOD Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);

/* Configure PD0 and PD2 in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);

//VVVVVVVVVVVVVVVVVVVVV Основной цикл VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
while (1)
{
pin_off(D,7);
//for (d=0; d<1000000; ++d){e ++;};
pin_on(D,7);
//for (d=0; d<1000000; ++d){e ++;};

}//^^^^^^^^^^^^^^^^^^^^^^^ Основной цикл ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}//^^^^^^^^^^^^^^^^^^^^^^^^ main() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^


Сообщение отредактировал super_puper - Feb 13 2013, 09:16
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 13 2013, 09:14
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



.

Сообщение отредактировал super_puper - Feb 13 2013, 09:15
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 13 2013, 11:56
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Цитата(super_puper @ Feb 13 2013, 13:11) *
дайте плиз пример настройки частоты тактирования от внешнего кварца 25мгц и чтоб на порт максимальную частоту возможную я мог подать, я совсем начинающий в кортексах, раньше на амеге писал и структурами не пользовался

Опять же все есть в stm32f10x stdperiph library, файл system_stm32f10x.c.


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 14 2013, 02:04
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



понятно что есть дайте пример плиз, это же ветка для начинающих..
Go to the top of the page
 
+Quote Post
bav
сообщение Feb 14 2013, 06:17
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



неужели в Google не набрать запрос? весь интернет переполнен разными статьями.
вот
вот
вот
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 14 2013, 10:14
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



за ссылки спасибо! но все равно кому не жалко кидайте примеры или целиком проекты, интересно посмотреть кто как реализует, все по разному..

подскажите ещё такой момент, в ИАРе проект компилится нормально но попытка переместиться к телу функции например правая кнопка на SystemInit() - go to definition; выдает ошибку неправильный путь..

Сообщение отредактировал super_puper - Feb 14 2013, 10:19
Go to the top of the page
 
+Quote Post
bav
сообщение Feb 14 2013, 11:42
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



Цитата
за ссылки спасибо! но все равно кому не жалко кидайте примеры или целиком проекты, интересно посмотреть кто как реализует, все по разному..

я понимаю, что поиском по форму тоже тяжко пользоваться:
http://electronix.ru/forum/index.php?showtopic=110141

Цитата
подскажите ещё такой момент, в ИАРе проект компилится нормально но попытка переместиться к телу функции например правая кнопка на SystemInit() - go to definition; выдает ошибку неправильный путь..

посмотрите в настройках проекта. возможно, указано несколько путей.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Feb 14 2013, 12:14
Сообщение #16


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Мне кажится ТС хочет ного-дрыганьем получить 50МГц, у него это не получается и он думает что, что то не так настроено.

ТС раскажите что вы хотите получить ?

P.S. Не умеет STM32 махать ногами с большой скоростью.
Go to the top of the page
 
+Quote Post
Flexz
сообщение Feb 14 2013, 17:38
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Цитата(MALLOY2 @ Feb 14 2013, 16:14) *
P.S. Не умеет STM32 махать ногами с большой скоростью.

Неправда ваша. Замечательно махает на частоте 1/2 системной, без использования таймера. Правда на младших моделях (без акселератора и кеша, stm32f1 и ниже) я не замерял, но думаю если разместить код в озу - замахает.

А настройки порта определяют крутизну фронтов.
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 19 2013, 04:12
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



мне немного не понятна связь между системной частотой(вывел на мсо) и частотой дрыганья ноги.. (так много 20?? тактов требуется на то чтоб порт пееключить?) и почему stm32f107(макс f=72) работает на 142 мгц???)

системная мгц: 40 72 142
нога мгц: 1 2 3.4

CODE
#include "stm32f10x.h"
#include "bits.h"
#include "pet.h"
#include "stm32f10x.h"
#include "stm32f10x_conf.h"
#include "stdlib.h"



unsigned long d, e;
GPIO_InitTypeDef GPIO_InitStructure;// позволяет в дальнейшем в программе пользоваться настройкой портов через структуры
//uchar HSEStartUpStatus;


//VVVVVVVVVVVVVVVVVVVVV main() VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
void main()
{
//SystemInit();//библиотечная функция

sys_clock();
portA8_as_MCO;// установим порт А8 как МСО=sysclock
port_init(D,7,50,Out,PP); // настроить порт D.7 на выход 50 мегагерц, PushPull

//VVVVVVVVVVVVVVVVVVVVV Основной цикл VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
while (1)
{
pin_off(D,7);
//for (d=0; d<10; ++d){e ++;};
pin_on(D,7);
//for (d=0; d<10; ++d){e ++;};

}//^^^^^^^^^^^^^^^^^^^^^^^ Основной цикл ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}//^^^^^^^^^^^^^^^^^^^^^^^^ main() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

CODE
//defines for STM32F10x

#define test_bit(domain,reg,bit) domain## -> ##reg## &= ##bit


// функции для работы с железом stm32f10x
// Разработал Свистунов Петр
#define uchar unsigned char

// VVVVVVVVVVVVVVVVVVVVVV пин on/off VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
#define pin_on(port,bit) GPIO##port## -> ODR |= GPIO_ODR_ODR##bit // установить на порте 1
#define pin_off(port,bit) GPIO##port## -> ODR &= ~ GPIO_ODR_ODR##bit // установить на порте 0
#define pin_test(port,bit) GPIO##port## -> ODR &= GPIO_ODR_ODR##bit // возвращает истинное состояние на выводе ножки порта
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^

//vvvvvvvvvvv Конфигурируем порты: направление и максимальная частота работы портов vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
#define port_init(port,pin,speed,AForOUT,pp) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO##port##, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_##pin##;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_##speed##MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_##AForOUT##_##pp##; GPIO_Init(GPIO##port##, &GPIO_InitStructure)
// пример использования
// один раз перед майном пишем: InitTypeDef GPIO_InitStructure;// позволяет в дальнейшем в программе пользоваться настройкой портов через структуры
// далее в программе
// port_init(D,7,50,Out,PP); // настроить порт D.7 на выход 50 мегагерц PushPull
// port_init(A,8,50,AF,PP); // настроить порт D.7 как AlternFunction 50 мегагерц PushPull

#define portA8_as_MCO RCC ->CFGR |= (RCC_CFGR_MCO_2); port_init(A,8,50,AF,PP)

//vvvvvvvvvvvvvvv Частоты тактирования vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
#define HSE_on RCC -> CR |= (RCC_CR_HSEON)// Включает внешний высокоскочастотный кварц(HSE)
#define HSE_sel RCC -> CFGR &= ~(RCC_CFGR_SW_1); RCC -> CFGR |= (RCC_CFGR_SW_0)// выбираем HSE в качастве источника системного клока sysclk


CODE
#include "stm32f10x.h"
#include "bits.h"
//#include "system_stm32f10x.c"
uchar HSEStartUpStatus;

// vvvvvvvvvvvv Конфигурация портов vvvvvvvvvvvvvvvvvvvvv
void sys_clock()
{
//RCC_ClocksTypeDef RCC_ClockFreq;

/* RCC system reset(for debug purpose) */
RCC_DeInit();

/* Enable HSE */
RCC_HSEConfig(RCC_HSE_ON);

/* Wait till HSE is ready */
HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus != ERROR)
{
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

/****************************************************************/
/* HSE=25MHz, HCLK=72MHz, PCLK2=72MHz, PCLK1=36MHz */
/****************************************************************/
/* Flash 2 wait state */
FLASH_SetLatency(FLASH_Latency_2);
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* ADCCLK = PCLK2/4 */
RCC_ADCCLKConfig(RCC_PCLK2_Div6);

/* Configure PLLs *********************************************************/
/* PPL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */
RCC_PREDIV2Config(RCC_PREDIV2_Div5);
RCC_PLL2Config(RCC_PLL2Mul_8);

/* Enable PLL2 */
RCC_PLL2Cmd(ENABLE);

/* Wait till PLL2 is ready */
while (RCC_GetFlagStatus(RCC_FLAG_PLL2RDY) == RESET)
{}

/* PPL1 configuration: PLLCLK = (PLL2 / 5) * 9 = 72 MHz */
RCC_PREDIV1Config(RCC_PREDIV1_Source_PLL2, RCC_PREDIV1_Div1);
RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_4);

/* Enable PLL */
RCC_PLLCmd(ENABLE);

/* Wait till PLL is ready */
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{}

/* Select PLL as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

/* Wait till PLL is used as system clock source */
while (RCC_GetSYSCLKSource() != 0x08)
{}
}



}// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


Сообщение отредактировал super_puper - Feb 19 2013, 05:12
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 19 2013, 06:06
Сообщение #19


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(super_puper @ Feb 19 2013, 07:12) *
мне немного не понятна связь между системной частотой(вывел на мсо) и частотой дрыганья ноги..
(так много 20?? тактов требуется на то чтоб порт пееключить?) и почему stm32f107(макс f=72) работает на 142 мгц???)

А вы посмотрите по ассемблерным командам, что делаете. Например, в отладчике Keil. Или по листингу.
142 MHz - повезло. sm.gif Вопрос, сколько проживет такой микроконтроллер. Наверное, много меньше нормально работающего.
Я вот работу с внешней памятью ОЗУ (время доступа 55 ns), с которой работал при частоте микроконтроллера 72 MHz,
оставил без изменений при частоте микроконтроллера 120 MHz. Забыл исправить. И - не заработала.
Go to the top of the page
 
+Quote Post
Flexz
сообщение Feb 19 2013, 08:31
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Большую часть времени съедает вычитывание команд:
Код
FLASH_SetLatency(FLASH_Latency_2);

На каждое обращение к флешу тратится два лишних такта. Или разместите код в озу или снизте частоту процессора так что бы работать без дополнительных циклов ожидания.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 19 2013, 08:54
Сообщение #21


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Flexz @ Feb 19 2013, 11:31) *
Большую часть времени съедает вычитывание команд:
Код
FLASH_SetLatency(FLASH_Latency_2);

На каждое обращение к флешу тратится два лишних такта. Или разместите код в озу или снизте частоту процессора так что бы работать без дополнительных циклов ожидания.

Из ОЗУ будет работать медленнее. sm.gif
Не каждая команда потребует обращения к Flash. Есть буфер.
P.S. и конвейер. sm.gif
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 19 2013, 09:27
Сообщение #22


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Цитата(ViKo @ Feb 19 2013, 12:54) *
Из ОЗУ будет работать медленнее. sm.gif

Это еще почему? Вы проверяли?


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 19 2013, 09:36
Сообщение #23


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(PoReX @ Feb 19 2013, 12:27) *
Это еще почему? Вы проверяли?

Наверное, проверял.
Потому что для обращения к коду программы имеется выделенная шина. При этом одновременно данные могут читаться из ОЗУ. Если же все нужно читать из ОЗУ, сами понимаете...
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 19 2013, 09:42
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Цитата(ViKo @ Feb 19 2013, 13:36) *
Наверное, проверял.
Если же все нужно читать из ОЗУ, сами понимаете...

Так у ОЗУ частота в несколько раз выше.


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 19 2013, 09:44
Сообщение #25


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(PoReX @ Feb 19 2013, 12:42) *
Так у ОЗУ частота в несколько раз выше.

Сколько? rolleyes.gif
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 19 2013, 09:47
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Цитата(ViKo @ Feb 19 2013, 13:44) *
Сколько? rolleyes.gif

Такая же как и у ядра.


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 19 2013, 10:00
Сообщение #27


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(PoReX @ Feb 19 2013, 12:47) *
Такая же как и у ядра.

Правильно. А за сколько тактов ядро выбирает команды из буфера команд, в который они попадают из flash?
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 19 2013, 10:35
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Цитата(ViKo @ Feb 19 2013, 14:00) *
Правильно. А за сколько тактов ядро выбирает команды из буфера команд, в который они попадают из flash?

За один. Лучше скажите за сколько тактов команда попадает в буфер? Возьмем STM32F4 с частотой ядра 168МГц и такой же частотой SRAM, так вот чтобы прочитать команду из flash ему нужо ждать 5 тактов, т.е. работа с flash в 5 раз медленнее, чем с SRAM. Или я не прав?


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 19 2013, 11:14
Сообщение #29


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(PoReX @ Feb 19 2013, 13:35) *
За один. Лучше скажите за сколько тактов команда попадает в буфер? Возьмем STM32F4 с частотой ядра 168МГц и такой же частотой SRAM, так вот чтобы прочитать команду из flash ему нужо ждать 5 тактов, т.е. работа с flash в 5 раз медленнее, чем с SRAM. Или я не прав?

Не правы.
У этого микроконтроллера 128-битовая шина доступа к Flash. А команды могут быть 16-битовые или 32-битовые. Итого, в лучшем случае, читается сразу 8 команд. В худшем 4.
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 19 2013, 11:41
Сообщение #30


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Цитата(ViKo @ Feb 19 2013, 15:14) *
Не правы.
У этого микроконтроллера 128-битовая шина доступа к Flash. А команды могут быть 16-битовые или 32-битовые. Итого, в лучшем случае, читается сразу 8 команд. В худшем 4.

128-битовая шина - это хорошо, но только для кода без ветвлений. Может есть какие-нибудь статьи с тестами выполнения кода из flash и SRAM?


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 20 2013, 02:09
Сообщение #31


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



в установках компилятора поставил оптимизацию по скорости, ногодрыганье увеличелось в разы на частоте системной 72 нога дрыгается 3.3мгц
Go to the top of the page
 
+Quote Post
bav
сообщение Feb 20 2013, 06:22
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



Цитата
в установках компилятора поставил оптимизацию по скорости, ногодрыганье увеличелось в разы на частоте системной 72 нога дрыгается 3.3мгц

Вы еще DMA задействуйте...
Go to the top of the page
 
+Quote Post
Allregia
сообщение Feb 20 2013, 08:15
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



О скорости ногодрыганья: http://electronix.ru/forum/index.php?showt...p;#entry1138658
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 20 2013, 08:18
Сообщение #34


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(super_puper @ Feb 20 2013, 05:09) *
в установках компилятора поставил оптимизацию по скорости, ногодрыганье увеличелось в разы на частоте системной 72 нога дрыгается 3.3мгц

Если хотите увеличить скорость дрыгания ногами, используйте регистры сброса и установки битов в порте, вместо выходного регистра.
Go to the top of the page
 
+Quote Post
super_puper
сообщение Feb 21 2013, 05:36
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 222
Регистрация: 14-12-12
Из: новосибирск
Пользователь №: 74 845



спасибо за совет, по позже попробую, не подскажите где взять примеры программирования таймеров?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 21 2013, 06:00
Сообщение #36


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(super_puper @ Feb 21 2013, 08:36) *
спасибо за совет, по позже попробую, не подскажите где взять примеры программирования таймеров?

Попробуйте сейчас, не тяните кота в долгий ящик.
Примеры программирования таймеров - на форуме, их там десятки...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 26 2013, 14:14
Сообщение #37


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(super_puper @ Feb 20 2013, 05:09) *
в установках компилятора поставил оптимизацию по скорости, ногодрыганье увеличелось в разы на частоте системной 72 нога дрыгается 3.3мгц

У меня STM32F207ZC на частоте 120 MHz дрыгает ногой с периодом 5 тактов (41.6 ns): 1 такт висит в 0, 4 такта висит в 1 и переходит в начало цикла.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01759 секунд с 7
ELECTRONIX ©2004-2016