STM32Cube encoder STM32F407 discovery (СТМ32 Энкодер)

Поділитися
Вставка
  • Опубліковано 9 січ 2025

КОМЕНТАРІ • 47

  • @kiddjmadd
    @kiddjmadd 4 роки тому

    Didn't understand a word of the audio, but the code and use of the analyzer helped me get my encoder signal working (mine needed the pull-up resistor enabled). Thanks!

  • @ruslanmarkiv7167
    @ruslanmarkiv7167 6 років тому +1

    Дуже подобаються ваші відео, особливо подобається коли ви розказуєте про регістри (що вони означають)!

  • @Serjaru
    @Serjaru 9 років тому

    CND ножка у энкодера - это круто!!! ))) и ведь уверенно, несколько раз повторили!

    • @ElectroHobby1
      @ElectroHobby1  9 років тому

      +Sergey Abaev уже давно так называю общую шину привычка. GND является общей по отношению к другим двум ногам энкодера и кнопки .Это не значит, что на нее нужно подавать отрицательное напряжение чтобы все работало. Можно было запитать ножку на плате с энкодером с обозначением "GND"(+3в), а " + " (-3в) и все бы работало. Спасибо

  • @ivanrusev2270
    @ivanrusev2270 4 роки тому

    у меня вопрос к автору.Как сделать так. Чтоб энкодер в разных подразделах меню настраивал разные переменные?А то по кнопке у меня получается.Или же энкодер программный использовать?

    • @SuperDikabraz
      @SuperDikabraz 3 роки тому

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

  • @rimpyjain5256
    @rimpyjain5256 6 років тому

    can u please help to do synchronize decoder with encoder in stm32

  • @ruslanmarkiv7167
    @ruslanmarkiv7167 6 років тому

    Виникло таке питання, у таймера 4 канали 2 з яких ми використали на енкодер, чи можна використати інші 2 або хоча б 1 для інших задач? Якщо так то як його налаштувати (усі налаштування ми використали для енкодера)? І ще чому не можна включати подільник "Prescaler (PSC - 16 bits value)" - я пробував ставити то у мене погано рахував (то не рахував узагалі то тахував у будь який бік)?

    • @GypsyRewind
      @GypsyRewind 6 років тому

      Вполне можно, когда добавляешь другие каналы, появятся новые строчки в конфиге.
      пескаляр - это заранее установленное значение счётчика (типо счётчик уже насчитал сколько-то),
      но если ты не установишь предельное число для счётчика - он ничего считать не будет ;) ессно..

  • @MO_Ventures710
    @MO_Ventures710 7 років тому

    Hello..
    I want to interface TCS3200 color sensor with STM32f746ZG. Since the TCS3200 outputs a frequency based on the amount of light received, I need some way to count the number of pulses for different colors to determine a color.
    In CubeMX, I set PF6(s0) PF7(s1) PF8(s2) PF9(s3) and TIM2 ch1 input capture as (out) of the sensor. Frequncy for timer 2, I selected to be 84MHz with prescalar 83 which will bring it to 1MHz (I am not sure whether I should do this or not). I also enabled TIM2 global interrupt in nvic window. Next, I activated TIM6 to measure time of 5s (timer f=84MHz, prescalar=41999 and counterperiod = 9999).
    I have doubt about how to use these two timers inside the while loop, which HAL library functions to use here and how to use.
    CubeMX is the source code generator and the IDE is Kiel5. Following is my setting for output frequency scaling and filter type outside the main function. If I am wrong, please correct me.
    void TCSFREQ()
    {
    HAL_GPIO_WritePin(GPIOF, s0_Pin,GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOF, s1_Pin,GPIO_PIN_RESET);
    }
    void TCSRED()
    {
    HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_RESET);
    }
    void TCSBLUE()
    {
    HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_SET);
    }
    void GREEN()
    {
    HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_SET);
    }
    void TCSCLEAR()
    {
    HAL_GPIO_WritePin(GPIOF, s2_Pin,GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOF, s3_Pin,GPIO_PIN_RESET);
    }
    Correct me if there is something wrong above.
    As I am new to microcontrollers, I am struggling with how to count the number of pulses in a time period (let's say 5s). It would be nice if you would help me with my problem or suggest some alternative solution.

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      Hey. To calculate the time, you can use HAL_GETtick().To count pulses, you can use interrupts.
      For example.You create a variable counter and a variable pulse.You reset the variable counter and pulse ,then wait until the time is the same as the specified interval.The variable pulse will increase in the interrupt service function.I hope you understand.

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      I would have toys like you. I only have F4 series.

  • @Jensiru
    @Jensiru 8 років тому

    Нельзя чтобы при прокрутке в обратную сторону был знак минуса? -2 0 +2 , а не +254 0 +2.
    Нужно в коде писать условие проверки? Копался в настройках таймера, но так и не получилось так сделать. Мало ли:)

  • @773ivan
    @773ivan 3 роки тому

    отличное видео! все простым языком и понятно! подскажите как вывести показания на тфт дисплей?

    • @ElectroHobby1
      @ElectroHobby1  3 роки тому

      Я работал только с этой моделью.

    • @773ivan
      @773ivan 3 роки тому

      @@ElectroHobby1 я имел ввиду -имеем показания счетчика -как эти показания вывести на дисплей с помощью библиотеки ili9341 ?или нужна другая библиотека?

    • @ElectroHobby1
      @ElectroHobby1  3 роки тому

      @@773ivan с этим дисплеем не работал. Скорее всего библиотека не подойдет.

  • @Sanchogus
    @Sanchogus 8 років тому

    Как настроить, что бы за один щелчек было не на +-2 изменение, а на +-1?
    Пробовал в настройках покрутить делители, что-то не помогло.
    Ибо энкодер на 20 делений, а на них выходит 40 импульсов.

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Ни как.Можно настроить только чтоб на 4 увеличивалось)

    • @Grants2251
      @Grants2251 7 років тому

      где переменая бeрёт с регистра значение дели на два :) или ставь по обоим каналам как в embeddedsystemengineering.blogspot.lt/2016/07/arm-cortex-m3-stm32f103-tutorial.html

  • @GypsyRewind
    @GypsyRewind 6 років тому

    11:42
    Что за указатель ? я лично так и не понял

    • @ElectroHobby1
      @ElectroHobby1  6 років тому

      Указатель на структуру с настройками таймера.Когда я открывал описание функции там на английском языке все описано.Далее внизу я нашел заполнение структуры и передал указатель на эту структуру в функцию с помощью &

    • @GypsyRewind
      @GypsyRewind 6 років тому

      Спасибо, я просто не очень быстро читаю на аглицком..
      Очень полезные видосы, удачи..
      p.s. Я всегда не дружил с указателями и ссылками, и до сих пор в них не очень разбираюсь.. )))

    • @ElectroHobby1
      @ElectroHobby1  6 років тому

      Спасибо за позитивный комментарий.Это одни из первых и очень долгих моих видео.Сейчас я старюсь делать ролики короче и интересней как мне кажется.

    • @GypsyRewind
      @GypsyRewind 6 років тому

      Всяких "лайфхаков", челенЖев и DIY-ев на ютюбе навалом, а вот действительно полезных единицы..
      Так держать !

    • @ElectroHobby1
      @ElectroHobby1  6 років тому

      Понял)

  • @boastringfield2395
    @boastringfield2395 7 років тому

    thats increase only????
    1 direction turn...??

    • @ElectroHobby1
      @ElectroHobby1  7 років тому +1

      At the end of the video on the graph, you can see that the value of the counter changes up and down.Bidirectional!!!

    • @boastringfield2395
      @boastringfield2395 7 років тому

      ow.. you good men, you good.. i must admit it. YOU THE BEST.

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      Thanks!!!

  • @sssserya1
    @sssserya1 6 років тому

    какой алгоритм расскажите в двух словах ?

    • @ElectroHobby1
      @ElectroHobby1  6 років тому

      Тут нет никакого алгоритма.Все заложено в периферию микроконтроллера TIMER.У периферии есть регистры, которыми выбирается режим работы таймера для работы с энкодером.

  • @GypsyRewind
    @GypsyRewind 6 років тому +1

    Есть алгоритм софтваерного энкодера, если кого заинтересует (проверял на пик-контроллерах, на стм-ах ващще летать будет)
    if ( (предыдущий_А == сейчасшный_В) && (предыдущий_В != сейчасшный_А) )
    {
    счётчик++;
    }
    if ( (предыдущий_А != сейчасшный_В) && (предыдущий_В == сейчасшный_А) )
    {
    счётчик--;
    }
    //.. проверка крест на крест..

    • @ElectroHobby1
      @ElectroHobby1  6 років тому +1

      ОК

    • @masterkit9517
      @masterkit9517 4 роки тому +2

      Спасибо большое!

    • @GypsyRewind
      @GypsyRewind 4 роки тому +1

      @@masterkit9517 Да не за что))
      ..я уж и забыл, что я тут был когда-то
      пы. сы. у этого метода есть существенный недостаток - контроллер желательно высокосоростной, обработка через прерывание, тут мало чем поможет. Если толькр не сделать таймер-прерывание, и вызывать процедуру например раз в миллисекунду, а данные записывать в стэк памяти, а не в переменную.
      ..Или сделать что-то вроде RtOS (как в stm32-контроллерах, кстати копеечные)
      Удачи )

    • @masterkit9517
      @masterkit9517 4 роки тому +1

      @@GypsyRewind Спасибо!

  • @МихаилЖуравель-в2к
    @МихаилЖуравель-в2к 7 років тому

    Блин а я вот чет не додумался до этого сделал просто на прерываниях, жду прерывание на линии и смотрю что на второй.

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      )

    • @bul2012
      @bul2012 5 років тому

      Это самая первая идея, которая мне пришла в голову (прежде чем загуглить). По сути эта идея самая тупая, НО она рабочая. Та как между фронтами задержка 10мс в среднем, то даже на хал библиотеке это можно реализовать ( юзал ф103 камень на частоте 72мгц)

  • @googlhuinia
    @googlhuinia 7 років тому

    Может кто подскажет как ему запретить перепрыгивать на ноль после последний цифры и наоборот.

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      Покажи чего у тебя в main.c?

    • @googlhuinia
      @googlhuinia 7 років тому

      Всё сдул у тебя . Я про то как счетчику запретить делать как у тебя на видио 18:47, что бы он не сбрасывался, а оставался на 255

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      У меня исходника нет, a за просмотр своего видео ютуб может плохо оценить.