Пн сен 14, 2020 17:51:42
Если бы я знал! Хочу всего и побольше. То, журналирование, что был сделавши на 24c512, где на один фрейм писался всего один байт (1000 фреймов в секунду), мне маловато. И даже на этих соревнованиях я эту информацию не собирал. Там я вижу только грубую картинку, что видят фото сенсоры:Ser60 писал(а):Насчёт SDIO
08.738,...##...
08.739,...##...
08.740,...##...
08.741,...##...
08.742,...##...
08.743,...##...
08.744,...##...
08.745,...##...
08.746,...##...
08.747,..####..
08.748,.#####..
08.749,#######.
08.750,#######.
08.751,########
08.752,########
08.753,########
08.754,########
08.755,########
08.756,########
08.757,########
08.758,##.#####
08.759,#..##.##
08.760,#..##..#
08.761,...##..#
08.762,...##...
08.763,...##...
08.764,...##...
08.765,...##...
08.766,...##...
08.767,...##...
08.768,...##...
Пн сен 14, 2020 20:51:22
Вт сен 22, 2020 23:04:22
#ifndef RXBUFSIZE
#define RXBUFSIZE 8 /**< Buffer size for RX */
#endif
Вт сен 22, 2020 23:18:09
Сб сен 26, 2020 23:13:41
Если это обязательно, то ну его нафик. Если мне это сильно понадобится, возьму или синюю таблетку, или cy8ckit-049 и напишу сам что надо. Пока это вариант не двигаю, так как считать это одно, а еще надо расшифровать - привести в "читаемый" вид. А под виндовс, у меня как-то нет опыта. Под FreeBSD там был мощный bash, grep, awk. на худой конец perl и cc, а под виндовсом есть какой-то power и где-то спрятанный c# - их еще найти надо. Специально, наверное, спрятали от юзеров.NOTE: The I2C (24LC) Serial EEPROM devices require the following PICkit 3
hardware changes to work properly:
Remove TR3 from the PICkit 3.
Remove R50 from the PICkit 3.
Вс окт 04, 2020 18:29:59
Вс окт 04, 2020 20:30:57
Вс окт 04, 2020 21:47:38
Вс окт 04, 2020 22:48:33
Пт окт 16, 2020 15:37:18
Пт окт 30, 2020 21:12:59
if (Enc_Left_B) {
// Идём назад
} else {
// Идём вперед
}
if (Enc_Left_B ^ Enc_Left_A) {
// Идём вперед
} else {
// Идём назад
}
Пт окт 30, 2020 21:27:50
Может лучше ШИМ захват?uldemir писал(а):я сконфигурировал делать захват (и прерывание) и по фронту, и по спаду, а в обработчике про это забыл и писал
Таймеры STM32 могут работать с энкодерами.uldemir писал(а):Так выглядят "идеализированные" сигналы с таходатчиков (инкрементального энкодера).
Надеюсь что комп мощный потому что IDE на основе Eclipse - тормоза!uldemir писал(а):Так что, долой кейл, ставим CubeIDE.
Пт окт 30, 2020 22:01:42
Пт окт 30, 2020 22:15:22
Мгм, знаю, но мне нужно не только считать расстояние, но и измерять скорость вращения чтобы на двигатели сделать ПИД-регулятор. Можно подать на два таймера разом, но тогда нужен будет очень многоногий кристалл, чтобы все нужные каналы захвата были доступны (и для энкодеров мне нужно 2 32-разрядных таймеров, мне лень вторую половину считать программно, раз уж начал делать аппаратно и для периода удобно имень еще 2 таких же... надо посмотреть, есть у ST такой кристалл с 4 32-разрядными счетчиками?)Мурик писал(а):Таймеры STM32 могут работать с энкодерами.
Это когда один канал захватывает фронт, а другой спад? Собственно, это мне лень было писать, что как средство уменьшения помех - считать отдельно периоды между фронтами и между спадами, и для другого канала тоже. Это как фильтр с усреднением с N=2 или 4. Тогда источником погрешностей должен остаться только магнитный диск. Но, это приведёт к задержке актуальных данных. Снова 21-я лаба - для подавления шумов пропускать через фильтры - улучшаем сигнал/шум, но получаем задержку. А если задержка станет слишком большой, стабильность ПИД-регулировки тю-тю. Ну это я могу сделать программно.Мурик писал(а):Может лучше ШИМ захват?
Комп так себе. Но с эклипсом так и так приходится иметь дело: Code Compose Studio = eclipse, Simplicity Studio = eclipse. Да, он запускается ооооочень долго. НО! Вот этот проект сгенерённый кубом и HAL-овскими библиотеками Кейл жуёт 9 с половиной минут на моём компе, а CubeIDE - всего полторы минуты - это полный clean and rebuild проекта. В чем тут подвох - не понимаю.Мурик писал(а):Надеюсь что комп мощный потому что IDE на основе Eclipse - тормоза!
Спасибо, но я просто подожду. Станет скучно, сам начну с ними играться. На этой плате еще есть датчик освещенности. И в дополнительных заданиях предлагается роботу искать место накрытое крышей при помощи этого датчика. Жаль, что этот сенсор цвета не распознаёт. Но вот как датчик стоящий сверху, заставить видеть, что находится под роботом? И возникла мысль, что можно было бы воспользоваться световодами. Надо бы выкопать тослинковский кабель и посмотреть, будет ли это работать? Тогда я могу сенсор расположить там где мне удобнее, а свет подавать таким световодом.Ser60 писал(а):Могу с этим помочь:
Сб окт 31, 2020 00:29:08
Долго! Самый тежеловесный проект для STM32H7, сгененированный кубом у меня компилируется секунд за 30 максимум.uldemir писал(а):Вот этот проект сгенерённый кубом и HAL-овскими библиотеками Кейл жуёт 9 с половиной минут на моём компе, а CubeIDE - всего полторы минуты
Cleaned "H750_LL - Release"
---------- Сборка: Release in H750_LL ----------
[ 0,8%] Компиляция: HAL\Src\stm32h7xx_hal.c
[ 1,7%] Компиляция: HAL\Src\stm32h7xx_hal_adc.c
[ 2,5%] Компиляция: HAL\Src\stm32h7xx_hal_adc_ex.c
[ 3,3%] Компиляция: HAL\Src\stm32h7xx_hal_cec.c
[ 4,2%] Компиляция: HAL\Src\stm32h7xx_hal_comp.c
[ 5,0%] Компиляция: HAL\Src\stm32h7xx_hal_cortex.c
[ 5,8%] Компиляция: HAL\Src\stm32h7xx_hal_crc.c
[ 6,7%] Компиляция: HAL\Src\stm32h7xx_hal_crc_ex.c
[ 7,5%] Компиляция: HAL\Src\stm32h7xx_hal_cryp.c
[ 8,3%] Компиляция: HAL\Src\stm32h7xx_hal_cryp_ex.c
[ 9,2%] Компиляция: HAL\Src\stm32h7xx_hal_dac.c
[ 10,0%] Компиляция: HAL\Src\stm32h7xx_hal_dac_ex.c
[ 10,8%] Компиляция: HAL\Src\stm32h7xx_hal_dcmi.c
[ 11,7%] Компиляция: HAL\Src\stm32h7xx_hal_dfsdm.c
[ 12,5%] Компиляция: HAL\Src\stm32h7xx_hal_dfsdm_ex.c
[ 13,3%] Компиляция: HAL\Src\stm32h7xx_hal_dma.c
[ 14,2%] Компиляция: HAL\Src\stm32h7xx_hal_dma2d.c
[ 15,0%] Компиляция: HAL\Src\stm32h7xx_hal_dma_ex.c
[ 15,8%] Компиляция: HAL\Src\stm32h7xx_hal_dsi.c
[ 16,7%] Компиляция: HAL\Src\stm32h7xx_hal_dts.c
[ 17,5%] Компиляция: HAL\Src\stm32h7xx_hal_eth.c
[ 18,3%] Компиляция: HAL\Src\stm32h7xx_hal_eth_ex.c
[ 19,2%] Компиляция: HAL\Src\stm32h7xx_hal_exti.c
[ 20,0%] Компиляция: HAL\Src\stm32h7xx_hal_fdcan.c
[ 20,8%] Компиляция: HAL\Src\stm32h7xx_hal_flash.c
[ 21,7%] Компиляция: HAL\Src\stm32h7xx_hal_flash_ex.c
[ 22,5%] Компиляция: HAL\Src\stm32h7xx_hal_gfxmmu.c
[ 23,3%] Компиляция: HAL\Src\stm32h7xx_hal_gpio.c
[ 24,2%] Компиляция: HAL\Src\stm32h7xx_hal_hash.c
[ 25,0%] Компиляция: HAL\Src\stm32h7xx_hal_hash_ex.c
[ 25,8%] Компиляция: HAL\Src\stm32h7xx_hal_hcd.c
[ 26,7%] Компиляция: HAL\Src\stm32h7xx_hal_hrtim.c
[ 27,5%] Компиляция: HAL\Src\stm32h7xx_hal_hsem.c
[ 28,3%] Компиляция: HAL\Src\stm32h7xx_hal_i2c.c
[ 29,2%] Компиляция: HAL\Src\stm32h7xx_hal_i2c_ex.c
[ 30,0%] Компиляция: HAL\Src\stm32h7xx_hal_i2s.c
[ 30,8%] Компиляция: HAL\Src\stm32h7xx_hal_i2s_ex.c
[ 31,7%] Компиляция: HAL\Src\stm32h7xx_hal_irda.c
[ 32,5%] Компиляция: HAL\Src\stm32h7xx_hal_iwdg.c
[ 33,3%] Компиляция: HAL\Src\stm32h7xx_hal_jpeg.c
[ 34,2%] Компиляция: HAL\Src\stm32h7xx_hal_lptim.c
[ 35,0%] Компиляция: HAL\Src\stm32h7xx_hal_ltdc.c
[ 35,8%] Компиляция: HAL\Src\stm32h7xx_hal_ltdc_ex.c
[ 36,7%] Компиляция: HAL\Src\stm32h7xx_hal_mdios.c
[ 37,5%] Компиляция: HAL\Src\stm32h7xx_hal_mdma.c
[ 38,3%] Компиляция: HAL\Src\stm32h7xx_hal_mmc.c
[ 39,2%] Компиляция: HAL\Src\stm32h7xx_hal_mmc_ex.c
[ 40,0%] Компиляция: HAL\Src\stm32h7xx_hal_nand.c
[ 40,8%] Компиляция: HAL\Src\stm32h7xx_hal_nor.c
[ 41,7%] Компиляция: HAL\Src\stm32h7xx_hal_opamp.c
[ 42,5%] Компиляция: HAL\Src\stm32h7xx_hal_opamp_ex.c
[ 43,3%] Компиляция: HAL\Src\stm32h7xx_hal_ospi.c
[ 44,2%] Компиляция: HAL\Src\stm32h7xx_hal_otfdec.c
[ 45,0%] Компиляция: HAL\Src\stm32h7xx_hal_pcd.c
[ 45,8%] Компиляция: HAL\Src\stm32h7xx_hal_pcd_ex.c
[ 46,7%] Компиляция: HAL\Src\stm32h7xx_hal_pssi.c
[ 47,5%] Компиляция: HAL\Src\stm32h7xx_hal_pwr.c
[ 48,3%] Компиляция: HAL\Src\stm32h7xx_hal_pwr_ex.c
[ 49,2%] Компиляция: HAL\Src\stm32h7xx_hal_qspi.c
[ 50,0%] Компиляция: HAL\Src\stm32h7xx_hal_ramecc.c
[ 50,8%] Компиляция: HAL\Src\stm32h7xx_hal_rcc.c
[ 51,7%] Компиляция: HAL\Src\stm32h7xx_hal_rcc_ex.c
[ 52,5%] Компиляция: HAL\Src\stm32h7xx_hal_rng.c
[ 53,3%] Компиляция: HAL\Src\stm32h7xx_hal_rng_ex.c
[ 54,2%] Компиляция: HAL\Src\stm32h7xx_hal_rtc.c
[ 55,0%] Компиляция: HAL\Src\stm32h7xx_hal_rtc_ex.c
[ 55,8%] Компиляция: HAL\Src\stm32h7xx_hal_sai.c
[ 56,7%] Компиляция: HAL\Src\stm32h7xx_hal_sai_ex.c
[ 57,5%] Компиляция: HAL\Src\stm32h7xx_hal_sd.c
[ 58,3%] Компиляция: HAL\Src\stm32h7xx_hal_sd_ex.c
[ 59,2%] Компиляция: HAL\Src\stm32h7xx_hal_sdram.c
[ 60,0%] Компиляция: HAL\Src\stm32h7xx_hal_smartcard.c
[ 60,8%] Компиляция: HAL\Src\stm32h7xx_hal_smartcard_ex.c
[ 61,7%] Компиляция: HAL\Src\stm32h7xx_hal_smbus.c
[ 62,5%] Компиляция: HAL\Src\stm32h7xx_hal_spdifrx.c
[ 63,3%] Компиляция: HAL\Src\stm32h7xx_hal_spi.c
[ 64,2%] Компиляция: HAL\Src\stm32h7xx_hal_spi_ex.c
[ 65,0%] Компиляция: HAL\Src\stm32h7xx_hal_sram.c
[ 65,8%] Компиляция: HAL\Src\stm32h7xx_hal_swpmi.c
[ 66,7%] Компиляция: HAL\Src\stm32h7xx_hal_tim.c
[ 67,5%] Компиляция: HAL\Src\stm32h7xx_hal_tim_ex.c
[ 68,3%] Компиляция: HAL\Src\stm32h7xx_hal_uart.c
[ 69,2%] Компиляция: HAL\Src\stm32h7xx_hal_uart_ex.c
[ 70,0%] Компиляция: HAL\Src\stm32h7xx_hal_usart.c
[ 70,8%] Компиляция: HAL\Src\stm32h7xx_hal_usart_ex.c
[ 71,7%] Компиляция: HAL\Src\stm32h7xx_hal_wwdg.c
[ 72,5%] Компиляция: LL\Src\stm32h7xx_ll_adc.c
[ 73,3%] Компиляция: LL\Src\stm32h7xx_ll_bdma.c
[ 74,2%] Компиляция: LL\Src\stm32h7xx_ll_comp.c
[ 75,0%] Компиляция: LL\Src\stm32h7xx_ll_crc.c
[ 75,8%] Компиляция: LL\Src\stm32h7xx_ll_crs.c
[ 76,7%] Компиляция: LL\Src\stm32h7xx_ll_dac.c
[ 77,5%] Компиляция: LL\Src\stm32h7xx_ll_delayblock.c
[ 78,3%] Компиляция: LL\Src\stm32h7xx_ll_dma.c
[ 79,2%] Компиляция: LL\Src\stm32h7xx_ll_dma2d.c
[ 80,0%] Компиляция: LL\Src\stm32h7xx_ll_exti.c
[ 80,8%] Компиляция: LL\Src\stm32h7xx_ll_fmc.c
[ 81,7%] Компиляция: LL\Src\stm32h7xx_ll_gpio.c
[ 82,5%] Компиляция: LL\Src\stm32h7xx_ll_hrtim.c
[ 83,3%] Компиляция: LL\Src\stm32h7xx_ll_i2c.c
[ 84,2%] Компиляция: LL\Src\stm32h7xx_ll_lptim.c
[ 85,0%] Компиляция: LL\Src\stm32h7xx_ll_lpuart.c
[ 85,8%] Компиляция: LL\Src\stm32h7xx_ll_mdma.c
[ 86,7%] Компиляция: LL\Src\stm32h7xx_ll_opamp.c
[ 87,5%] Компиляция: LL\Src\stm32h7xx_ll_pwr.c
[ 88,3%] Компиляция: LL\Src\stm32h7xx_ll_rcc.c
[ 89,2%] Компиляция: LL\Src\stm32h7xx_ll_rng.c
[ 90,0%] Компиляция: LL\Src\stm32h7xx_ll_rtc.c
[ 90,8%] Компиляция: LL\Src\stm32h7xx_ll_sdmmc.c
[ 91,7%] Компиляция: LL\Src\stm32h7xx_ll_spi.c
[ 92,5%] Компиляция: LL\Src\stm32h7xx_ll_swpmi.c
[ 93,3%] Компиляция: LL\Src\stm32h7xx_ll_tim.c
[ 94,2%] Компиляция: LL\Src\stm32h7xx_ll_usart.c
[ 95,0%] Компиляция: LL\Src\stm32h7xx_ll_usb.c
[ 95,8%] Компиляция: LL\Src\stm32h7xx_ll_utils.c
[ 96,7%] Компиляция: src\main.c
[ 97,5%] Компиляция: src\startup_stm32h750xx.S
[ 98,3%] Компиляция: src\system_stm32h7xx.c
[ 99,2%] Linking executable: bin\Release\H750_LL.elf
[100,0%] Creating Hex-file.
||Program size (bytes): 1844|
||Data size (bytes): 16|
||BSS size (bytes): 28|
|| ----------|
||Total size (bytes): 1888 (R/W Memory: 44)|
|||
||=== Сборка закончена: 0 errors, 0 warnings (0 minutes, 26 seconds) ===|
Сб окт 31, 2020 05:30:03
Сб окт 31, 2020 10:43:26
Сб окт 31, 2020 19:45:05
Сб ноя 07, 2020 20:55:07
//configure P10.0 - P10.3 as primary module function
#define UCB3SOMI (1u << 3)
#define UCB3SIMO (1u << 2)
#define UCB3CLK (1u << 1)
#define UCB3STE (1u << 0)
#define NSS (BITBAND_PERI(P10->OUT, 0))
static volatile uint8_t *spi_buffer_rx_ptr, *spi_buffer_tx_ptr;
static volatile unsigned int spi_buffer_rx_count=0, spi_buffer_tx_count = 0, spi_countdown = 0, spi_count = 0;
void SPI_EEProm_Init(void) {
EUSCI_B3->CTLW0 = EUSCI_B_CTLW0_SWRST; //0x0001; // hold the eUSCI module in reset mode
EUSCI_B3->CTLW0 = EUSCI_B_CTLW0_CKPH | EUSCI_B_CTLW0_MSB | EUSCI_B_CTLW0_MST |
EUSCI_B_CTLW0_MODE_2 | EUSCI_B_CTLW0_SYNC | EUSCI_B_CTLW0_SSEL__SMCLK |
EUSCI_B_CTLW0_STEM | EUSCI_B_CTLW0_SWRST;
EUSCI_B3->BRW = 12; // 1 MHz
P10->SEL0 |= (UCB3SIMO | UCB3SOMI | UCB3CLK); // | UCB3STE);
P10->SEL1 &= ~(UCB3SIMO | UCB3SOMI | UCB3CLK); // | UCB3STE); //configure P10.1 - P10.3 as primary module function
P10->SEL0 &= ~(UCB3STE);
P10->SEL1 &= ~(UCB3STE); // configure P10.0 as GPIO (CS#)
P10->DIR |= (UCB3STE); // make P10.0 out
NSS = 1;
EUSCI_B3->CTLW0 &= ~EUSCI_B_CTLW0_SWRST; // enable eUSCI module
EUSCI_B3->RXBUF; // Сброс прерываний
EUSCI_B3->RXBUF; // Reset possible pending irq
EUSCI_B3->IE |= EUSCI_B_IE_RXIE;
EUSCI_B3->IE &= ~(EUSCI_B_IE_TXIE); // disable TX interrupts
NVIC_EnableIRQ(EUSCIB3_IRQn);
NVIC_SetPriority(EUSCIB3_IRQn, 4);
}
static void spi_write(unsigned char* send_data_ptr, unsigned int send_count, \
unsigned char* receive_ptr, unsigned int receive_count) {
while (EUSCI_B3->STATW & UCBUSY) continue;
NSS = 0;
spi_buffer_tx_ptr = send_data_ptr;
spi_buffer_rx_ptr = receive_ptr;
spi_buffer_tx_count = send_count;
spi_countdown = send_count;
spi_count = send_count + receive_count;
spi_buffer_rx_count = receive_count;
EUSCI_B3->IE |= EUSCI_B_IE_TXIE | EUSCI_B_IE_RXIE;
while (spi_count) continue;
NSS = 1;
}
void EUSCIB3_IRQHandler(void) {
switch (EUSCI_B3->IV) {
case 4: // tx buffer empty
if (spi_buffer_tx_count) {
spi_buffer_tx_count--;
EUSCI_B3->TXBUF = *spi_buffer_tx_ptr++;
if ((spi_buffer_tx_count | spi_buffer_rx_count) == 0) EUSCI_B3->IE &= ~EUSCI_B_IE_TXIE;
} else if (spi_buffer_rx_count--) {
EUSCI_B3->TXBUF = 0xFF;
if (spi_buffer_rx_count == 0) EUSCI_B3->IE &= ~EUSCI_B_IE_TXIE;
}
break;
case 2: // rx buffer full
if (spi_countdown) {
spi_countdown--;
EUSCI_B3->RXBUF;
} else {
*spi_buffer_rx_ptr++ = EUSCI_B3->RXBUF;
}
if (spi_count) spi_count--;
break;
}
}
void spi_read_eeprom(unsigned int ee_address, unsigned char * ram_address, unsigned int ee_size) {
uint8_t read_command_string[4];
read_command_string[0] = eeprom_read_data;
read_command_string[1] = ((ee_address & 0x0ff0000) >> 16) & 0xFF;
read_command_string[2] = ((ee_address & 0x000FF00) >> 8) & 0xFF;
read_command_string[3] = ((ee_address & 0x00000ff) >> 0) & 0xFF;
spi_write(read_command_string, sizeof(read_command_string), ram_address, ee_size);
}
Пт ноя 13, 2020 02:09:27