Ответить
  • siola Senior MemberАвтор темы
    офлайн
    siola Senior Member Автор темы

    9936

    9 лет на сайте
    пользователь #404386

    Профиль
    Написать сообщение

    9936
    # 28 сентября 2012 03:33 Редактировалось siola, 40 раз(а).

    Советы и помощь по ремонту, восстановлению абсолютно любой аудио-видео-радиотехники, а также размещаем и обсуждаем созданные лично различные радиоустройства, либо модернизацию промышленной, серийной аппаратуры.

    ...пусть это будут проигрыватели пластинок (винила), импортная или отечественная магнитола, дека, усилитель, тюнер, любой телевизор, катушечный аналоговый или кассетный цифровой аудио и видео магнитофон, даже эстрадный аппарат или акустика, пусть и самодельная... всего не перечесть :) .
    Обсуждаем схемотехнику транзисторных, интегральных и ламповых усилителей, кто пробовал повторить или придумывал сам. С какими "подводными камнями" пришлось столкнуться с определенной схемотехникой, ремонтом и т.д., чтоб не "лазить" по сторонним сайтам в поисках нужной инфы... как-никак, у нас достаточно грамотного в этом плане народу.
    Думаю, что благодаря этому общению и клиенты смогут выбрать, кому нести свой аппарат на ремонт.
    Мастерских в Беларуси хватает, но не везде есть толковые ребята. Им проще целиком плату/модуль заменить, чем найти копеечную деталь, которая вылетела. Почему???... думаю, что понятно всем, надеюсь...
    У многих есть знания, но есть и такие индивидуумы, что знаний много, но руки растут не и "нужного места" или совсем наоборот - напаяют, накурочат так, что без содрогания... смотреть на платы довольно тяжело :( .
    Пусть клиент и выбирает среди нас достойного ремонтника для себя, читая эту тему.
    Я не претендую на лидерство, т.к. знаю, что есть у нас очень даже немало специалистов, которые прежде, чем браться за аппарат - руки с мылом несколько раз вымоют! Есть очень дорогая и редкая техника, к которой надо подойти с полной ответственностью!
    Данная тема про абсолютно любую аппаратуру... и думаю, что она будет жить и помогать всем!
    ПЫ_СЫ... рекламы скрытой или косвенной - по услугам ремонта или продаж... здесь быть не должно, это в "барахолку" - надеюсь, всем понятно :) .

    Фото и видео красивой аппаратуры складываем сюда - https://forum.onliner.by/viewtopic.php?t=21014569

    Ветки параллельной тематики:
    Катушечные магнитофоны, их будущее... или цифра рулит?
    Команда Самоделкиных
    Паяльник & Отвертка TEAM part II

    "Чем больше усложняешь, тем сильней понимаешь эту глупость... в противном случае, ты туп, как дубина!"
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 11 ноября 2020 21:20

    Liv1, спасибо попробуем.
    А еще подскажите в обработчике ISR можно писать все что хочешь или лучше обойтись необходимым минимумом?

    Добавлено спустя 17 минут 28 секунд

    Liv1, GIFR = (1 << INTF0); //очистка отложенных прерываний
    Действительно помогло. Спасибо еще раз большое. Буду воевать дальше.

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    3827

    5 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    3827
    # 12 ноября 2020 00:09
    KT3102EM:

    А еще подскажите в обработчике ISR можно писать все что хочешь или лучше обойтись необходимым минимумом?

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

    e-mail: wubblick@yahoo.com
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 12 ноября 2020 10:20

    Или я что то не понимаю, толи асфальт такой.

    int a=0 ;
    ISR (INT0_vect)
    {
    a++;
    if (a>=2)
    {
    PORTB|=(1<<PINB0);
    a=0;
    }
    else
    {
    PORTB&=~(1<<PINB0);
    }
    }
    int main(void)
    {
    port_ini();
    int_ini();

    a=0 ;
    while (1)
    {

    }
    }

    int a=0 ;
    ISR (INT0_vect)
    {
    a++;

    }
    int main(void)
    {
    port_ini();
    int_ini();

    a=0 ;
    while (1)
    {
    if (a>=2)
    {
    PORTB|=(1<<PINB0);
    a=0;
    }
    else
    {
    PORTB&=~(1<<PINB0);
    }
    }
    }

    почему когда if переношу в main ничего не работает?

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    3827

    5 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    3827
    # 12 ноября 2020 11:00

    Забыли volatile при объявлении a. Второй момент - int занимает 2 байта, его чтение не является атомарной операцией. В данном случае, вероятно, можно обойтись типом char.

    e-mail: wubblick@yahoo.com
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 12 ноября 2020 11:19

    Liv1, я перепробовал все типы поддерживаемые студией.
    Возможно я столкнулся с глюком симуляции?

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    3827

    5 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    3827
    # 12 ноября 2020 13:34

    volatile добавляли?

    e-mail: wubblick@yahoo.com
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 12 ноября 2020 14:18
    Liv1:

    volatile добавляли?

    да, добавлял, эффекта никакого.
    Но проблему решил другим способом.
    Переделал на срабатывание по низкому уровню и добавил на вход NPN транзистор как инвертор уровня.
    Все заработало.
    Спасибо за советы.

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    3827

    5 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    3827
    # 12 ноября 2020 14:47
    KT3102EM:

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

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

    e-mail: wubblick@yahoo.com
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 12 ноября 2020 15:04 Редактировалось KT3102EM, 1 раз.

    Liv1, Я думаю это проблема Протуеса.
    Когда изучал и практиковал динамическую индикацию, в Протеусе все работало через пень колоду.
    Когда собрал в железе на макетной плате, все заработало как надо.
    И выход я вижу один- опыт.
    Очень редко приходится заниматься АВР. А с течением времени все забываешь и выползает много ошибок,
    порою очень банальных.

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    3827

    5 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    3827
    # 12 ноября 2020 15:05

    По Протеусу ничего сказать не могу.

    e-mail: wubblick@yahoo.com
  • Vlmax Senior Member
    офлайн
    Vlmax Senior Member

    4484

    9 лет на сайте
    пользователь #376010

    Профиль
    Написать сообщение

    4484
    # 12 ноября 2020 15:49

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

    человек
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 12 ноября 2020 16:12

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

    Добавлено спустя 1 час 7 минут 32 секунды

    Liv1, прерывания заработали.
    Но как только добавил прерывания по переполнению счетчика. все застопорилось.
    Добавляю вашу волшебную volatile, и все работает.
    Я раньше понятия об этом не имел и все работало на переменных типа int,char...
    А сейчас без добавления volatile не хочет.
    Очень интересно и ничего не понятно.

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    3827

    5 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    3827
    # 12 ноября 2020 17:55
    KT3102EM:

    Очень интересно и ничего не понятно.

    Ну так можно почитать, по Си литературы достаточно. Volatile говорит компилятору, что переменную может изменять какой-то другой поток, в данном случае обработчик прерывания. В результате компилятор не будет оптимизировать обращение к ней - в цикле он каждый раз будет ее считывать, а не использовать ее копию.

    e-mail: wubblick@yahoo.com
  • SIO Паяльник & Отвертка TEAM
    офлайн
    SIO Паяльник & Отвертка TEAM

    3942

    14 лет на сайте
    пользователь #68847

    Профиль
    Написать сообщение

    3942
    # 13 ноября 2020 07:35

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

    Паяльник & Отвертка TEAM, MikroPascal for AVR http://forum.onliner.by/viewtopic.php?t=637523
  • dyno Senior Member
    офлайн
    dyno Senior Member

    10908

    12 лет на сайте
    пользователь #145869

    Профиль
    Написать сообщение

    10908
    # 17 ноября 2020 10:50 Редактировалось dyno, 1 раз.

    Может кто встречал в продаже у нас такой разветвитель предохранителя?

    Мои Боги меня рабом не называли.
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 17 ноября 2020 19:42

    Для общего развития и применения на практике.

  • Ansvipa_Rinh Member
    офлайн
    Ansvipa_Rinh Member

    225

    2 года на сайте
    пользователь #2569187

    Профиль
    Написать сообщение

    225
    # 18 ноября 2020 21:26

    У нас тут никто не пригрел лазер под боком? Надо из 0.5 стали несколько деталек бахнуть...

    Что за..! Понятно. Те, кто остановили ночь… Это были вы, не так ли?
  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 19 ноября 2020 13:12

    Доделал то что хотел на AVR, но заметил странность.
    Если не объявлять не задействованные выводы МК как выход, а оставить как вход то потребление МК в простое вырастает на 1мА.

  • KT3102EM Senior Member
    офлайн
    KT3102EM Senior Member

    538

    3 года на сайте
    пользователь #2392405

    Профиль
    Написать сообщение

    538
    # 19 ноября 2020 20:21

    Кто работает в разных средах программирования?
    У меня вопрос.
    https://bitbucket.org/nadyrshin_ryu/remoteauto_avr/downloads/
    по ссылке архив с проектом.
    Как узнать в чем он написан? Атмелстудия не хочет собирать.
    Спасибо.

  • Liv1 Senior Member
    офлайн
    Liv1 Senior Member

    3827

    5 лет на сайте
    пользователь #1728864

    Профиль
    Написать сообщение

    3827
    # 20 ноября 2020 09:58
    KT3102EM:

    Если не объявлять не задействованные выводы МК как выход, а оставить как вход то потребление МК в простое вырастает на 1мА.

    Вполне может быть, если на входах не заданы нормальные уровни. Вот зависимость потребления типичного логического элемента КМОП от напряжения на входе:

    Незадействованные выводы надо настраивать на вывод или на ввод с включенными pull-up.

    KT3102EM:

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

    Проект написан на IAR EWAVR. Попробовал открыть версией 6.12 - проект компилируется без ошибок.

    e-mail: wubblick@yahoo.com