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

dimir

Участник
  • Постов

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

  • Посещение

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


  1. В 05.04.2023 в 22:24, mitya1698 сказал:
             EncState = ((EncState << 2) | (dt & 0b11)) & 0b1111; 
             switch(EncState)
             {
    	       case 0b0001: case 0b0111: case 0b1000: case 0b1110: StepD++; break;  // Вверх
    	       case 0b0010: case 0b0100: case 0b1011: case 0b1101: StepD--; break;  // Вниз
    	       case 0b0000: case 0b0101: case 0b1010: case 0b1111: break;           // Стоим
               default: Error++; break;                                             // Ошибка - пропущен импульс
             } 

    Нет. Есть 4 прошлых возможных состояния энкодера и 4 новых.

    Из четырех новых два правильных и два ошибочных. 

    Из правильных одно вверх второе вниз.

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

    Код выше мне нравится больше, и возможно он более понятен. Здесь в переменной EncState старшие два бита - прошлое значение, младшие - новое. 

    Получается по спаду.

  2. Спасибо за разьяснение.И ещё для лучшего понимания алгоритма прошу вас разъяснить.Если мы вращаем по часовой стрелке и против часовой .То инкремент происходит по спаду или по фронту одного из каналов? Вот это хотел бы уяснить себе.

  3. В 05.04.2023 в 20:24, mitya1698 сказал:

    кто на ком стоял?

    Я так понял вы проффсионал.И с чувством юмора.Я с такого региона где юмор вторая жизнь.Я имею ввидуДля чего служит энкодер?.Он заменяет две кнопки инкримент и дикримент.Но для этого нужно переменную .Вот это она?

  4. В 05.04.2023 в 20:08, EdgeAligned сказал:

    Для этого надо посмотреть, какие сигналы формирует квадратурный энкодер:

    a2a87f6ec61f39dac526b71761670ba7.png

    Вы мне показываете функционал квадратурного  энкодера? но там нет элнмента  а как он именуется? .Не 2И -НЕ.Что это?

    Но при покое у нас все логические 1 на канале А и канале В

  5. Вы мне дали пример опроса?.А прервания по пинам для ручного енкодера наверное не подходят.

    Мне не совсем понятны эти переменные.Я подобный пример в нете видел.

    В 05.04.2023 в 19:48, mitya1698 сказал:
    EncState

    И я так  понял инкримет  при управлении и вывода на дисплей к этой переменной.Или не так?

  6. В 28.02.2023 в 09:50, novikovfb сказал:

    прочитайте описание режима PWM в стандартном таймере. Там можно сделать переключение 0->1 по достижению счетчиком указанного значения и сброс 1->0 при переполнении счетчика, а также - более сложные комбинации.

    Режим PWM не совсем подойдёт в голом смысле.Вернее сказать один управляемый таймер а другим.Один в режиме PWM а другой управляет скважностью или как?

  7. В 27.02.2023 в 22:02, Точка Опоры сказал:

    +1, однако.

     

    Какое питание в системе? Как тактируется ATmega? Она новая или б/у? Что, кроме программатора, есть на линиях PDI/PDO/SCK/_Reset? Что за программатор? Какое именно сообщение об ошибке?

    Ваш коллега был прав нет контакта.Но по питанию.Мне как электрику со стажем но временно безработному немного неловко.

  8. В 19.02.2023 в 21:16, adnega сказал:

    Да - одиночный импульс.

    TIM_CCMR1_OC1M - задает тип сравнения для первого канала, TIM_CCMR1_CC2S - задает вход для захвата второго канала (1 = IC2 is mapped on TI2).

    Но ведь настройка захвата состоит из двух битов 1 и 0.Если две единички то вроде не попадаем туда куда вы говорите.Что настройка захвата не настроена.Да и на рисунке нарисован захват с первого канала а не со второго.И всё таки мне не понятно hig active или lov?Там 3 бита 2 1 0.Так перывание по захвату или по сравнению?Если по захвату то флаги не те.

  9. Понял  один канал на RX .Второй на TX.Вот вы мне открываете глаза извините за нетехнический термин.То есть RX работает в режиме захвата а TX в ШИМе.?Анализатор у меня есть китайский.А герлянду новогоднюю (Звезду белую 16 канальную.) таймер задействован  в прерывании считаю тики и переключаю порты.Сделал цыкл с помощью операторов swich и ещё одного таймера который входит в прерывание и переключает эффекты.С помощью выходного порта и кнопки автоматической.Вообщем задействовано два таймера.Мечта детства.А как можно на одном пине сделать но каналов два? И всё равно алгоритм тот же?И ещё один вопрос а зачем мощный транзистор? DS18b20 разве потребляет большой ток?Или это что бы сделать уверенный "0".А при сбое программы Вач-дог таймер не поможет?.У меня была такая проблема .Оказался блок питания не очень хороший.Я поставил на высокой стороне фильтр с импульсного блока питания и проблема ушла.Вы меня заинтриговали .Я попробую сделать нечто.Хотя ворос в том что два режима в одном таймере? Ну значит нужно каждый раз переключать?А как вы  измеряите тайминги.Что бы совпало с даташитовскими?

  10. C DS18b20 только с AVR.С STM32 только с таймерами.ШИМ а с захватом не сталкивался.А почему вы задействовали переход с HSE  на HSI.?Да ещё энкодер аппаратный.Ну и новогоднюю герлянду  с прерыванием по таймеру.Вы мне скажите.Вы подаёте шим одноврименно читаете с это го же пина переключая таймер в режим захвата?Так я понимаю.?

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