Программирование микроконтроллеров " Урок10 LED индикатор на Atmege"

Поделиться
HTML-код
  • Опубликовано: 18 ноя 2024

Комментарии • 144

  • @Prostoslojnom
    @Prostoslojnom 8 лет назад +18

    Дай Бог Александру здоровья , творческих успехов и ВСЕГО необходимого .
    Пару сот таких людей могут сделать больше , чем все вузы страны.
    Ещё раз СПАСИБО !

  • @СергейЛевашов-г5н
    @СергейЛевашов-г5н 3 года назад

    Еще раз низкий поклон за эти Уроки !! Жалко сейчас их нет как раньше.. Обращаюсь к вашим урокам постоянно!!! С эти индикатором пришлось провозиться 18 часов.. Но получилось....!!!!!!!!!!!!!!!!!!!!!!

  • @vrun165
    @vrun165 9 лет назад +8

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

  • @ВасилийАлибабаевич-и4ф

    Шикарный урок. У Вас очень хорошо получается объяснять! Желаю успехов в Вашем нелегком начинании!

  • @Rossava13
    @Rossava13 7 лет назад +3

    Видео, бес сомнения, интересное и полезное, он... мой учитель информатики еще лет 20 назад поставил бы мне за этот код твердую двойку.
    1. Всю функцию peresot можно записать в 3! строки:
    Danie_Razrad_1=temp /100;
    Danie_Razrad_2 = (temp%100)/10;
    Danie_Razrad_3=temp%10;
    И я уверен, что это занимает меньше машинного времени, чем while'ы
    2. Хорошей практикой было бы сделать массив переменных Danie_razrad.
    3. имея массив, можно и в прерывании обойтиcь бес case.
    4. Про названия переменных - молчу.
    Поймите меня правильно, я только за таких проектов, но у молодежи нужно воспитывать "культуру" кода с самого начала. Потом трудно переучивать.

    • @АлександрПисанец
      @АлександрПисанец  7 лет назад

      1. Нет, вы очень не правы, ваш вариант красив но значительно медленней.
      2. Это всего то вариант как можно работать. По большому счету, массив не как не выигрывает, а вот отдельными переменными информативнее работать в программе.
      4. Вы правы, в дальнейших примерах я осмысленные названия стал задавать.

    • @Kos9078MP
      @Kos9078MP 7 лет назад +1

      наткнулся тут на Ваше видео в рекомендованных. касательно первого пункта
      i92.fastpic.ru/big/2017/0705/01/713dabe8b1160f87318f45139e9f8201.jpg
      i92.fastpic.ru/big/2017/0705/d4/88f87937f5cd057b69866c1f6ba11bd4.jpg

    • @Rossava13
      @Rossava13 7 лет назад

      вооот, почти в 2 раза быстрее

  • @Александр-д2м9ч
    @Александр-д2м9ч 11 лет назад

    Огромное спасибо за уроки!!!
    Смотрю с удовольствием!
    Большая просьба, сделайте урок по типам данных (преобразование типов, хитрости работы с ними).

  • @DmMukhin
    @DmMukhin 11 лет назад

    Все очень доходчиво объяснил. С нетерпением жду продолжения !!!
    Спасибо за Ваш труд

  • @ievgenod9708
    @ievgenod9708 9 лет назад

    хороший урок.на сегодняшний день лучшая инф. в сети!спасибо!хотелось бы увидеть что-то по led матрицам,т.к тема будет очень интересна для многих. реализация бегущей строки и прочих эффектов.

    • @АлександрПисанец
      @АлександрПисанец  9 лет назад

      +Ievgen Od Постараюсь какой то интересный проект на матрице за бабахать.

  • @AndryG1000
    @AndryG1000 4 года назад

    лучшее объяснение, которое встречал

  • @CuranderoUA
    @CuranderoUA 10 лет назад

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

    • @АлександрПисанец
      @АлександрПисанец  10 лет назад

      Тут вы правы. Электроника для производство отличается. Сейчас какраз заканчиваю линию по производству металлических 200литровах бочек. Было железо без электроники. Поскольку электроники пришлось делать немерено, да еще и самому, ушло времени на это уйму. Сейчас процесс обкатки. Ну, это так отступление.
      Что касается вашего примера. Перед тем как совершить перемещение механизма на станке, нужно сначала проверить концевик, убедится, что он в правильном положении, а только после проверки осуществить перемещение механизма станка до срабатывания этого концевика. Что касается аварийного времени для перемещения, это вполне рабочий вариант. Предположим за указанное время концевик не сработал, это хорошо, если есть упор. Ваше выставленное время посчитало, и скажем двигатель отключился. А если нет упора, может произойти повреждение. В таких случаях нужно ставить датчики линейного перемещения или аварийный концевик. Хотя все зависит от оборудования.
      Насчет отображения на индикаторе режим неисправности, просто необходим. По себе скажу реально помогает, проходит какое-то время и сам забываешь, как что должно работать. А так глянул на надпись, к примеру, пишет нет ответа БВК6. В дакументации нашол что за датчик и где находится. Реально сокращает время нахождения неисправности.

    • @CuranderoUA
      @CuranderoUA 10 лет назад

      Александр Писанец
      Вот-вот, об этом и разговор, хорошо, если человек пишущий прошивку знаком с производством, а если нет?.. Думаю подобные простые алгоритмы проверок и сервисных функций не помешало бы когда-нибуть осветить отдельным уроком. Также пришел к примеру к выводу, что если нужно сделать програмный "грибок" аварийной остановки, на оборудовании, где нельзя просто вырубить общее питание, то для быстрого отклика не стоит запрещать прерывания одной командой на пол страницы кода, а если это возможно, разбить на участки и каждый отдельно защитить от прерываний. Конечно мы будем рады любому уроку, побольше бы Вам свободного времени на их создание, тем более, что почти в каждом из них так или иначе затрагивается "защита от внештатных ситуаций", за что отдельное спасибо)

  • @ГерманИванов-э6я
    @ГерманИванов-э6я 11 лет назад

    Жду следующих выпусков.Все супер.

  • @иванрусев-ш5щ
    @иванрусев-ш5щ 7 лет назад

    спасибо буду дальше учится.Вы грамотный учител.

  • @Dmitrii82
    @Dmitrii82 6 лет назад

    Лучшее обьяснение на весь ютуб!

    • @Dmitrii82
      @Dmitrii82 6 лет назад

      Сделайте на 7сег лсд по типу как на мультиметрах с мультиплексорным управлением. Умоляю.

  • @sokolbadalov1576
    @sokolbadalov1576 8 лет назад

    уроки сделано очень грамотно ,Дай Бог Александру здоровья , творческих успехов и ВСЕГО необходимого ,вы знаете ассемблер я считаю что это язык высокого уровня у меня к вам несколько вопросов ?
    1.как убрать не назначенных нулей при динамическом индикации таймер обратного отчета чтобы например после цифра 10 не писал цифра 09 а просто 9.
    на семисегментного индикатора ?
    2.Если можно то сделать урок по защиту 3-х фазных двигателей который есть ваш видео,объяснение программы если можно то добавит программно еще тертую фазу
    токовую защиту.
    3. Если можно то сделать урок по защиту по напряжение например какие то пределы защиты бытовой техники схемы в интернете есть на микроконтроллере
    но интересно было увидеть программы на avr studio 6 например установит защиту
    от 160в до 240в это примерно.
    4.как сделать паузы на программе с кнопкой на микроконтроллере как на стиральном машине чтобы он работал дальше с точки останова.
    5.уроки по звук на микроконтроллере что бы при каких да событии прозвучал звук
    например как на микроволновке при окончании нагрева и т д.

  • @nhfdybr
    @nhfdybr 11 лет назад

    Спасибо огромное за Ваши видео!

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

    Тут вы правы. В последующих уроках буду так делать

  • @anatoliishirman5177
    @anatoliishirman5177 9 лет назад

    Я новичек.Спасибо большое за ваши уроки.Очень помогают. Пытаюсь подключить шкалу на 18 светодиодов через два сдвиговых регистра 74HC595 по SPI. Вольтметр. Могли бы вы сделать урок об этом. Или подсказать какой нибудь ресурс.Поисковики уже замучал. Нужен пример. Спасибо.

  • @ЕвгенийКонобицкий

    Реально у ВАС всё просто
    Лайк
    Я хочу на ассемблере

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

    С начало так и планировал, а потом передумал. Решил, что будет так нагляднее.

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

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

  • @rusnickk
    @rusnickk 11 лет назад

    Спасибо, за видео, недавно также мучил сегметный индикатор, как насчет видео по работе с LCD дисплеем, к примеру HD44780?

  • @МарянФедірко-с8ш
    @МарянФедірко-с8ш 9 лет назад +3

    Для тих хто буде программу копіювати в Codevision потрібно функцію записати не так Peresot ( volatile unsigned char Temp ) а так void Peresot (volatile unsigned char Temp) компілятор видає помилку без void,
    asm("cli"); Записати з знаком на початку# #asm("cli"); #asm("sei"); #asm("nop")
    Щоб відображати більше 255 потрібно змінну Danie змінити на int замість char Також поміняти змінну у функції на int void Peresot (volatile unsigned int Temp)
    Для легкої настройки індикатора краще массив записати у бінарні системі числення
    unsigned char sifra[10]= {
    0b00000011,0b10011111,0b00100101,0b00001101,0b10011001,0b01001001,0b01000001,0b00011111,0b00000001,0b00001001};
    Дякую за хороший кусок кода автору.

  • @Sxemodelkin
    @Sxemodelkin 2 года назад

    Здравствуйте
    можете подсказать:
    В массиве хранятся числа 0...9.
    Я собираюсь их выводить в двоичном формате по 4 пинам.
    Как вывести именно на эти пины, не трогая остальные.
    так вот я не могу додумать.
    массив содержит допустим цифру 9 0b00001001;
    далее как ее два младших бита вывести на четыре ножки порта не изменяя состояния остальных
    если мы напишем PORTC= 0b00001001 он заменит нужные и остальные тоже, которые трогать нельзя они под другое заняты.

  • @ПравийЛевый
    @ПравийЛевый 6 лет назад +1

    Добрый день Александр. Как изменить программу если сегменты индикатора подключены к разным портам контроллера, (допустим часть к порту В, а часть к порту С) ведь тогда нельзя просто создать массив с цифрами? Если у Вас будет свободное время, сделайте видео урок по подключению сегментов к разным портам. Буду очень благодарен Вам.

  • @dmitriibannikovasx
    @dmitriibannikovasx 7 лет назад

    Почему вектор прерывания не записывается в main? И как вообще остальные строки программы взаимодействуют с этими прерываниями? И как сделать так чтобы переменную Danie (которая отображается на индикаторе) можно было менять в реальном времени? А то не слишком полезно все время выводить одно и тоже число. Например, я хочу чтобы при нажатии кнопки число 145(как у вас) увеличивалось на 1.

  • @РоманОзеров-ф6ю
    @РоманОзеров-ф6ю 11 лет назад

    Хорошие уроки! Спасибо)

  • @kostya75664
    @kostya75664 10 лет назад

    У меня atmega128 работает от внешнего кварца 8 МГц, пишу в Atmega Studio 6.0. Так вот взял ваш пример, не работает. Не входит в функцию Peresort. Подсовываю тело этой функции в обработчик прерывания. все ок.

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад +1

    Всё воедино собираю в Vegas Pro.

  • @barsel4658
    @barsel4658 5 лет назад

    В сети есть статья про часы на семисегментных индикаторах ИВ-9. Реализованы они на Atmega8, использованы регистры сдвига TLC6C598-Q1. Подскажите, пожалуйста, как программно это реализовать?
    Вот ссылка на статью www.petrofflab.ru/2015/06/3D-numitron-iv9-2-tube-clock.html

  • @_Iokanaan_Marusidze_
    @_Iokanaan_Marusidze_ 11 лет назад

    СПАСИБО !!!
    а в какой среде вы делаете видео ?

  • @sky9t_sulia
    @sky9t_sulia 10 лет назад

    Я в шоке, сколько информации перелопатил, и вот! Золотая жила!! Спасибо большое! Дошло до меня :) Но есть один вопрос, можно ли подключать семисегментник анодом прямиком к ножке как показано на схеме 0:41? Не сгорит ли ножка PORTDx при цифре 8 скажем?

    • @АлександрПисанец
      @АлександрПисанец  10 лет назад +1

      Можно. Только токоограничующие резисторы надо ставить.
      Р.С Извеняюся за несвоевременный ответ youtub порой не отображает, что был комментарии.

    • @sky9t_sulia
      @sky9t_sulia 10 лет назад

      Александр Писанец Спасибо! Ничего я привык что не сразу отвечают на Ютубе

  • @user-ed7tc1mn2d
    @user-ed7tc1mn2d 9 лет назад

    Ваши уроки мене очень помогли переступить порог к микроконтроллерам. Есть один вопрос? А где могу найти описания слов таких как например: ISR, case, break, switch и.т.д. Так как есть идеи реализовать разные задумки но не хватает базы стандартных алгоритмов, слов, наборов инструкций .... (К примеру я знаю десять цифр и исходя из этого я подставляю любую цифру я могу выложить любое число. Так и в программе если я буду знать всю стандартную библиотеку то смогу в итоге сделать любую программу)

  • @NikomatBreh
    @NikomatBreh 4 года назад

    Здравствуйте. Не удается разобраться с пониманием того как произойдет выход из подпрограммы обработки прерывания TIMER0_COMP_vect.
    В блоке CASE 3 в конце команда break. В результате выполнение программы возвращается на строчку 20: Vibor_razrada++ и все зацикливается. Получается из вектора прерывания никогда не выйдет?

    • @АлександрПисанец
      @АлександрПисанец  4 года назад

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

  • @АлександрМирошник-о7ч

    Спасибо за видео

  • @nagirich
    @nagirich 11 лет назад

    Здравствуйте! Вы имели дело с радиомодулем nRF24L01 ?

  • @SagosN
    @SagosN 11 лет назад

    В примере для скачивания, в главной функции пропущена запись в регистр OCR0

  • @iAtusin
    @iAtusin 8 лет назад

    Точнее сказать, максимальное число, которое можно вывести на индикатор, даже если ставит вручную, 255.

  • @alexcafpir8166
    @alexcafpir8166 8 лет назад

    Александр, если можно несколько вопросов.
    1. Почему многие называют индикаторы 7-ми сегментными, ведь по факту 8 символов (точка).
    2. Для чего у вас в коде всегда присутствует пустой оператор asm("nop"); ?
    3. Зачем для проверки условия использовали цикл, а не if?

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

      Точка не является информотивным сегментом а только разделительным. Оператор 'nop' для демонстрации, чтоб останавливаться при отладке. IF это мой вариант, можно и по другому все написать.

  • @shizlgizI
    @shizlgizI 4 года назад

    Подскажите программу по-круче. На 4 разрядный индикатор. Что-то боль какая-то. Либо тускло горит, либо мерцает. Замучился.

    • @АлександрПисанец
      @АлександрПисанец  4 года назад

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

    • @shizlgizI
      @shizlgizI 4 года назад

      @@АлександрПисанец Блин. У меня либо ярко, но с мерцаниями, либо без мерцаний, но тускло. С предделителем играл, время совпадения тоже, нет яркости, резисторы убрал, толку нет. В комнате индикатор хорошо видно, на улице на солнце, даже в тени - нет. Пробовал ставить задержку циклом на разряд while(i != 2000){i++;}, работает - один сегмент после этого начинает гореть в полный "накал", если поставить цикл на каждый разряд, всё разваливается, программа перестаёт корректно работать. Я в тупике.

  • @nagirich
    @nagirich 11 лет назад

    А плонируете работать с nRF24L01 ?

  • @ЭмильИсламов-д9ч
    @ЭмильИсламов-д9ч 8 лет назад

    Здравствуйте я хотел узнать как вы в окне IO view в режиме мониторинга состояния битов в поле Value изменили систему счисления? Сейчас у меня отображаются данные в 16тиричной системе счисления, а у вас в видео в десятичной.
    Заранее спасибо!

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

      +Эмиль Исламов На данном окне правой клавишей мышки кликните, выпадающем списке выберете.

  • @salampopalam9225
    @salampopalam9225 5 лет назад

    понравилось, но после спать захотел

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

    Спасибо исправил.

  • @Sasha-pf4lj
    @Sasha-pf4lj 6 лет назад

    шикарно

  • @SagosN
    @SagosN 11 лет назад

    При разложении числа выше одного байта (255) на индикаторе выводится чёрт знает что.
    Проблему решил объявлением переменной "Danie" и "Temp" как бес знаковое двух байтовое число "volatile unsigned int".
    Александр скажите пожалуйста зачем вы используете ключевое слово "volatile"?

    • @АлександрПисанец
      @АлександрПисанец  11 лет назад

      Дает понять компилятору что ненужно оптимезировать переменные после слова volatile . А-то компилятор может посчитать их ненужными, и исключит из программы вообще, или использовать коряво.

  • @_Iokanaan_Marusidze_
    @_Iokanaan_Marusidze_ 11 лет назад

    как известно в чужой монастырь со своими уставами не ходят, поэтому заранее прошу прощения за свое замечание от такого неуча как я....., по моему правильнее было бы к настройкам регистра применять вот такую запись TCCR1B |=1

  • @ОлегЯнчук-д6с
    @ОлегЯнчук-д6с 10 лет назад

    Извините за тупой вопрос, но я новенький в этом деле. Вы устанавливаете значение порта записью "PORTB &=~(1

    • @CuranderoUA
      @CuranderoUA 10 лет назад

      Скопируйте таблицу в главе "Выражения" отсюда: ru.wikipedia.org/wiki/%D0%A1%D0%B8_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29
      По сути, выполняя справа налево: пин 1 переводим в лог.1, дальше тильдой(волн. линия) инвертируем в лог.0 и знаком & присваиваем значение порту, то есть пину 1 порта В присваиваем лог.0, у вас же 0b00000001, то есть лог.1 присваиваем 0-му пину.

  • @Ra93POL
    @Ra93POL 11 лет назад

    Здравствуйте! С чем может быть связан "шум" индикаторов?

    • @АлександрПисанец
      @АлександрПисанец  11 лет назад

      Здравствуйте. Не понял сам вопрос, что за шум ?

    • @Ra93POL
      @Ra93POL 11 лет назад

      То есть тускло и хаотично мигают остальные сегменты.

    • @АлександрПисанец
      @АлександрПисанец  11 лет назад +1

      Polyakov Konstantin
      Тускло может быть, если частота на свечения сегментов выбрана большая. А насчет мигания трудно, что - либо подсказать, нужно все пошагово в отладчике смотреть.

    • @CuranderoUA
      @CuranderoUA 10 лет назад

      Polyakov Konstantin
      Проверил другие варианты последовательности работы сегментов, чтобы не было "послесвечения" сегментов соседних цифр перепишите код по образцу:
      Выкл. предидущий разряд
      Передать числовой эквивалент цифры порту
      Вкл. действующий разряд
      Или для данного кода:
      PORTD &=~(1

  • @CuranderoUA
    @CuranderoUA 10 лет назад

    Александр, а почему кстати не наоборот, почему не гасим сначала 1 символ, а потом зажигаем 2? Кстати для тех, у кого отладчика нет, а считать лень, очень полезная программка, для подбора букв на индикаторе тоже: sergeyk.kiev.ua/soft/led2asm/
    П. С. Пришел к выводу, что код стоит оставить 1 в 1, как у Вас(при той же распиновке индикатора), кроме цифры 2, туда вписать 40, если точку отображать не надо, то освобождаем 2 пин порта В для отслеживания прерываний.

  • @РоманТихий-б8б
    @РоманТихий-б8б 9 лет назад

    Доброго дня!
    Спасибо за уроки
    может Вы подскажите схемотехнику 4-х 7-ми сегментных
    Аноды понятно через 74НС595 а аноды их получается ах 16 штук

    • @РоманТихий-б8б
      @РоманТихий-б8б 9 лет назад

      Аноды понятно через 74НС595 а катоды их получается ах 16 штук

    • @ПавелПавлик-й8н
      @ПавелПавлик-й8н 9 лет назад

      Роман Тихий Насколько я понял, то у Вас 4 семисегментника с общим катодом? Если так, то у Вас всего 4 катода (необходимо 4 транзистора и 4 шт. 74HC595)

    • @РоманТихий-б8б
      @РоманТихий-б8б 9 лет назад

      не совсем у меня 4х4х7 сегментника

  • @chusovles
    @chusovles 11 лет назад

    Спасибо!

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

    Планирую свой канал развевать. Возможно уроки выходить будут не часто всё упирается в свободное время.

  • @vitaly182
    @vitaly182 11 лет назад

    Здравствуйте! на сколько уроков вас хватит?

  • @Александр-д2м9ч
    @Александр-д2м9ч 11 лет назад

    У как с ним работать расскажитие?

  • @_Iokanaan_Marusidze_
    @_Iokanaan_Marusidze_ 8 лет назад

    простите за критику но в вашем уроке оная тема раскрыта немного не до конца
    вы расмотрели самый легкий вариант
    как быть когда аноды и катоды индикатора разбросаны по всем портам мк ?
    а в остальном like :)

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

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

    • @_Iokanaan_Marusidze_
      @_Iokanaan_Marusidze_ 8 лет назад

      +Александр Писанец , это было бы очень хорошо.
      спасибо за вашу работу !

  • @supercelt3
    @supercelt3 9 лет назад

    Здравствуйте Александр! У меня вопрос. А если бы это был урок не для начинающих, то как бы вы реализовали цикличное переключение по индикаторам? Как бы более профессионально и компактно.

    • @АлександрПисанец
      @АлександрПисанец  9 лет назад

      +Dmitriy kosterov Данный способ я и применяю он достаточно быстр и компактен.

    • @supercelt3
      @supercelt3 9 лет назад

      +Александр Писанец Я почему спросил, код этого урока у меня работает по другому, сначала зажигается 1 индикатор, потом 3, потом 2, потом 1, потом 2, потом 1, потом 3 . Вот такая бяда((

    • @АлександрПисанец
      @АлександрПисанец  9 лет назад

      Я завтра посмотрю

  • @shizlgizI
    @shizlgizI 8 лет назад

    Александр. Из-за вашего канала, я разошелся не на шутку. Развожу плату, появилась нужда несколько пинов, которые целиком вешаются на порт, те, которые отвечают за свечение нужных сегментов, перенести на другой порт. Подскажите как проще реализовать код?

  • @CuranderoUA
    @CuranderoUA 10 лет назад

    В программировании полный ноль, если не сказать хуже, плюс мне всегда теория осваивается тяжко, если нет возможности пощупать ручками "в железе", поэтому пока нет атмеловских чипов, решил поиграться в протеусе, чтоб хоть как-то закрепить полученные знания, но тут возникло несколько вопросов.
    1. На Вашем устройстве точка не отображается, но и программно она не отключена, насколько я понимаю запятая должна была быть повешенной на пин 3 порта Б, но похоже была отключена схемно. Соотв. вопрос, как лучше, "затемнить" её програмно или просто не соединять с пином?
    2. Вначале не объявлена переменная Temp, почему?
    3. Устройство с тремя семисегментными индикаторами способно отобразить число до 999, но переменные Danie и Temp объявлены как unsigned char, то есть насколько я понимаю там диапазон ограничен числом 255, этот вопрос меня ввел в ступор, либо это ошибка, либо я чего-то не понимаю.
    Еще раз спасибо большое за уроки, появились бы лет 5 назад, я бы уже точно полным нулем не был))

    • @АлександрПисанец
      @АлександрПисанец  10 лет назад

      Здравствуйте. Насчет точки можно делать как хочите, но гибче программно выключать, вдруг захочете точку отображать.
      Я сделал функцию Peresot и в ней есть принимаемый параметр Temp. Хотя можно Temp объявить глобальной. В данном примере число можно максимальное отобразить 999 (объявляем как int). Поскольку это простой пример то я и отображаю 145 (объявлен как char )

    • @CuranderoUA
      @CuranderoUA 10 лет назад

      Александр Писанец
      Спасибо, всё понял, значит в общем не ошибся, на счет точки спрашивал, так как наслышан о плохой помехоустойчивости Атмеловских чипов и подумалось, что оставлять в воздухе пин чревато. И да, вопросов думается я Вам еще поназадаю кучу, вроде зацепило меня это программирование)

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

    Нет надобности. Меня вполне устраивает RF12

  • @SineSet
    @SineSet 8 лет назад

    Что за отладчик (железка)? AVR JTAG ICE или аналог?

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

      Dragon

    • @SineSet
      @SineSet 8 лет назад

      Я не совсем понял: Dragon - это эмулятор?
      А вообще отладка на живом МК возможна?

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

      Может это я не понял вопроса ). Это программатор отладчик, при помощи которого в реальных условиях пошагово отлаживать свою прогру уже прошитого микроконтроллера.

    • @SineSet
      @SineSet 8 лет назад

      В интернетах кое-где написано, что Dragon - это-де по факту не отладчик, а эмулятор, собственно эмулирующий МК - память, регистры и т. д. и таким образом производящий отладку прошивки "внутри себя". и потом заливающий в отдельный пустой МК.
      Под отладкой на живом МК понимается отладка не "внутри себя", а непосредственно на отдельном МК (в том числе находящемся в обвязке/на плате проекта).

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

      Так вот именно на отдельном микроконтроллере и производится отладка. микроконтроллер находится уже в собранной плате.

  • @ERadicator49
    @ERadicator49 11 лет назад

    А вместо "255" в порт DDRB нельзя не проще было бы присвоить просто "0"? или в этом есть какой-то смысл? Я не критикую, просто хочу уяснить.

    • @АлександрПисанец
      @АлександрПисанец  11 лет назад

      Насколько правильно я понял вопрос. Результат то разный. 255 установит все биты в 1 ,а ноль в ноль.

    • @ERadicator49
      @ERadicator49 11 лет назад

      Я опечатался =) Вопрос в том, что для байта же эквивалентно будет приравнять его к 1? Это же тоже даст 0b11111111? А раз так, запись же получается короче.

    • @АлександрПисанец
      @АлександрПисанец  11 лет назад

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

    • @gregandark8571
      @gregandark8571 8 лет назад

      +ERadicator49
      Ky ky a ya tyt :D
      Privet iz makintosha axaxaxaxax

  • @virtual1981ify
    @virtual1981ify 9 лет назад

    Доброго вечора, ще одне питання з приводу об'яви функції Peresot (), адже вірний синтаксис void Peresot ().

    • @АлександрПисанец
      @АлександрПисанец  9 лет назад

      Aleksandr Maslo Совершено верно, в моем случае будет автоматически присвоено int возврат из функции.Поскольку функция не возвращает не чего, то вы правы нужно указать void.

  • @matrossv1556
    @matrossv1556 8 лет назад

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

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

      Странно как то, они и так обновляются при записи новых значений. У меня таких проблем не разу не было

  • @anatoliyst1997
    @anatoliyst1997 10 лет назад

    У вас какая оптимизация стоит?

    • @АлександрПисанец
      @АлександрПисанец  10 лет назад

      Os2

    • @anatoliyst1997
      @anatoliyst1997 10 лет назад

      У меня есть максимальная только Os. Сильно ли отличается от Os2?

    • @АлександрПисанец
      @АлександрПисанец  10 лет назад

      На Os нужно грамотно писать программы, капризная штука. Os2 не сильно отличается, зато менее капризна.

  • @MaxPivovarov
    @MaxPivovarov 10 лет назад +3

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

  • @virtual1981ify
    @virtual1981ify 9 лет назад

    доброго дня, шановний автор. У відео ви говорите про 20 мілісекунд на кожен сегмент, що є не зовсім вірним, це час на ввесь індикатор, тому у вашому випадку 20/3=6.6 мілісекунд.

    • @АлександрПисанец
      @АлександрПисанец  9 лет назад

      Aleksandr Maslo Та нет, я все правильно показал, именно каждый сегмент 20 мілісекунд

  • @iAtusin
    @iAtusin 8 лет назад

    Здравствуйте. Если запустить счетчик, Peresot(Danie++); считает только до 255. Как можно исправить, подскажите пожалуйста.

    • @АлександрПисанец
      @АлександрПисанец  8 лет назад

      +Виталий Зубенко Сделайте расширение на char, к примеру int Danie. В функции Peresot добавите возможность пересчета 1000.

    • @iAtusin
      @iAtusin 8 лет назад

      +Александр Писанец , спасибо! Решилось заменой типа переменной char на int в трех местах:
      volatile unsigned char(int) Danie_Razrad_1,Danie_Razrad_2,Danie_Razrad_3,Danie;
      static unsigned char(int) Vibor_Razrada;
      volatile unsigned char(int) Temp
      теперь считает до 2147483647...

  • @alexandrupostoronca689
    @alexandrupostoronca689 10 лет назад

    Добрый вечер .В основном я понять, как работает программа. Но как понять эту функцию ? TCCR0 &=(1

  • @_Iokanaan_Marusidze_
    @_Iokanaan_Marusidze_ 11 лет назад

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

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

    По преобразованию типам данных я и сам несилен. Ненужно мне было этого в своих программах, обходился без них, поэтому сильно не вникал.

  • @АлександрПисанец
    @АлександрПисанец  11 лет назад

    Только с RF12

  • @vitaly182
    @vitaly182 11 лет назад

    я не хочу вас обидеть,, просто столько каналов где только 5-10 уроков =( безысходность...

  • @volamar9240
    @volamar9240 9 лет назад

    Александр, добрый день. Огромное спасибо за видеоуроки. Я начинающий программист. Помогите написать этот урок, только для ATmega8. Есть проблема с таймерами. Моя почта avp7213@rambler.ru.Заранее спасибо.

  • @XAngelsLifeX
    @XAngelsLifeX 8 лет назад

    Спасибо за видео