Jump to content
rmatveev

MBED OS: почему-то не могу заставить многие порты работать

Recommended Posts

Вливаюсь в среду программирования MBED OS с платой STM32F429I-DISC1 и вот что заметил:
1) Почему-то PWM у меня нормально заработал только на ножке PF_6. Я перебрал, конечно, не все порты, которые поддерживают работу с PWM, но другие, которые я попробовал, не заработали.
2) Пытался сконфигурировать некоторые порты в качестве цифрового выходи и тоже фигушки. Нормально заработали только те, что подключены к зеленому и красному светодиодам (PG_13 и PG_14). На некоторых ножках был какой-то неведомый мне меандр, какие-то не захотели переходить в низкоомное состояние.

В качестве базы я использовал код DISCO-F429ZI_LCDTS_demo (это из примеров по этой плате с работой ЖК индикатора и тачскрина).

Что может быть не так? Может быть какие-нибудь библиотеки, подключаемые при работе тачскрина и/или дисплея занимают большую часть портов и не позволяют их использовать по усмотрению программиста? Или я еще что-то не понимаю в архитектуре ARM? (Сам я прихожу из AVR-ов)

Share this post


Link to post
Share on other sites

Для того, чтобы нормально работать с МК надо писать весь код самому, а не тащить левые библиотеки. Качай Keil или Eclipse и программь.

Share this post


Link to post
Share on other sites
9 минут назад, BARS_ сказал:

Для того, чтобы нормально работать с МК надо писать весь код самому, а не тащить левые библиотеки. Качай Keil или Eclipse и программь.

Ничего себе "левые" :)))

MBED OS - это среда разработки ARM Limited. Т.е. прям роднее некуда. И пока мне эта платформа видится во многом удобнее. Вы же не посоветуете какому-нибудь ардуинщику кодить на ассемблере и "не тащить левые библиотеки" :)))

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Только что, rmatveev сказал:

MBED OS - это среда разработки ARM Limited

Да хоть от кого угодно? Толку? Библиотеки там именно левые(такие же левые, как и SPL и HAL), и таковыми они останутся, пока не научишься программить без их использования. Подцепил хедер под серию МК и вперед. Нету в ARM ничего такого сложного, где нельзя без библиотек. Простецкая фигня типа портов, spi, uart. таймеров и т.п. настраивается буквально в 5 строк. И заметь, результат на 100% прогнозируемый. А вот что делают твои чудесные библиотеки вообще неизвестно, что и подтверждается созданием данной темы. А лепить ОС на STM - тот еще маразм.

 

Только что, rmatveev сказал:

какому-нибудь ардуинщику

Ардуинщики и программисты - разные люди.

Share this post


Link to post
Share on other sites
6 минут назад, BARS_ сказал:

Ардуинщики и программисты - разные люди.

Эт точно )))

Ладно, я погляжу другие среды. У MBED OS в числе прочего есть еще важный недостаток - полная облачность. Нет интернета = нет кода. Локально там вообще ничего не работает. В наше время это, конечно, не очень большая проблема, но меня это немного напрягало.

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

1 час назад, rmatveev сказал:

У MBED OS в числе прочего есть еще важный недостаток - полная облачность

Всё прекрасно работает офф-лайн, нет проблем. Устанавливаете MBED CLI и вперёд - кодим без интернета.

Конечно, для помигать светодиодом ОС не нужна. Но не все же только светодиодом мигают.

Я, вот, только закончил проект под MBED 5. Процессор Arm Cortex-M4, 6 штук АЦП, GPS модуль и SD-карточка.

MBED - многопоточная ОС. У меня в программе фигачат 3 потока, в одном опрашиваю все АЦП 25 раз в секунду, в другом - раз в секунду читаю данные с GPS, а в третьем потоке сохраняю данные на SD карточку в фотмате FAT32 каждые 2 минуты. При этом пару раз в секунду на компьютер оператора через ком-порт выдаётся текущая телеметрия для тестирования системы. 

Все работает круглосуточно, пока, вроде, не сбоит, тьфу-тьфу-тьфу.

Написание кода заняло пару недель и с десяток страниц кода. 

1 час назад, BARS_ сказал:

. Нету в ARM ничего такого сложного, где нельзя без библиотек

Ну, уж, не знаю, сколько бы у меня заняло времени всё написать без ОС и без библиотеки для FAT32.

 

Share this post


Link to post
Share on other sites
17 минут назад, Yurkin2015 сказал:

