

kostyan1
Участник-
Posts
121 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Everything posted by kostyan1
-
В Eclipse это Alt + Shift + R с древних времен и да ПО ВСЕМУ проекту...
-
VisualGDB и ARM
kostyan1 replied to DASM's topic in GNU/OpenSource средства разработки
Нене, теплое с мягким путать не надо, рефакторинг там наиотличнейший и из коробки, в отличии от. А вот к примеру в чужом коде ищешь баг - поставил какой нибудь принтф в одном месте - пошел дальше по стэктрэйсу в глубины изучать код, даже запустил чтото, подебажил... Потом осенило, надо резко вернуться найти где ты своего что то привнес - очень удобно. Буквально из разряда "попробовал раз, ем и сейчас", ванлав. -
VisualGDB и ARM
kostyan1 replied to DASM's topic in GNU/OpenSource средства разработки
Фича весьма мастхевная! Если конечно не гирлянду писать, а, к примеру, рыться в чужом/своем объемном коде, выискивая где бага посажена. -
VisualGDB и ARM
kostyan1 replied to DASM's topic in GNU/OpenSource средства разработки
Откровенно забавляют микрософтофилы со своими платными студиями и платными же кучей плагинов под них. То что было в бесплатном еклипсе едва ли не в первой версии, как то отличнейшие рефакторинг и навигация по коду, того нету из коробки в студии наверное и сейчас. Да госпидя, элементарнейшего - "goto last edit location" нету в 2013 студии, неудивлюсь если нет и в 2015ой! Терпеть ненавижу когда по ходу разработки иногда приходится пересаживаться в студию. -
Пользуясь случаем, а не подскажет кто где J-Flash лежит да с ключиком? :rolleyes:
-
Народ, подскажите, хотелось бы затактировать stm32f4 от кварца 13.1072 МГц. Програмулина System Clock Configuration коэффициенты выдает такие же что и для 13МГц. Интересует: USB и SDIO будет работать на таком кварце? Или решение в корне не профессионально, и так делать нельзя?
-
Да тут скорее не в плюсах дело, а в многострадальных стм библиотеках. ОП взял какой то пример видимо "с забора", а не хотя бы с форума сайта разработчика камня или из рабочих демопроектов, коих на том же сайте разработчика выше крыши. Не работает. Вместо того чтобы читать вдумчиво документацию по регистрам RTC, а их там всего с десяток, и тщательно дебажить (обнимая и нежно лаская каждый бит каждого регистра) полез на форум "найдите мне ошибку". Увы и ах, хорошие библиотеки не делают разработчиков хорошими по умолчанию.
-
Бедные "мужики" что пишут на сях - "они то не знали" этого правила.
-
По своему опыту: после аврок пересел на атмел САМ7 и САМ3. После них на стм32ф4. Там где раньше в изделии стояло два САМ7, можно обойтись одним САМ3. Где глючил САМ3 - ставишь стм32ф4. У САМ3 плохие часы - батарейный отсек если питать от лития - зависает, если подавать питание по нажатию кнопки - проц запускается порядка двух секунд. Плюс генерация на внешнем часовом кварце АРХИ слабая - от щупа осцила садится и не восстанавливается без перезапуска! После перевыпуска изделия на стм32ф4 - просто не нарадуюсь. Прямо до сих пор балдею - неужели "с таким щастьем и на свободе". Многие хают преднаписанные либы - а я кайфую. Функции хорошо задокументированы. Входные парамерты понятно названы - можно даташит не читать и все понимать что делает та или иная функция. Куб не юзал - руки не доходят. А то что есть в либах - ошибок пока не встречал. Если нужен какой то быстродействующий код - открываю даташит, смотрю чего надо выставить в конкретном регистре, беру код из либы, убеждаюсь что он все делает как написанно в даташите, убираю лишние проверки и макросы, профит. Возможно мне конечно повезло с ерратой - юзаю очень узкий круг стм32ф4 последних ревизий. Критического для себя не ловил.
-
Спасибо, будем применить.
-
Продолжим изыскания, жрет уже 400мкА плата в режиме стоп. Но заметил неприятность. Выключаю sd карту как написанно тут: void SD_LowLevel_DeInit(void) { GPIO_InitTypeDef GPIO_InitStructure; /*!< Disable SDIO Clock */ SDIO_ClockCmd(DISABLE); /*!< Set Power State to OFF */ SDIO_SetPowerState(SDIO_PowerState_OFF); /*!< DeInitializes the SDIO peripheral */ SDIO_DeInit(); /* Disable the SDIO APB2 Clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SDIO, DISABLE); GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOD, GPIO_PinSource2, GPIO_AF_MCO); /* Configure PC.08, PC.09, PC.10, PC.11 pins: D0, D1, D2, D3 pins */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOC, &GPIO_InitStructure); /* Configure PD.02 CMD line */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure PC.12 pin: CLK pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_Init(GPIOC, &GPIO_InitStructure); } Ухожу в сон, плата потребляет 400мкА. SD карточку вытаскиваю на горячую - потребление платы уменьшается до 280 мкА. Получается карточка потребляет 120 мкА, что совсем не есть айс! Это нормально, или програмно как то можно уменьшить потребление?
-
Как говорится, сам дурак, переферию не полностью отключал, только тактирование выключал, а надо еще и _CMD( , DISABLE); делать для всего и вся. Дело сдвинулось с мертвой точки. Еще с волтаж регулятором надо побаловаться.
-
Есть плата на STM32F401VET6, надо сделать режим микропотребления. Впаял одноомные резисторы на 11, 19-21-22, 28, 50, 75, 100 ноги в разрыв питания. Сколько мВ падает на этих резисторах - столько мА собственно потребляет проц. Перед уходом в стоп отрубаю всю переферию, все неиспользуемые ноги - выход ноль, или если есть подтяжки - входом. Потом делаю "PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);" Но счастья не приходит :( . На резисторах насчитал что падает около 2.2 мВ в сумме. Больше всего на 19-21-22, один резистор на три ноги, падает примерно 0.8 мВ. И на 11 и 28 ногах по 0.3-0.4 мВ примерно. На вход платы подцепил стрелочный четкий амперметр, он показывает потребление платы те же примерно 2.2 мА. То есть по сути всё что жрет плата - жрет проц, всякие преобразователи напряжений, питающие плату, не шалят. Ноги общупал осцилом. Криминала не вижу. Собственно что делать? Есть плата диско401 - там запускаю ST-шный пример микропотребления в режиме STOP - вуаля, десятки микроампер. Вот даже не знаю что же отрезать начать - все ноги что ли, используемые в проекте, подряд?
-
Действительно, проверил на железе, работает "само", очень удобно! Тему можно закрывать.
-
Народ, подскажите делал кто нибудь? Надо передать килобайты байтов по USART в передатчик модема, который имеет апаратные ноги RTC и CTS. На stm32f4, насколько понял из документации, аппаратная поддержка flow контроля есть. Но интересует вопрос с дма. Если выставить передачу данных по USART с использованием дма - передача будет "сама" приостанавливаться, пока ей не разрешат продолжиться через ноги RTC и CTS??? Или "flow апаратика" работает только при побайтовой передаче с полингом флага передачи каждого байта?
-
Красиво структурированный читаемый код, и "только дурак" - имхо несовместимые понятия. Особенно для проектов, в которых трудятся программистов в количестве больше одного.
-
сигнал SCK то имеется на второй щуп, и полярность с фазой правильно на осцыле (а не по логике) выглядят?
-
Сделал в итоге через EXTI, как уже ранее предлагалось: Способ запуска одного дма через 2 других М2М дма не подходит, ибо помимо установки регистров DMA1_Stream4->NDTR и DMA1_Stream4->CR, необходимо еще устанавливать регистр DMA1->HIFCR. И вроде вполне все бодро крутится - проц готов к свершениям помимо данной задачи. Тему можно закрывать.
-
это только на линухе насколько я понял :( упд. Неправильно видимо понял - не могу разобраться как запустить собственно. Установил и туплю. упд2. Нашел инструкцию как пользовать на сайте, слона как водится не заметил, изучаю пробую...
-
В режиме heap_1.c фриртосина вполне себе обеспечивает статичность объектов. Имхо главное отличие чибиоси от прочих ртос - добавление абстракции от железа. Но любая абстракция - это дополнительные накладные расходы.
-
Попробуйте использовать libusb.
-
Спасибо за поиск, проблема таки решилась! Искал вчера весь день рабочий пример под 401й проц и под конец осенило про стм32куб. Сегодня как раз для диско401 создал проектик цдц, как то запустил его - передача идет! Через USBLyzer обнаружил что конечные точки в проекте, полученном через куб, другие : CDC_IN_EP = 0x81, CDC_OUT_EP = 0x01, CDC_CMD_EP = 0x82. А у меня были такие: CDC_IN_EP = 0x82, CDC_OUT_EP = 0x01, CDC_CMD_EP = 0x83. Сделал в своем проекте первый вариант, переделал libusb драйвер и заработало! А то, что точки другие - обнаружил через USBLyzer! Он гадина платный и не ломанный, рега скоро кончится на него. Хоть и оффтоп - посоветуйте народ, пожалуйтса, подобный просмоторщик USB трафика бесплатный?!
-
Народ, кто нибудь поднимал usb cdc именно на STM32F401? Есть две платы: диско429 и диско401. На диско429 отладил пример из набора STM32_USB-Host-Device_Lib_V2.1.0. Там пример идет для stm32f407, но заработало и для stm32f429 на хайспидовом usb но в режиме фулспида. Со стороны компа - libusb с двумя точками 0x01 и 0x82 для передачи приема данных. Беру ровно тот же код (ну ножки другие только буквально) и пробую запустить его на диско401. Енумерация проходит, работает приём - я принимаю от компа данные (несколько байт), посылаю в ответ посылку (тоже несколько), НО ПРЕРЫВАНИЯ ОТ ПЕРЕДАЧИ НЕ ПРОИСХОДИТ!!! Со стороны компа выхожу из кода чтения данных по таймауту в несколько секунд, а проц долбится в прерывании в коде анализа прерывания DCD_HandleInEP_ISR, где для epnum=2 бит XFRC:Transfer completed interrupt регистра OTG_FS_DIEPINT2 не встает! Хэзэ что думать - в гугле такой проблемы не нашел. HID пример для stm32f401 с эмуляцией мышки работает - так что железо вроде бы рабочее, но мне нужен cdc.
-
А вроде даже и заработало, но есть нюанс! В доках написано: "TIM_SlaveMode_External1: Rising edges of the selected trigger (TRGI) clock the counter. " То есть нарастающий фронт ловится, а мне надо спадающий faling edges. Как то можно крутануть в контроллере это дело? А пардон, сам нашел в доках. Заработал таймер, теперь на повестке: Вопрос один - собственно КАК? Как от одного таймера настроить два запроса на разные каналы ДМА? Каплю кода бы в пример...