STM32 новичку в ARM что к чему
- Сообщения: 2411
- Зарегистрирован: Ср фев 23, 2011 12:12:31
pvit, ты что правда говорил о недостаточности для этого f0?
Глупый не задает вопросы. Глупый и так все знает.
- Реклама
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Кстати, кто мне объяснит, нафига там ПИД ? ПИД в условиях случайных воздействий извне вроде ж не самый лучший регулятор.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
a5021, а там многое под большим вопросом.
А все происходящие смахивает на саморекламу себя и платформио ...
А все происходящие смахивает на саморекламу себя и платформио ...
- Сообщения: 191
- Зарегистрирован: Вт июн 05, 2018 00:18:01
[uquote="AndTer",url="/forum/viewtopic.php?p=3459070#p3459070"]pvit, ты что правда говорил о недостаточности для этого f0?[/uquote]
https://radiokot.ru/forum/viewtopic.php ... 6#p3443376
https://radiokot.ru/forum/viewtopic.php ... 5#p3445575
Я поделился информацией по тому вопросу, в котором неплохо разбираюсь. Там нужно аппаратное умножение и деление чтобы не гробить время на кроилово. Столкновение с влажными фантазиями окончилось закономерно.
Добавлено after 22 minutes 15 seconds:
[uquote="AndTer",url="/forum/viewtopic.php?p=3458934#p3458934"]А на сколько реально нужно сваливать с куба? Назрело? Какие аргументы?[/uquote]
Ни на сколько. Просто не нравится что он генерит код с main, который надо править руками. Типа, личная непризнь. Но я не настолько упорот, чтобы из-за нее придумывать себе трудности. Как изолировать это страховидло от основного кода я для себя решил. Если не найдется чего-то поприличнее - переживу. Найдется - поменял бы.
https://radiokot.ru/forum/viewtopic.php ... 6#p3443376
https://radiokot.ru/forum/viewtopic.php ... 5#p3445575
Я поделился информацией по тому вопросу, в котором неплохо разбираюсь. Там нужно аппаратное умножение и деление чтобы не гробить время на кроилово. Столкновение с влажными фантазиями окончилось закономерно.
Добавлено after 22 minutes 15 seconds:
[uquote="AndTer",url="/forum/viewtopic.php?p=3458934#p3458934"]А на сколько реально нужно сваливать с куба? Назрело? Какие аргументы?[/uquote]
Ни на сколько. Просто не нравится что он генерит код с main, который надо править руками. Типа, личная непризнь. Но я не настолько упорот, чтобы из-за нее придумывать себе трудности. Как изолировать это страховидло от основного кода я для себя решил. Если не найдется чего-то поприличнее - переживу. Найдется - поменял бы.
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
[uquote="pvit",url="/forum/viewtopic.php?p=3459128#p3459128"]Как изолировать это страховидло от основного кода я для себя решил.[/uquote]
Я поглядел и теперь думаю, что лучше бы не делал этого. Вы точно уверены, что это хорошая идея, закопать main.c глубоко внутрь каталога /lib? Вы когда нибудь видели, чтобы кто-то еще так делал?
Я поглядел и теперь думаю, что лучше бы не делал этого. Вы точно уверены, что это хорошая идея, закопать main.c глубоко внутрь каталога /lib? Вы когда нибудь видели, чтобы кто-то еще так делал?
На гитхабе вы пишете, что только еще собираетесь попробовать М0, но здесь убеждаете, что этот вариант точно ни в какую не годится. Вы где врете?Я поделился информацией по тому вопросу, в котором неплохо разбираюсь.
- Реклама
зря я откладывал знакомство с режимом Отладка, увлекательная и познавательная вещь.
еще асму особо не вспомнил, а уже нашел пару мест в своей писанине, чего поправить.
[uquote="VladislavS",url="/forum/viewtopic.php?p=3458996#p3458996"]...
Не мешайте компилятору работать.[/uquote]
я не компилятор собирался учить, а себя.
еще асму особо не вспомнил, а уже нашел пару мест в своей писанине, чего поправить.
[uquote="VladislavS",url="/forum/viewtopic.php?p=3458996#p3458996"]...
Не мешайте компилятору работать.[/uquote]
я не компилятор собирался учить, а себя.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="a797945",url="/forum/viewtopic.php?p=3459622#p3459622"]я не компилятор собирался учить, а себя.[/uquote]"Premature optimization is the root of all evil"©
Вопрос к спецам CubeMX, остальные могут выдохнуть и расслабиться. Что нужно еще сделать, чтобы таймер сконфигурённый в кубе запустился? Вот, сконфигурил его - а ничего не происходит. Зашел отладчиком - прескалер, коэффициент деления появились, а вот CEN и еще кое что, никто не взвёл.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
VladislavS
Вы обо мне слишком высокого мнения, со мной все гораздо проще (бывает по несколько недель за компом не бываю)
вот это для меня была новость:
написано if((Count != 0) & ((tmp1 == 0xFF) | (tmp1 != (Status |0x80))))
по сути, если первое сравнение "лож", то остальные проверки можно не делать,
но железяка собирает по написанному, как апп. схему, сказано три входа - значит три надо опросить.
теперь надо пошурупить, где я смогу такие свои конструкции разветвить на коротких проверках.
теперь понятно что значит "писать простые алгоритмы"
а ведь в какой-нибудь умной книжке про это написано.
Вы обо мне слишком высокого мнения, со мной все гораздо проще (бывает по несколько недель за компом не бываю)
вот это для меня была новость:
написано if((Count != 0) & ((tmp1 == 0xFF) | (tmp1 != (Status |0x80))))
по сути, если первое сравнение "лож", то остальные проверки можно не делать,
но железяка собирает по написанному, как апп. схему, сказано три входа - значит три надо опросить.
теперь надо пошурупить, где я смогу такие свои конструкции разветвить на коротких проверках.
теперь понятно что значит "писать простые алгоритмы"
а ведь в какой-нибудь умной книжке про это написано.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Для вас будет ещё большим открытием, что & и && это разные операции 
VladislavS
вот я оболтус, ведь читал когда-то
да за отсутствием практики выветрилось.
Спасибо
uldemir
я не знаком с кубом, но и Вы не озвучили - что должно пинать таймер (какое событие) или "вручную".
вот я оболтус, ведь читал когда-то
да за отсутствием практики выветрилось.
uldemir
я не знаком с кубом, но и Вы не озвучили - что должно пинать таймер (какое событие) или "вручную".
тогда выдохните.a797945 писал(а):я не знаком с кубом
ок, я уже добрался до номального тырнета и нашел ответ на свой вопрос.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Здравствуйте.
Проблема с FatFS
Сначала все было ок, данные на cd карту записывались нормально, но в один не прекрасный момент при отладке забыла написать f_close. После этого все сломалось, данные больше не записывались через мк, доступ к карте через юсб просил форматирования.
Ок. Отформатировала, уже отдельно через другой картридер(FAT 32 размер кластера 4096). Поставила соответствующую настройку кластера в ffconf.h. Раньше до моего косяка он был 512 байт и все работало, но мне в любом случае надо бы размер кластера побольше. Данных будет много и надо их побыстрее записывать.
После форматирования доступ к карте по юсб работает корректно, но доступ через мк (SDIO) так и не работает. Даже не монтируется.
Как решить проблему?
Проблема с FatFS
Сначала все было ок, данные на cd карту записывались нормально, но в один не прекрасный момент при отладке забыла написать f_close. После этого все сломалось, данные больше не записывались через мк, доступ к карте через юсб просил форматирования.
Ок. Отформатировала, уже отдельно через другой картридер(FAT 32 размер кластера 4096). Поставила соответствующую настройку кластера в ffconf.h. Раньше до моего косяка он был 512 байт и все работало, но мне в любом случае надо бы размер кластера побольше. Данных будет много и надо их побыстрее записывать.
После форматирования доступ к карте по юсб работает корректно, но доступ через мк (SDIO) так и не работает. Даже не монтируется.
Как решить проблему?
Я конечно все понимаю, но этого я не понимаю.
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="bezzabotna",url="/forum/viewtopic.php?p=3460241#p3460241"]Раньше до моего косяка он был 512 байт и все работало, но мне в любом случае надо бы размер кластера побольше. Данных будет много и надо их побыстрее записывать.[/uquote]
Верни 512, на физическом уровне у карт все равно блоки именно такого размера, так что быстрее вряд ли будет, а вот не работать вообще может запросто.
Верни 512, на физическом уровне у карт все равно блоки именно такого размера, так что быстрее вряд ли будет, а вот не работать вообще может запросто.
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Вернула. Но этого оказалось недостаточно. Файл все равно не монтировался. В общем проблема решилась откатом программы к работающему состоянию. И форматирование с кластером 2048.
Я конечно все понимаю, но этого я не понимаю.
- Сообщения: 574
- Зарегистрирован: Вт ноя 02, 2010 17:46:37
Подскажите если в каком нибудь stm32Fx возможность, подключить событие(изменения состояния на выводе) как запрос DMA в режиме память-память ? Хочу что бы автоматически(без вхождения в обработчик прерываний) получилось , по выводу INT DMA получила запрос на считывание и по (FSMC) из периферии считался/записался блок данных.
Пролистал stm32f103, там DMA(память память ) запускается только битом EN.
Пролистал stm32f103, там DMA(память память ) запускается только битом EN.
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="pokk",url="/forum/viewtopic.php?p=3460753#p3460753"]Пролистал stm32f103, там DMA(память память ) запускается только битом EN.
[/uquote]
При копировании из памяти в память не обязательно выбирать режим Mem2Mem, например, если частота опроса порта задается таймером, то источником будет периферия. Тут главное понять, что один запрос DMA не инициирует всю передачу целиком(если не считать режим Burst), нужно много таких запросов, т.е. таймер должен работать пока вся передача не завершится.
При копировании из памяти в память не обязательно выбирать режим Mem2Mem, например, если частота опроса порта задается таймером, то источником будет периферия. Тут главное понять, что один запрос DMA не инициирует всю передачу целиком(если не считать режим Burst), нужно много таких запросов, т.е. таймер должен работать пока вся передача не завершится.
- Сообщения: 574
- Зарегистрирован: Вт ноя 02, 2010 17:46:37
[uquote="Reflector",url="/forum/viewtopic.php?p=3460808#p3460808"]например, если частота опроса порта задается таймером, то источником будет периферия.[/uquote]
Эх увы, одиночный импульс, точнее уровень 1/0
Эх увы, одиночный импульс, точнее уровень 1/0
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="pokk",url="/forum/viewtopic.php?p=3460832#p3460832"]Эх увы, одиночный импульс, точнее уровень 1/0[/uquote]
Суть не в этом, по уровню тебе нужно запустить таймер, который будет пинать DMA столько раз, сколько нужно. Просто схема получается более сложная, но думаю вполне реализуемая.
Суть не в этом, по уровню тебе нужно запустить таймер, который будет пинать DMA столько раз, сколько нужно. Просто схема получается более сложная, но думаю вполне реализуемая.
- Сообщения: 1841
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="Reflector",url="/forum/viewtopic.php?p=3460834#p3460834"]Суть не в этом, по уровню тебе нужно запустить таймер, который будет пинать DMA столько раз, сколько нужно. Просто схема получается более сложная, но думаю вполне реализуемая.[/uquote]
..... И получить или:
1) Ненадёжную систему: события идут часто, и очередное событие от таймера может быть потеряно, так как не обработалось ещё предыдущее, потому что шина как раз загружена процессором или другими DMA-каналами. В результате - по запросам от таймера данные считываются из памяти-источника в FIFO-буфер DMA, но не успевают записаться в память-приёмник, потому что она как раз сейчас сильно занята -> FIFO переполняется -> данные теряются. Такое будет происходить от случая к случаю - как карта ляжет.
2) Очень медленную пересылку, потому что (для борьбы с п.1) период таймера пришлось сильно увеличить.
PS: Такой трансфер нужно делать только единым блоком, по одному сигналу запроса.
..... И получить или:
1) Ненадёжную систему: события идут часто, и очередное событие от таймера может быть потеряно, так как не обработалось ещё предыдущее, потому что шина как раз загружена процессором или другими DMA-каналами. В результате - по запросам от таймера данные считываются из памяти-источника в FIFO-буфер DMA, но не успевают записаться в память-приёмник, потому что она как раз сейчас сильно занята -> FIFO переполняется -> данные теряются. Такое будет происходить от случая к случаю - как карта ляжет.
2) Очень медленную пересылку, потому что (для борьбы с п.1) период таймера пришлось сильно увеличить.
PS: Такой трансфер нужно делать только единым блоком, по одному сигналу запроса.


