ШИМ на Attiny 13, AVR, CodeVisionAvr

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

КОМЕНТАРІ • 97

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

    тоже начинал с этой программы . уроков не было тогда таких . эх и мучился тогда . но получил базовые знания языка . сигнализации на аттини 2313 делал. программаторы сам паял . первый с lpt порта а потом только usb сделал .

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

      Да это точно вот как раз этот программатор только не lpt a com port ua-cam.com/video/PC5gyW20Xfo/v-deo.html

  • @Vitalij306
    @Vitalij306 7 років тому +3

    Большое Вам человеческое спасибо за эту роботу. Мне уже стыдно к Вам обращаться. Ещё раз большое спасибо.

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

      Ничего стыдного нет, все ок, всегда рад помочь...

    • @TimeOut17
      @TimeOut17 5 років тому +1

      Сенсей сделал чудо... это 0.

  • @евгенийтит-л1щ
    @евгенийтит-л1щ 5 років тому

    Спасибо Вам огромное за Вашу работу, очень понятно, чётко и без лишнего мусора всё ясно объяснили. Лайк, и подписка)
    P.S> Эхх...ещё бы на корпусах TQFP небылиб так по-идиотски разбросаны пины портов....цены б небыло меге16

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

      Я рад что мое видео вам помогло или понравилось, подпишитесь пожалуйста на мой канал и поделитесь этим видео, буду очень рад ua-cam.com/users/xxxcasxxx1

  • @sergeynikolaevich7229
    @sergeynikolaevich7229 Рік тому

    Интересное видео спасибо! Вопрос как обойти или скинуть в шим фонаря контроль тока?

    • @cas_channel
      @cas_channel  Рік тому

      В фонаре нет контоль тока

    • @sergeynikolaevich7229
      @sergeynikolaevich7229 Рік тому

      @@cas_channel благодарю за ответ. к сожалению в новых фонарях есть контроль напряжения и как следствие тока для отключения фонаря от предотвращения полного разряда аккумов . я решил эту проблему за 2 дня . спасибо.

    • @cas_channel
      @cas_channel  Рік тому

      ТАк это не контроль тока, а контроль разряда АКБ, контроль идет по напряжению. Делается это с помощь МК и включается АЦП.

  • @АлександрКузнецов-ц9ъ

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

    • @cas_channel
      @cas_channel  Рік тому

      Здравствуйте!
      if(счетчик > 255) {счетчик =255};

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

    привет друг )) спустя 3 года я случайно наткнулся на свои коменты, я очень редко пишу прошивки мелкие вот что то не могу найти решение для моего авто наведение солнечной батареи с использованием двух фото датчиков, а выход один ШИМ на двигатель. можете чуть по направить, я написал но не работает, вернее всегда ширина импульсов кругами идет. а мне нужно чтобы держался стабильно, короче говоря два фото приемника должны одинаково получать свет, если на каком нибудь свет становиться больше то добавляем ++ в шим если меньше то отнимаем.

  • @alextar8489
    @alextar8489 Рік тому

    а потанциометром как ругулировать

  • @karokuchukyan4464
    @karokuchukyan4464 2 роки тому

    Добрый вечер.извините можна ли на мк. аттини2313 порт Д сделать шим?

  • @ИванЕвдокимов-щ9ь
    @ИванЕвдокимов-щ9ь 4 роки тому

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

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

      Потому что минимальная.... поставьте 0x00тогда не должно быть

    • @СумароковПавел
      @СумароковПавел 4 роки тому

      @@cas_channel Прописал в основном теле программы OCR0A=0x00; и больше ничего и светодиод все равно слабо светится и на осцилле идут иголки. Как полностью отключить ШИМ?

    • @СумароковПавел
      @СумароковПавел 4 роки тому +1

      Отвечу сам себе - подтянул выход МК через резистор 2К к земле , и теперь, когда надо полностью гасить ШИМ пишу код, что направление порта настроено на вход и все работает.....
      вот пример ....
      while (1) {
      int i;
      for (i=0; i0; i--) {OCR0A=i; delay_ms(1); }
      DDRB.0=0;
      // вывод на вход (нужен резистор на массу) - гасим выход полностью
      delay_ms(1000);
      DDRB.0=1;
      // вывод на выход ШИМ таймера
      }
      Иголки на осцилле пропали и диод гасится полностью.......

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

      @@СумароковПавел абсолютно те же грабли и у меня. А автор канала скорее всего никогда не ковырял шим, а просто скопипастил исходники. На днях подключусь логическим анализатором и расскажу о длительности этой иголки. Скорее всего ее длительность равна одному периоду. А если так, то есть мысли, что и расчет разрешающей способности шим (да и коэф заполнения) будет отличатся от традиционного. Если интересно то я могу поделиться результатами своего исследования.

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

      @@dred77780 поделитесь

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

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

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

      Данный проект именно так и делает, одна кнопка уменьшает другая прибавляет

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

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

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

      Да... нужно схемотехнически завершить схему

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

    Про бит флаг на 2:56 минуте это что за строчка как она работает?

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

      Ну такие переменные могут принимать значения только нуль или единица и все, например число 2 он не будет понимать или 3.
      ПРименять можно там где не нужно делать счет, а как "переключатель"

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

      спасибо

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

    А как сделать чтобы запоминалось последнее значение в память и запускалось с него при включении?

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

      Это уже eproom это другое видео... если будет свободное время, по воле всевышнего сделаю видео

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

    А возможно ли для Attiny85 скейч для управления Servomotor сделать? Я пытаюсь, но у меня не получается. По этому поводу в интернете почти ни какой информации нет. Как я понял из интернета: с ардуино платформой это сделать не возможно, так как там с 16 бит, а тинка работает только до 8 бит.

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

      Все можно но я не дошел до сервомоторов

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

    Какие авр,уже эра СТМ!

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

      А вот здесь вы ошибаетесь, на вкус и цвет...

  • @ВикторКулагин-ж9о
    @ВикторКулагин-ж9о 6 років тому

    На какой частоте у вас работает шим?Можно ли шим сделать свыше 22кГц хочу регулировать вращение эл.двигателя , говорят что такая частота нужна что бы эл.двигатель не пищал

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

      Частота ШИМа на данном видео 125 KHZ, смотрите по времени 1:35

    • @inf20
      @inf20 5 років тому +3

      @@cas_channel Вы путаете частоту тактования таймера с частотой ШИМа. Частоту тактования нужно поделить на 256 чтобы вычислить частоту ШИМа (у таймера 256 отсчетов за которые он выдаст 1 импульс), в вашем примере частота ШИМа будет 488 Hz. На видео ua-cam.com/video/IDFudDKhjag/v-deo.html это видно (правда осцилограф почему то показывает 570 Hz, либо осцилограф неточно посчитал частоту, либо частота внутреннего генератора tiny13 уплыла из за температуры), максимальная же частота ШИМа attiny13 от внутреннего тактового генератора равна 37,5 kHz.

  • @PES.dyk.
    @PES.dyk. 6 років тому

    Как можно написать код для того чтобы при подачи питания на микрокантроллер - то микрокантроллер давал сигнал на реле .а при нажатии на кнопку - то микрокантроллер отключял сигнал на реле ...и так в цыкле?

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

      Проще простого))) Завтра постараюсь написать код...

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

      Я сделал ваш проект ua-cam.com/video/W0oe1vTEQhc/v-deo.html&lc=UgzdzbFFUouYCYNEIip4AaABAg

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

    учитель, а где Вы назначили входы и виходы МК?

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

      Здравствуйте.
      ТАм там где DDR.B.0 = 0 Это вход, там где DDRB.0 = 1 Это выход

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

      @@cas_channel извините, не поздоровался ЗДРАСТВУЙТЕ, спасибо попробую разобраться

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

    я видимо туплю.. но очень интересно откуда появился код после конфигурации всего лишь контроллера?

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

      Генерируется средой CVA автоматически

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

      @@cas_channel Понятно. Сегодня воскресенье - жду среду!

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

    видно что не вы писали этот код . 4:44 условие ограничивает отсчет больше 255

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

      А кто писал? Если вы заметили ошибку... то все ошибаются

  • @ВалерийКамышов-е5р
    @ВалерийКамышов-е5р 6 років тому

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

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

      Вы про комнатную лампу на 220 вольт?

  • @Vladimir-lx3sw
    @Vladimir-lx3sw 6 років тому

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

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

      Привет. Да, уточните вопрос что значит запоминала состояние шим?

    • @Vladimir-lx3sw
      @Vladimir-lx3sw 6 років тому

      ну чтоб она записывала состояние шим в эпрум. Для того чтоб при при отключении и потом включении питания не пришлось заново настраивать шим

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

      Ну это не нужно делать ибо можно заранее пресеты сделать, по нажатию определенной кнопки ... в общем могу помочь, без eeprom

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

    Скажите пожалуйста можно вписать в вашу программу код так что бы при помощи кнопки как например в китайских фонариках при нажатии кнопки загорелся светодиод на 20% потом снова нажать на кнопку загорелся светодиод на 50% снова нажать на кнопку светодиод загорелся на 80% .Ну и на 100%, а не плавно меня очень сильно это интересует Если можете хотя бы напишите кусочек кода чтобы я мог двигаться в правильном направлении для написания этой программки.

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

      Vitalij306 Привет! Хорошо на днях постараюсь сделать видео, я это сделаю на светодиоде пойдет? т.е при нажатий на кнопку наш светодиод будет гореть на 20% , еще раз нажал будет гореть на 50% и т д...

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

      Канал CAS Да конечно пойдет. Как я могу Вас за это отблагодарить?

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

      Подпишитесь на мой канал и порекомендуйте друзьям мой канал )) буду рад))

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

      Канал CAS Само собой )))

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

      Вот ваше видео, извените за задержку небыло времени ua-cam.com/users/edit?o=U&video_id=40ZTUcJfy_M

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

    Немного не по теме, но всё же. Есть attiny13, которую прошиваю через arduino nano (скетч пишу в arduino ide), потенциометр 10К и светодиод с резистором. Задача - считать значение потенциометра и в соответствии с ним установить яркость светодиода посредством ШИМ. При этом естественно нужно перевести значение из диапазона 0-1023 в 0-255. Просто поделить на 4 не интересно, хотя способ рабочий. Я хочу задавать диапазон ШИМа 20-240, чтобы светодиод не гас и не горел на полную. Функция map в память мк не помещается (в проекте два светодиода и два потенциометра, соответственно мапить нужно два значения), нашел исходный код, применил его, в результате при полном обороте потенциометра светодиод трижды загорается и гаснет. Исходный код функции:
    long map(long x, long in_min, long in_max, long out_min, long out_max)
    {
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
    Соответственно у меня получается
    val = (val - 0) * (240 - 20) / (1023 - 0) + 20
    или же
    val = val * 220 / 1023 + 20
    Как считает это attiny13, что выдает такой странный результат, не понимаю

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

      Ооо сложный случаи... здесь нужно я бы так сказал методом тыка находить... в наличии нет потенциометра... поэтому пока что нечем вас обрадовать...

    • @Al.Sy.
      @Al.Sy. 6 років тому

      Возможно, не хватает разрядности и происходит переполнение, когда после перемножения двух положительных чисел получается отрицательное число (это особенность представления целых положительных и отрицательных чисел в дополнительном коде, когда знак определяется самым старшим битом). Попробуйте перед типами long везде описать как unsigned long.
      Кстати, какова максимальное значение величины val?

    • @ATtiny13a-PU
      @ATtiny13a-PU 5 років тому +1

      @@cas_channel , я решил делать так . i >> 2; эта команда делит i на 4 всего за 1 такт и записывает за 2-3 такта

    • @ATtiny13a-PU
      @ATtiny13a-PU 5 років тому +1

      чтобы ограничить от 20 до 240 надо с двух концов реостата подпаять резисторы нужного номинала исходя из нужд. например для реостата на 100 кОм нужны резисторы примерно 4.7 кОм и 3.9 кОм с минуса и плюса соотвественно

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

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

  • @СергейШатунов-с9ы
    @СергейШатунов-с9ы 5 років тому

    Здравствуйте! у меня светодиод не до конца затухает,как можно сделать программно что бы до конца затухал?

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

      Привет, а вы сделали по моему проекту?

    • @СергейШатунов-с9ы
      @СергейШатунов-с9ы 5 років тому

      @@cas_channel да по вашему

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

      @@СергейШатунов-с9ы ДОбавьте резистор на 330 Ом можеду ножкой МК и светодиодом

    • @СергейШатунов-с9ы
      @СергейШатунов-с9ы 5 років тому

      @@cas_channel спасибо попробую

    • @СергейШатунов-с9ы
      @СергейШатунов-с9ы 5 років тому

      @@cas_channel а вы не посмотрите мой код на правильность,я собираю контролер ходовых огне на аттини 13 по примеру вашего кода,вроде все работает,но хотелось бы удостоверится,все ли правильно,там всего пару строк,вот если не трудно конечно
      #include
      #include
      void main(void)
      {
      PORTB=0b000000;
      DDRB=0b000001;

      // Crystal Oscillator division factor: 1
      #pragma optsize-
      CLKPR=0x80;
      CLKPR=0x00;
      #ifdef _OPTIMIZE_SIZE_
      #pragma optsize+
      #endif
      TCCR0A=0x83;
      TCCR0B=0x03;
      TCNT0=0x00;
      OCR0A=0x00;
      OCR0B=0x00;


      while (1)
      {
      if ((PINB.2==1)&&(PINB.3==0)&&( OCR0A0x00))
      {
      OCR0A=OCR0A-0x01;
      delay_ms(5);

      }




      }
      }

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

    здравствуйте почему схема в протеусе не работает?

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

      Честно без понятия, пробовал моделировать, чета не сработало

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

      Канал CAS именно этот вариант не работает, я делал другой вариант и заработал думал с протеусом что не так

  • @user-ev1976
    @user-ev1976 6 років тому

    ..здравствуйте,а етот вариант и с такойпрошивкой можно использовать для управления лабораторным блоком питания вместо подстроечных резисторов?
    вот просмотрите пожалуйста,загуглите SCPS0037-25V-0.1, Кнопочный контроллер импульсного стабилизатора напряжения с памятью-нашел такой модуль на attiny13,но его делают в России и на украину не отправляют.схемно,программно похож на Ваш

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

      Ок увидел его, но скажите на обратной стороне стоят 3 микросхемы, вы не знаете что это за микросхемы?

    • @user-ev1976
      @user-ev1976 6 років тому

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

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

      Все ок, мне нужно время почитать, если получится то сделаю...

    • @user-ev1976
      @user-ev1976 6 років тому

      ..спасибо большое,очень выручите.надо как для себя так и друзьям в сервисценры попеределывать их БП заменив резисторы на кнопочное управление.будете читать,так на сайтах где описуют даное изделие и схема есть
      www.chipdip.ru/product/scps0037-25v-0.1
      www.raelkom.ru/2016/09/scps0037.html
      ..во второй ссылке найдете описание и схема,PDF файлик, скачайте,там имеется схема подключения

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

      Ок

  • @СергейЕвгеньевич-ф9м

    dargin darginec
    Схема в протеусе действительно не работает. Что вы сделали по другому, чтобы заработало? А то такие переподаватели "кто умеет читать код, тот поймет" сильно вдохновляют на изучение программирования. Мечется курсором по коду, вместо того, чтобы объяснить, что значит каждая строка. Почему в 17 строке стоит именно 0х80? Почему в 39 строке стоит 0х83, а в 40 строке 0х03?
    dargin darginec, объясните как переделать, плиз. Может свой код на почту кинете ms142@mail.ru

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

      Если вам нужно объяснение для этого всегда есть комментарии, напишите я объясню, я не стал объяснять это на видео чтобы не тянуть время, но так как вы меня не много обозвали ( А то такие переподаватели "кто умеет читать код, тот поймет" сильно вдохновляют на изучение программирования) и еще и попросили другого человека, то надеюсь он вам поможет. Ибо я жду извинений и я вам объясню

    • @Al.Sy.
      @Al.Sy. 6 років тому

      Как ни печально, но для ясного понимания Вам всё равно придётся читать техническую документацию на конкретную модель микроконтроллера (по-английски datasheet), побитно выясняя, что устанавливается в управляющих регистрах МК. Поэтому такие листинги, созданные wizard'ами-генераторами кода, вызывают массу вопросов у начинающих. В компиляторе avr-gcc часто используют мнемонические обозначения имён битов для установки определённых битов, например так:
      TCCR0B = (1