eddy_em: (Default)
[personal profile] eddy_em
Сегодня экспериментировал с сохранением показаний азимутального энкодера, когда телескоп останавливается (чтобы, если вдруг произойдет отключение питания, можно было эту точку восстановить). И наткнулся на непонятный косяк: на экспериментальной плате, с которой я баловался, и на плате контроллера энкодера стоят внешне одинаковые STM32F072C8T6. Однако, содержимое регистра FLASH_SIZE у "на побаловаться" — 64кБ, а у "на серьезно" — 128кБ. А я еще намедни не понимал, отчего это у меня не получается конфигурацию сохранить...
ОК, поменял в коде линкер на 072CB, и опять фигвам: в перую же страницу после кода сохраняться не хочет. ОК, забульбенил тест - каждые полсекунды инкрементировать позицию сохранения. Где-то на тысячной стало успешно сохраняться. Не понимаю. Пытаюсь стереть память — выхожу на подвисание на
while(!(FLASH->SR & FLASH_SR_EOP));

Чертовщина какая-то. ОК, заменил на:
uint32_t ctr = 0;
while(!(FLASH->SR & FLASH_SR_EOP) && ++ctr < 1000000);

Фигвам: не стирается!
Гугол подсказал лишь, что для успешного стирания флеш-памяти должен работать HSI. Но он ведь и так у меня врубается сразу же! Лишь затем я врубаю еще и HSI48 для подключения USB (но HSI сам не отключаю, проверил).

Буду разбираться, что за нафиг. Причем, на "подопытном" МК с 64кБ флеша такой засады не было!
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 05:09 pm
Powered by Dreamwidth Studios