MBED - многопоточная ОС

Это на однопоточном то МК

 

17 минут назад, Yurkin2015 сказал:

У меня в программе фигачат 3 потока, в одном опрашиваю все АЦП 25 раз в секунду, в другом - раз в секунду читаю данные с GPS, а в третьем потоке сохраняю данные на SD карточку в фотмате FAT32 каждые 2 минуты.

Что-то я не пойму, нафига ОС для таких элементарных задач?

 

18 минут назад, Yurkin2015 сказал:

Написание кода заняло пару недель и с десяток страниц кода. 

Ровно то же самое пишется максимум за неделю (это с отладкой) и без убогой ОС.

 

19 минут назад, Yurkin2015 сказал:

сколько бы у меня заняло времени всё написать без ОС

Минимум в 2 раза меньше времени. У меня есть проект на 205 камне. Раз в секунду читается GPS с парсингом NMEA, идет общение с ПЛИС по SPI, временами очень активное, т.е. данные могут сыпаться непрерывно, по второму SPI идет работа с микрухой Ethernet, на которой может быть одновременно открыто до 5 сокетов, плюс ко всему идет отображение данных на TFT дисплее с периодом обновления 100мс (при условии наличия новых данных для отображения) и опрос устройства по I2C. И никакой ОС там нет и близко.

Share this post


Link to post
Share on other sites

не, это был вопрос ТСу

я типа к тому, что она уже разжевана вдоль и поперек и библиотек там левых никаких нету. Все стандартные, родные. Нафига себе создавать проблемы на ровном месте?

Share this post


Link to post
Share on other sites
2 часа назад, mail_robot сказал:

а чем вам FreeRTOS не вкатила?

Ничем :)

Если это стоящая вещь, то я готов на нее внимательно посмотреть. Просто взор упал на MBED, мне понравилась концепция и я начал ее использовать. Но сейчас наступает некое отрезвление.

Share this post


Link to post
Share on other sites
8 hours ago, rmatveev said:

На некоторых ножках был какой-то неведомый мне меандр, какие-то не захотели переходить в низкоомное состояние.

Прежде чем писать код посмотрите схему. На плате есть внешние устройства, которые подключены к контроллеру. Если вы сконфигурируете ножку как выход, а к ней подключен выход внешнего устройства, то можете спалить.

В Cube хорошо видно какие ноги свободные.

Disc429.thumb.jpg.6f9747834727c37ae4eeb8d3be200031.jpg

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By German Churilin
      Добрый день всем! Столкнулся с проблемой, над решением которой бьюсь уже месяц - суть в том, что при пересылке аудио данных с контроллера в внешний цап на выходе цапа звучит белый шум(именно когда летят данные). Уже перепробовал разные конфигурации и параметры, да даже другой цап ставил - всё равно та же самая проблема. Может кто сталкивался, или у кого есть идеи почему так происходит?
      Контроллер stm32f407ve китайский, но вроде как рабочий, цап - pcm1606, вытащенный из двд-плеера.

      код инициализации i2s
      RCC_PLLI2SCmd(DISABLE); RCC_I2SCLKConfig(RCC_I2S2CLKSource_PLLI2S); RCC_PLLI2SConfig(200,5); RCC_PLLI2SCmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_PLLI2SRDY) == RESET){}; //WS - word clock output GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_SPI2); GPIO_StructInit(&gpioInit); gpioInit.GPIO_Pin = GPIO_Pin_9; gpioInit.GPIO_Mode = GPIO_Mode_AF; gpioInit.GPIO_OType = GPIO_OType_PP; gpioInit.GPIO_PuPd = GPIO_PuPd_NOPULL; gpioInit.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOB, &gpioInit); //BCLK - shift clock output GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_SPI2); gpioInit.GPIO_Pin = GPIO_Pin_10; GPIO_Init(GPIOB, &gpioInit); //SD - serial audio data GPIO_PinAFConfig(GPIOC, GPIO_PinSource3, GPIO_AF_SPI2); gpioInit.GPIO_Pin = GPIO_Pin_3; GPIO_Init(GPIOC, &gpioInit); //MCO - master clock output GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_SPI2); gpioInit.GPIO_Pin = GPIO_Pin_6; GPIO_Init(GPIOC, &gpioInit); I2S_StructInit(&i2sInit); i2sInit.I2S_CPOL = I2S_CPOL_Low; i2sInit.I2S_Mode = I2S_Mode_MasterTx; i2sInit.I2S_MCLKOutput = I2S_MCLKOutput_Enable; i2sInit.I2S_Standard = I2S_Standard_Phillips; i2sInit.I2S_AudioFreq = I2S_AudioFreq_48k; i2sInit.I2S_DataFormat = I2S_DataFormat_24b; I2S_Init(SPI2, &i2sInit); SPI2->I2SPR = (uint16_t)((uint16_t)512 | (uint16_t)12 | (uint16_t)1); //for 48k Fs SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, ENABLE); I2S_Cmd(SPI2, ENABLE);  
      код инициализации dma
      DMA_InitTypeDef dmaInit; NVIC_InitTypeDef nvicInit; DMA_DeInit(DMA1_Stream4); DMA_Cmd(DMA1_Stream4, DISABLE); while(DMA_GetCmdStatus(DMA1_Stream4) == ENABLE){}; __ISB(); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); //To dmaInit.DMA_PeripheralBaseAddr = (uint32_t) &(SPI2->DR); //From dmaInit.DMA_Memory0BaseAddr = (uint32_t)&AUDIO_SAMPLE; dmaInit.DMA_BufferSize = 20480; dmaInit.DMA_Channel = DMA_Channel_0; dmaInit.DMA_DIR = DMA_DIR_MemoryToPeripheral; dmaInit.DMA_PeripheralInc = DMA_PeripheralInc_Disable; dmaInit.DMA_MemoryInc = DMA_MemoryInc_Enable; dmaInit.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; dmaInit.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; dmaInit.DMA_Mode = DMA_Mode_Circular; dmaInit.DMA_Priority = DMA_Priority_High; dmaInit.DMA_FIFOMode = DMA_FIFOMode_Enable; dmaInit.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; dmaInit.DMA_MemoryBurst = DMA_MemoryBurst_Single; dmaInit.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; while(DMA_GetCmdStatus(DMA1_Stream4) == ENABLE); DMA_Init(DMA1_Stream4, &dmaInit); DMA_ITConfig(DMA1_Stream4, DMA_IT_TC | DMA_IT_HT, ENABLE); //configure interrupt nvicInit.NVIC_IRQChannel = DMA1_Stream4_IRQn; nvicInit.NVIC_IRQChannelPreemptionPriority = 0; nvicInit.NVIC_IRQChannelSubPriority = 0; nvicInit.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&nvicInit); DMA_Cmd(DMA1_Stream4, ENABLE); while(DMA_GetCmdStatus(DMA1_Stream4) != ENABLE){}; AUDIO_SAMPLE просто wav скопированный через hex редактор и живущий в памяти контроллера, крутиться по кругу. Вроде как, в теории всё должно работать(снизу скрин из pulseview - снято логическим анализатором), к сожалению осциллограф пока что не приобрёл, так что проверить правильность частот не представляется возможнымб но всё же всё вроде как красиво.
      Формат i2s на контроллере совпадает с форматом на цапе - первый бит передаётся через 1 тик sck после смены ws
       
      П.С. подозреваю сразу вопросы про MSB/LSB - wav файл сам по себе little-endian, собственно как и контроллер, то есть тут не должно быть проблем, а i2s стандарт передаёт MSB первым, соответственно если у меня в памяти записано 0x64, 0x61, 0x61, 0x66, 0x02, 0x00, 0x85... то, судя по скрину всё передаётся правильно? или я что то не понимаю в этом всём? Но не в этом суть - в один момент тоже подумал что порядок не тот, но, к сожалению, попытки свапать байты местами(и побайтово, и по словам) не дали ни какого результата

    • By rmatveev
      Друзья, мне бы хотелось как-то начать "метить" прошивки, которые я заливаю в устройства на этапе разработки.
      Когда-то давно, когда я еще кодил для МК51 и PIC я использовал несколько ячеек в начале памяти программ, куда автоматом записывал закодированную дату. Но это я делал с помощью своей утилиты - при компиляции я запускал свой батник, который во-первых формировал небольшой ассемблерный файлик с кодом даты, он уже линковался к основному коду и получалось у меня что-то типа такого:
                  ORG          0000h
                  goto         Begin
                  include      'date.src'
                  retw         __day
                  retw         __month
                  retw         __year
                  ORG          0004h
                  goto         INTERRUPT
      Файл date.src формировался моим батником, там присваивались значения макросам __day, __month и __year.
      Это ассемблер для PicMicro. Я использовал тот факт, что у него между началом пользовательского кода и единственным вектором прерывания было 4 байта, в первый байт я вставлял команду перехода на начало, а в три оставшихся байта - дату. Она была хорошо видна при считывании кода из чипа. Было очень удобно потом идентифицировать прошивку, т.к. исходники я тоже сохранял по датам. В общем, такая была доморощенная система контроля версий. Было это году в 2000-м.
      Сейчас я пользуюсь Atollic TrueStudio и MBED и тоже задумался о том, как мне помечать прошивки. Может быть есть какие-то штатные способы? Или может по старинке найти в коде место, куда зашивать дату что бы ее легко было видно при считывании прошивки в ST Link Utility?
      Спасибо заранее за любые мысли.
    • Guest Александр
      By Guest Александр
      Добрый день
      Проблема с оценочной платой STM32F4-DISCOVERY в части работы USART
      суть вопроса
      по USART шлется и принимается блоки данных по 3 байта (в принципе сколько угодно) при этом если подключен USB разъем ST-LINKа то все работает должным образом (данные снуют туда сюда без проблем), но при отключении USB ST-LINKа данные из платы STM32F4-DISCOVERY идут а вот принимать данные плата отказывается (естественно подаю внешнее питание +5 вольт на одноименный контакт). Если кто сталкивался с подобной проблемой прошу хотя бы направить в сторону железа или софта.
      На плате STM32F4-DISCOVERY убраны перемычки SB11(T_NRST) и SB12(T_SWO) а так же отпаян резистор R68 (MCO). Плата при этом прошивается без проблем, и стартует при внешнем питании(не от USB ST-LINKа) тоже без каких то заморочек.
      код прикладывать на данный момент не вижу смысла там все просто, при чем при подключении USB ST-LINKа программа работает.
      Проект пишется на IARe, конфигурация формируется в STM32Cube.
      Заранее спасибо за ответ
    • By Wishmaster
      Здравствуйте, подскажите, как можно получить 3.3В для питания МК STM32F4 от Li-Ion аккумулятора? Использовать какой-нибудь понижающий преобразователь? Если да, то какой? 
    • By dron-r
      Добрый вечер.
      Друзья, кто из вас использует МК STM32F407xxx, поделитесь информацией по поводу внешнего кварца на вашей плате. Что за кварц, фирма, а также используемые конденсаторы и Rext?
      Дело в том, что облажался я с выбором кварца. Не заводится он. Drive level превосходит указанный в инструкции к кристаллу... (расчеты проводились согласно заметки AN2867 от ST).
      В общем чтобы не мучится с поиском нужного кристалла, хочу поинтересоваться что у вас?
      Заранее спасибо.
      Моя конфигурация:
      Кристалл Geyer KX-K (part no. 12.87823) 8МГц.
      Конденсаторы 22пФ
      Резистор Rext = 0 Ом
      Расположение кристалла идентично расположению на плате Discovery. Расстояние от края до ножек - примерно 6 мм.
      Также интересует напряжение RMS между выводами кварца.
      У меня - 1.94В
      У Discovery - 1.65В
      А у вас?
  • Сообщения

    • APFC через лампу?! - однако... наверно 500Вт. первым делом смотрим что с большой бочкой и дросселем APFC...  ну а также входная плёнка 0.470-0.680 - 1uF 450V... далее все электролиты по обвязке 4800, далее ОС на 4800 всякие разные-разные ножки, стабилитроны, Isense, куча вариантов... стартовые резисторы .5 MOhm
    • Вот жопа-то.. Только баба понравилась и сразу облом. Но бабу жалко. Посадят в оконцовке за экстремизм, пробьют башку в подъезде собственного дома, или в дурке будут всякую хрень колоть, пока овощем не станет. А ведь она красивая.. Её бы е_ать и е_ать..
    • Почему сравнение со 128мегай есть же 256
    • Вы правы, ROMMo, и в этом случае литий отключается встроенной защитой, минуя фазу дозарядки "constant voltage".
    • @vilisvir  тут зрители аплодируют, аплодируют.. кончили аплодировать.   А почему бы солнечные батареи не сделать в виде погон?
    • Попробую проэкстрасенсить. "БП от ПК" — значит отдельный, не в составе ПК "Движок 775" — кулер для процессора Socket 775 Если так, то на работе правильно сказали, что можно. Тем не менее, несите на работу и пусть сам электронщик подключит.
    • нет,нету - запустил - похоже спутал стабилитрон) 3 вольта напряжения питания-генерации нет
  • Покупай!

×
×
  • Create New...