13.10.2012, 12:41
|
|
Прописка
Регистрация: 19.05.2012
Сообщений: 99
Сказал спасибо: 0
Сказали Спасибо 10 раз(а) в 8 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Цитата:
|
ИТОГО три таблицй займут ровно 1024 байта !!!
|
однако... неужели это стоит экономии одной микросекунды (или даже меньше, нужно считать...) ?
|
|
|
|
13.10.2012, 14:31
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Boba_spb
|
Ну, например для AVR ки, в R16 - уже байт
Вот три команды -
ldi ZH,(High)SymLow*2
mov ZL,R16
lpm R17,Z
и в R17 уже НЕХ.младшей тетрады
еще пару команд
ldi ZH,(High)SymHigh*2
lpm R18,Z
и в R18 уже НЕХ.старшей тетрады
|
Ну я ж сказал, для однобайтного числа (8 бит) нужно составить две таблицы по 256 байт каждая, всего 512.
Покажите теперь в соответствии с вашим табличным подходом, таблицы для двухбайтного числа (16 бит). Повторю, что нужны четыре таблицы по 65536 байт каждая. Пожалуйста, подтвердите или опровергните
|
|
|
|
13.10.2012, 20:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
int a=0xABCD;
срфк str[256];
char unsigned *ptD=(char unsigned*)&a;
short *ptS=(short *)&str;
short *ptT=(short *)Symbol_hex;
*ptS++=ptT[*ptD++];
*ptS++=ptT[*ptD++];
про Symbl_Hex гляньте выше за пару постов.
Все, пора закрывать про hex.
Нам по молодости приходилось БПФ реализовывать на MCS51, А тут про таблицы понять не могут - килобайты мерещатся.
Я первый раз писал для MCS51 в 1989 году. ПЗУ тады ультрафиалетом стирались. Жизнь заставляла писать коротко, да что б работало быстро.
Сейчас под задачу выбирай что хочешь - цена вопроса даже на литр приличной водки не тянет. И пиши на чем хочешь и сколько хочешь. Если только .....
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
14.10.2012, 19:56
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
1. Прежде всего, Boba_spb, спасибо за разъяснение метода байтовой адресации в программе на си, и, хотя в примерах много напутано, удалось малёк разобраться. В итоге мои знания о программировании на си немного продвинулись вперёд.
2. По мне, так ссылаться на прошлые заслуги это моветон. мало ли кто и что делал по молодости, или даже сейчас. Я же не ссылаюсь на аналитические функции и как удалось подвинуть вбок теорию Котельникова...
|
|
|
|
17.10.2012, 19:49
|
|
Прописка
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Проблема с stm32f105rc.
Кварц на 12MHz.
IAR.
Что-то я с частотой срабатывания прерывания SysTick_Handler не смог согласиться.
Начал копать на какой же скорости работает камень.
Только на ноге ПортА пин 1 ничего не весит. Решил его "подергать".
Так вот
инициализация генератора:
Код:
|
void InitRCC(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
/* 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 Prefetch Buffer */
FLASH-›ACR |= FLASH_ACR_PRFTBE;
/* Flash 2 wait state */
FLASH-›ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH-›ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
/* HCLK = SYSCLK */
RCC-›CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK */
RCC-›CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK */
RCC-›CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
RCC-›CFGR2 = 0;
/* Enable PLL2 */
RCC-›CR |= RCC_CR_PLL2ON;
/* Wait till PLL2 is ready */
while((RCC-›CR & RCC_CR_PLL2RDY) == 0)
{
}
/* PLL configuration: PLLCLK = PREDIV1 * 6 = 72 MHz */
RCC-›CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);
RCC-›CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 |
RCC_CFGR_PLLMULL6); //RCC_CFGR_PLLMULL9);
/* Enable PLL */
RCC-›CR |= RCC_CR_PLLON;
/* Wait till PLL is ready */
while((RCC-›CR & RCC_CR_PLLRDY) == 0)
{
}
/* Select PLL as system clock source */
RCC-›CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC-›CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
/* Wait till PLL is used as system clock source */
while ((RCC-›CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
{
}
}
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 */
}
} |
Инициализация порта:
Код:
|
void common_port_init(void)
{
RCC-›APB2ENR |= RCC_APB2ENR_IOPAEN // takting Ports
| RCC_APB2ENR_IOPBEN
| RCC_APB2ENR_IOPCEN
| RCC_APB2ENR_IOPDEN ;
RCC-›APB2ENR |= RCC_APB2ENR_AFIOEN; // takting alternate function
GPIOA-›CRL = 0;
GPIOA-›CRH = 0;
GPIOB-›CRL = 0;
GPIOB-›CRH = 0;
GPIOC-›CRL = 0;
GPIOC-›CRH = 0;
GPIOD-›CRL = 0;
GPIOD-›CRH = 0;
AFIO-›MAPR |= AFIO_MAPR_SWJ_CFG_1; // ((uint32_t)0x02000000) /*!‹ Bit 1 */
// Bits 26:24 SWJ_CFG[2:0]: Serial wire JTAG configuration
// 010: JTAG-DP Disabled and SW-DP Enabled
} |
затем еще отдельно по PortA.1:
Код:
|
GPIOA-›CRL |= GPIO_CRL_MODE1; //50MHz set b11000 output max speed 50MHz ((uint32_t)0x00000030) =b 11 0000
GPIOA-›CRL &= ~GPIO_CRL_CNF1; //reset 00 p-p mode pin 1 ((uint32_t)0x000000C0) =b 1100 0000 |
И дергаем ногу:
Код:
|
while(1)
{
GPIOA-›BSRR = GPIO_BSRR_BS1;
GPIOA-›BSRR = GPIO_BSRR_BR1;
}
} |
И на выходе получаю.... см. осцилограмму
Вопрос: почему такая низкая частота - ок. 1,4МГц?
Периферия тактируется на 36МГц. Ядро должно быть 72.
Ожидал около 5МГц. Да и под 10 возможно...
Да и почему форма сигнала пила? На нове ничего нету кроме разьема.
Плата дисковери с 24МГц с аналогичным дерганьем Б порта дает 3,4МГц и форма сигнала - прямоугольник...
З.Ы.
Не пинайте. Код не мой. Дописываю.
|
|
|
|
17.10.2012, 22:37
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
судя по амплитуде, на выходе шум от соседей, но никак не сигнал
|
|
|
|
17.10.2012, 23:21
|
|
Прописка
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Hives
|
судя по амплитуде, на выходе шум от соседей, но никак не сигнал
|
дамс таких частот там не найду.... Есть плис, от которой по прерыванию МК получает пакет 4700раз в секунду.
Но когда снимал осцилограмму прерывания были запрещены.
Еще есть матрица, которая тактируется 10МГц. На такой же частоте и ацп работает.
Затем плис переваоивает и дает в мк.
|
|
|
|
17.10.2012, 23:24
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
pasipaka, ловите генератор кода. Очень легко запустите ваш кварц.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
|
|
|
17.10.2012, 23:25
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
pasipaka это, несомненно, очень интересно, но не по делу.
Easyrider83 так у него код уже сгенеренный мастером.
|
|
|
|
18.10.2012, 07:18
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Допилил демку, BMP085 + отладочная плата HY-MINI STM32. Рассчеты целочисленный и с плавающей точкой. последний по доке: http://wmrx00.sourceforge.net/Arduino/BMP085-Calcs.pdf Единственно что неудобно для сравнения целочисленного метода и с плавающей точкой - берутся разные семплы, по этому исходные данные не идентичны в расчетах.
http://serg22.sibgtu.ru/radio/BMP085_Stm32.rar
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:16.
|
|