Перейти к содержанию
    

dimka76

Свой
  • Постов

    2 962
  • Зарегистрирован

  • Посещение

  • Победитель дней

    11

Сообщения, опубликованные dimka76


  1. On 4/18/2024 at 1:00 PM, razrab83 said:

     ещё до того, как программиста приняли на работу. 

    И оказалось  чтобы реализовать все что в ТЗ не хватает памяти. Даже при самой супер-пупер оптимизации.

     

    On 4/18/2024 at 1:00 PM, razrab83 said:

    приходит "советчик" и советует учит по мощнее процессор поставить или внешнее ОЗУ на SPI. 🥱

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

  2. On 4/17/2024 at 3:53 PM, Mty said:

    А для проверки ошибок DMA можно просто опрашивать флаг DMA high interrupt status register (DMA_HISR)  TEIF5 без прерывания, верно?

    Можно.

    Только зачем тратить на это процессорное время ?

    Лучше разрешить на них прерывания и обработку ошибок вести только в случае возникновения этих ошибок.

  3. On 4/17/2024 at 1:52 PM, Mty said:
      DMA2_Stream5->CR |= (6 << DMA_SxCR_CHSEL_Pos); 	// enable channel 6 (TIM1_UP)
      DMA2_Stream5->CR |= (2 << DMA_SxCR_PL_Pos); 		// set to high priority
      //   FIFO should be disabled by default
      DMA2_Stream5->CR |= (1 << DMA_SxCR_DIR_Pos); 		//set memory-to-peripheral
      DMA2_Stream5->CR |= (1 << DMA_SxCR_MINC_Pos); 	//Incremement memory address
      // Assume PINC is 0
      //Assume burst is set to single transfer
      DMA2_Stream5->CR |= (0 << DMA_SxCR_MSIZE_Pos); 	// Set memory data width to a byte
      DMA2_Stream5->CR |= (0 << DMA_SxCR_PSIZE_Pos); 	// Set peripheral data width to a byte
      DMA2_Stream5->CR |= (1 << DMA_SxCR_CIRC_Pos); 	// Set to circular mode
      // Assume DBM is zero
      DMA2_Stream5->CR |= (1 << DMA_SxCR_EN_Pos); 		//enable DMA

    Почему на запись каждого бита отдельная операция ?

    Почему не прописали все биты одной операцией ?

     

    Вот так

      DMA2_Stream5->CR =  (6 << DMA_SxCR_CHSEL_Pos) |	// enable channel 6 (TIM1_UP)
                          (2 << DMA_SxCR_PL_Pos)    |	// set to high priority
                          (1 << DMA_SxCR_DIR_Pos)   |	//set memory-to-peripheral
                          (1 << DMA_SxCR_MINC_Pos)  |	//Incremement memory address
                          (0 << DMA_SxCR_MSIZE_Pos) |	// Set memory data width to a byte
                          (0 << DMA_SxCR_PSIZE_Pos) | 	// Set peripheral data width to a byte
                          (1 << DMA_SxCR_CIRC_Pos)  |	// Set to circular mode
                          (1 << DMA_SxCR_EN_Pos); 		//enable DMA

     

  4. On 4/10/2024 at 12:21 PM, Arlleex said:

    чтобы ужать first-bootloader под МК на нужный размер.

    http://elm-chan.org/fsw/strf/xprintf.html

     

    On 4/10/2024 at 12:21 PM, Arlleex said:

    Насколько я помню - itoa ограничивает длину строки 33 и 65 символами для int и long long, соответственно.

    Эта функция не включена в стандарт. Поэтому все зависит от реализации.

  5. On 4/8/2024 at 7:22 PM, Vladimir_T said:

    Здравствуйте, уважаемые коллеги, подскажите в чем может быть дело. Настраиваю TIM8 CH4 на выход через PC9, а на выходе сигнала нет. В отладчике KEIL проверил: периферия конфигурируется,  таймер стартует, счет идет, но на выходе порта - сигнала нет. Какую еще инициализацию нужно TIM8 для формирования простого миандра?

    Каша какая-то. И HAL и регистры. Вы уж на чем-то одном остановитесь.
    Во все тонкости приведенного вами кода не вникал, но явно не хватает настройки регистра BDTR, бит MOE.

    On 4/8/2024 at 7:48 PM, Vladimir_T said:

    C CubeMX также не работает. Думал, что комплементарность нужно настроить, но CubeMX тоже без нее обходится.

    Доку надо читать. У СН4 нет комплементарного выхода.

  6. On 4/7/2024 at 4:31 AM, EdgeAligned said:

    Снимок экрана 2024-04-07 072555.jpg

    Это лишь малая часть modbus.
    А где аппаратный парсер функций ? И все остальное ?

    On 4/7/2024 at 4:31 AM, EdgeAligned said:

    В остальном, модбас не отличается от уарта.

    Modbus это прикладной уровень, а UART - физический.
    Так что сравнивать их бесполезно.

  7. On 4/6/2024 at 4:15 PM, do_not_know_Linux said:

    вы на их сайте его видите для этой архитектуры? скиньте пожалуйста скрнишот

    Вас в гугле забанили ?
    Система команд это архитектура.

    Cortex-M7 не STmicroelectronics придумала, поэтому искать на на сайте разработчика данной архитектуры.

    https://documentation-service.arm.com/static/5e906b038259fe2368e2a7bb?token=

  8. On 4/4/2024 at 8:04 PM, girts said:

    На тех же AVR если пойнтер не трогать, 

    Тут скорее GCC.
    GCC для ARM так же распределяет.
    Только отличие в указателе стека. Адрес начала стека надо самому в регистр заносить.
    И тут уж можно произвольно указать. Но если не пользоваться всякими ухищрениями, то

    обычно вершину ОЗУ и указывают.

  9. On 2/17/2024 at 1:15 PM, BALDA said:

    Форумчане, поделитесь опытом, как вы определяете в своих проектам размер стека и кучи?

    Quote

    «С опытом приходит стандартный, научный подход к вычислению правильного размера стека: взять случайное число и надеяться на лучшее»
    — Jack Ganssle, «The Art of Designing Embedded Systems»

    Как правила, стек начинается со старшего адреса ОЗУ и растет навстречу глобальным переменным.
    Тут уж размер стека определяется тем, что осталось от глобальных переменных. Можно заняться оптимизацией их количества для увеличения размера стека.

    Куча начинается сразу после глобальных переменны и растет в сторону стека.

    Получается, вам размеры стека и кучи указывать вообще нет никакой необходимости.
    Они сами займут весь доступный объем в процессе работы вашей программы.


    image.png.42127b2892e1a1489ef1fe054fa8b48e.png

  10. On 4/1/2024 at 4:07 PM, uriy said:

    У меня нет опыта работы с TMS320. 

    Не могу найти чем обычно программируют на производстве TMS320F28xx.

    Есть ли что-то подобное Segger J-Flash?

    У них есть заводской загрузчик по интерфейсу UART (SCI).

    У TI есть своя утилита.
    А есть еще альтернативная утилита

    https://c2prog.com/about/

  11. On 3/30/2024 at 8:20 PM, Michael58 said:

    Это как? Любой линейный стабизатор тока содержит балластный резистор последовательно с нагрузкой, который рассеивает мощность, равную разнице напряжений источника и нагрузки помноженную на ток.

    Зачем стабилизатору тока балластный резистор ?

    Стабилизатору тока нужен токоизмерительный резистор.

    У линейного стабилизатора тока мощность будет рассеиваться на регулирующем элементе. Как правило, это транзистор.

  12. On 3/29/2024 at 7:47 PM, x893 said:

    Не входит. 

    А вот создатели Куба с вами не согласны

    Quote

    STM32CubeIDE is an advanced C/C++ development platform with peripheral configuration, code generation, code compilation, and debug features for STM32 microcontrollers and microprocessors. It is based on the Eclipse®/CDT™ framework and GCC toolchain for the development, and GDB for the debugging. It allows the integration of the hundreds of existing plugins that complete the features of the Eclipse® IDE.

     

  13. On 3/29/2024 at 10:40 AM, Zversky said:

    И, вообще, по проекту что мне надо установить на чистой машине, чтобы скомпилировать исходный проект as is перед переконвертации и прочего с получением точно такого же результата, как и у автора?

     

    Скорее всего для этого надо ту же версию компилятора.
    Но компилятор входит в комплект Куба.

    Следовательно, нужна абсолютно такая же версия Куба.

  14. On 3/26/2024 at 12:51 PM, Arlleex said:

    Это называется адаптивный регулятор🙂

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

    ПИД на операционниках будет ограничивать выходной сигнал напряжением питания. Он тоже с прибамбасами ?

×
×
  • Создать...