Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 07.07.2021, 13:54  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ты же, как программист, должен понимать, что нуль тоже данные.
Реклама:
sat_art вне форума  
Непрочитано 07.07.2021, 15:48  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Однако, одно дело, когда ты всегда детерминированные значения получаешь в случае отсутствия данных, и совсем другое — когда случайные. Ведь SPI в режиме слейва, если данных для отправки нет, отбрасывает "дно" FIFO, а это — четвертый с конца элемент. Ладно бы хоть последний…
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 24.07.2021, 11:57  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Какая-то адова чертовщина у меня с попытками ввести программно STM32F042 в DFU. Вот код:
Код:
#define SYSMEM03x 0x1FFFEC00
#define SYSMEM04x 0x1FFFC400
#define SYSMEM05x 0x1FFFEC00
#define SYSMEM07x 0x1FFFC800
#define SYSMEM09x 0x1FFFD800
// define SystemMem to other in MAKEFILE
#ifndef SystemMem
#define SystemMem SYSMEM04x
#endif

void Jump2Boot(){
    __disable_irq();
    void (*SysMemBootJump)(void);
    volatile uint32_t addr = SystemMem;
    // reset systick
    SysTick-›CTRL = 0;
    // reset clocks
    RCC-›APB1RSTR = RCC_APB1RSTR_CECRST    | RCC_APB1RSTR_DACRST    | RCC_APB1RSTR_PWRRST    | RCC_APB1RSTR_CRSRST  |
                    RCC_APB1RSTR_CANRST    | RCC_APB1RSTR_USBRST    | RCC_APB1RSTR_I2C2RST   | RCC_APB1RSTR_I2C1RST |
                    RCC_APB1RSTR_USART4RST | RCC_APB1RSTR_USART3RST | RCC_APB1RSTR_USART2RST | RCC_APB1RSTR_SPI2RST |
                    RCC_APB1RSTR_WWDGRST   | RCC_APB1RSTR_TIM14RST  |
#ifdef STM32F072xB
            RCC_APB1RSTR_TIM7RST   | RCC_APB1RSTR_TIM6RST |
#endif
                    RCC_APB1RSTR_TIM3RST   | RCC_APB1RSTR_TIM2RST;
    RCC-›APB2RSTR = RCC_APB2RSTR_DBGMCURST | RCC_APB2RSTR_TIM17RST | RCC_APB2RSTR_TIM16RST |
#ifdef STM32F072xB
            RCC_APB2RSTR_TIM15RST |
#endif
                    RCC_APB2RSTR_USART1RST | RCC_APB2RSTR_SPI1RST  | RCC_APB2RSTR_TIM1RST  | RCC_APB2RSTR_ADCRST   | RCC_APB2RSTR_SYSCFGRST;
    RCC-›AHBRSTR = 0;
    RCC-›APB1RSTR = 0;
    RCC-›APB2RSTR = 0;
    __DSB();
    // remap system flash memory to 0 (only for STM32F0)
    SYSCFG-›CFGR1 = 0x01; __DSB(); __ISB();
    SysMemBootJump = (void (*)(void)) (*((uint32_t *)(addr + 4)));
    // set main stack pointer
    __set_MSP(*((uint32_t *)addr));
    // jump to bootloader
    SysMemBootJump();
}
На F072 (с соответствующим дефайном) он работает. А здесь - фигвам! Думал уж, что из-за вотчдога, но нет: без "собаки" тоже не работает.
Вместо того, чтобы выйти в режим DFU, оно заново перезапускается:
Код:
[  401.785411] usb 7-1: USB disconnect, device number 2
[  401.787383] pl2303 ttyUSB0: error sending break = -19
[  401.787517] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[  401.787526] pl2303 7-1:1.0: device disconnected
[  402.090390] usb 7-1: new full-speed USB device number 3 using uhci_hcd
[  402.215465] usb 7-1: device descriptor read/64, error -71
[  402.925481] usb 7-1: device descriptor read/64, error -71
[  403.147435] usb 7-1: new full-speed USB device number 4 using uhci_hcd
[  403.300347] usb 7-1: New USB device found, idVendor=067b, idProduct=2303, bcdDevice= 3.00
[  403.300352] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  403.300355] usb 7-1: Product: USB-Serial Controller
[  403.300358] usb 7-1: Manufacturer: Prolific Technology Inc.
[  403.303448] pl2303 7-1:1.0: pl2303 converter detected
[  403.316493] usb 7-1: pl2303 converter now attached to ttyUSB0
(у меня CDC эмулирует PL2303).
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 24.07.2021, 13:46  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 753
Сказал спасибо: 365
Сказали Спасибо 829 раз(а) в 389 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy, механизм 'Empty Check' - не оно?
AN2606 - шикарная аппнота по разным bootloader-ам.

Нажмите на изображение для увеличения
Название: AN2606_section_8.jpg
Просмотров: 0
Размер:	124.8 Кб
ID:	164228
j-Roger вне форума  
Непрочитано 24.07.2021, 14:12  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

j-Roger, спасибо, понял!
Жаль, что это так. Придется программный переход в DFU убрать из конечного варианта прошивки, чтобы юзер случайно не стер флеш МК...
UPD: факир был пьян. Если стереть страничку по адресу 0x08000000, наступает тупая перезагрузка, SysMemBootJump() не выполняется ☹
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 24.07.2021 в 14:56.
eddy вне форума  
Непрочитано 15.11.2021, 00:16  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ах, жесть! Наткнулся на косяк с инициализацией таймера в STM32F072. Больше вероятности, конечно, что я накосячил, но все-таки интересно: как только врубаю таймер и включаю прерывания по CC, МК зависает. При включенном-то watchdog'е! А обновление вотчдога только в суперлупе, там же выводятся раз в 2 секунды сообщения... И вот, сообщений нет, МК висит… Ладно, "метод Монте-Карло" не должен подвести.
UPD: виноваты были мои руки из жопы.
В общем, альфа-версия контроля трех моторов заработала, теперь нужно в железе испытывать. Если на рывках будет пропускать шаги, придется вместо красивого трапецеидального рампа скорости делать трапецеидальный рамп ускорения.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 17.11.2021 в 13:12.
eddy вне форума  
Непрочитано 11.02.2022, 21:25  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Мужики, ну подскажите, пожалуйста: не могу у STM32F303 запустить флоаты. Софтовые работают, а вот хард - фигвам!
Опции линкера:
Код:
-mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -mlittle-endian -DARM_MATH_CM4 -D __ARM_ARCH_7M__ -specs=nano.specs -lc -L../inc/ld  -Tstm32f303xB.ld -Wl,-Map=mk/usart1.map,--cref -Wl,--gc-sections -Wl,--print-memory-usage
Если указать -mfloat-abi=soft - работает, а так - нет.
В начале инициализации операции с плавающей точкой разрешаются:
Код:
SCB-›CPACR |= ((3UL ‹‹ 10*2)|(3UL ‹‹ 11*2));
softfp, кстати, тоже не работает.

Ура! Нашел решение: в стартапе я в reset_handler готовлю данные, а потом сразу вызываю main(). А уже оттуда вызываю все настройки. И тут-то нежданчик: оказывается, gcc выталкивал на стек флоаты в main() еще до инициализации FPU. Перенес инициализацию в reset_handler - заработало.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 11.02.2022 в 23:04.
eddy вне форума  
Сказали "Спасибо" eddy
mike-y-k (11.02.2022)
Непрочитано 04.04.2022, 14:58  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Подскажите, почему не работает atof(). atoi() - Работает.:

Код:
float a;
char strDec[16];
void func(){
   a=atof(strDec);
}
Работает:
Код:
int a;
char strDec[16];
void func(){
   a=atoi(strDec);
}
sanstan вне форума  
Непрочитано 04.04.2022, 20:17  
vavan1983
Почётный гражданин KAZUS.RU
 
Аватар для vavan1983
 
Регистрация: 26.12.2007
Сообщений: 1,198
Сказал спасибо: 70
Сказали Спасибо 80 раз(а) в 69 сообщении(ях)
vavan1983 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sanstan Посмотреть сообщение
Подскажите, почему не работает atof(). atoi() - Работает.:
По подробней, что да как.
vavan1983 вне форума  
Непрочитано 05.05.2022, 22:02  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Мужики, а для MLX90632 кто-нибудь приличные сниппеты встречал? А то мне все попадается какое-то непотребное абдуринство. Чем такое УГ причесывать, быстрей будет самому написать.
Может таки есть уже готовое нормальное? Или никому эти ИК-датчики и даром не впарились? (а мне вот очень надо, т.к. полноценную ИК all-sky камеру мы из-за гейских натовцев еще долго не сможем купить)

UPD: начал помаленьку... Как же эти товарищи все усложнили! Ну неужели нельзя было хотя бы little endian использовать?
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 09.05.2022 в 18:08.
eddy вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 22:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot