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

Вопросы от начинающих по МК


Рекомендуемые сообщения

Я так и понял , что в этих строках изменять лог 1 на лог 0. то каракули то все равно не так светятся

вот как то так изменял

If Indicator.docx

Изменено пользователем Alpha
дополнить предложение
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

всеравно как то зеркально, все гегменты светятся проверю подключение транзисторов.

Изменено пользователем Alpha
дописать предложение
Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

IMAG0364 обычная прошивка. верхний индикатор 1 цифра должна быть погашена, 2 и3 цифры нули

IMAG0365 измененая прошивка. 3-я цифра погашена 

 

Скрытый текст

IMAG0364

Скрытый текст

IMAG0364.jpg

 

 

 

Скрытый текст

IMAG0365.jpg

 

Изменено пользователем Alpha
дополнить предложение
Ссылка на комментарий
Поделиться на другие сайты

Помогите пожалуйста разобраться с режимом сна в меге48.

Интересует режим Power Down, а точнее ,как из него выйти, прочитал, что из этого режима можно выйти по изменению уровня на пинах PCINTx, правильно ли я понимаю, что для этого надо разрешить прерывания PCINTx, далее ввожу мк в сон, по изменению уровня на установленных пинах группы PCINT мк просыпается и срабатывает обработчик прерывания.

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

и еще вычитал следующее :

"Также следует помнить, что для выхода микроконтроллера из режима
Power Down в результате внешнего прерывания, генерируемого по
НИЗКОМУ уровню на входе, длительность активного сигнала должна быть
не меньше двух периодов сигнала тактового генератора сторожевого таймера
(≥2 мкс при VCC = 5 В). Причем, если сигнал, вызвавший «пробуждение»
микроконтроллера, исчезнет раньше, чем микроконтроллер перейдет в ра
бочий режим, обработчик соответствующего прерывания вызван не будет!"

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

Ссылка на комментарий
Поделиться на другие сайты

21 минуту назад, GalatZ сказал:

обязательно ли делать обработчик этого прерывания

Да. Хотя бы команду reti поставить.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Так прерывание можно запретить и сразу после команды выхода из сна. А обработчик нужен обязательно, хотябы просто пустой. Обычно такая заглушка делается командой RETI прямо в таблице векторов прерываний, там места аккурат на одну команду хватает, но на С такое провернуть слишком сложно и приходится просто объявлять пустой обработчик. Надеяться на то что на короткий импульс не отреагирует нельзя - помните, висящее на стене оружие даже будучи разобранным к концу серии обязательно выстрелит!

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Только что, Alexeyslav сказал:

на С такое провернуть слишком сложно

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

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Оно-то есть, только С сам формирует таблицу прерываний и обязательно будет накладка, как она разрулится компилятором - Ф.Е.З. в результате лишняя зависимость от фазы луны.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

В 18.04.2017 в 20:54, КЭС сказал:

Попробуй скомпилировать и загрузить в мк.

 

A_V-метр ОА ключи разрядов pnp.bas

ОГРОМНОЕ, ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!! За подсказку, что нужно изменять в прошивке, методом тыка доработал. и не пришлось переделывать плату. Спасибо КЭС!

Ссылка на комментарий
Поделиться на другие сайты

На самом деле не за что: я ведь точку не поставил. Для меня остались вопросы хотя бы касательно вариантов таблиц символов для ОА и ОК- они у автора почему-то одинаковы за исключением символа "ноль". 

П,С, Все же любопытно взглянуть на последний вариант прошивки.

Изменено пользователем КЭС
Ссылка на комментарий
Поделиться на другие сайты

Скрытый текст

 

'*********** ___ Переключение типа индикаторов (ОК/ОА) ___ *********************

   Readeeprom Indicator , 30

   If Vibor = 0 Then                                        ' Удерживая кнопку УСТ, подаем питание.

      For X = 1 To 200

         If X = 150 Then                                    ' При длительном нажатии

            Set Booton_flag

            Toggle Indicator.3                              ' Переключаем младший (четвертый) бит переменной. Номер бита выбрал произвольно

            Writeeeprom Indicator , 30

            If Indicator = &B00000000 Then                  ' Если переключили на ОА, зажжем все сегменты идикатора для подтверждения

               Reset A : Reset B : Reset C : Reset D : Reset E : Reset F : Reset G : Reset H

               Reset Dig1 : Reset Dig2 : Reset Dig3 : Reset Dig1_sec : Reset Dig2_sec : Reset Dig3_sec

            End If

            If Indicator = &B00001000 Then                  ' Если переключили на ОK, зажжем все сегменты идикатора для подтверждения

               Set A : Set B : Set C : Set D : Set E : Set F : Set G : Set H

               Reset Dig1 : Reset Dig2 : Reset Dig3 : Reset Dig1_sec : Reset Dig2_sec : Reset Dig3_sec

            End If

            Waitms 1500

            Exit For

         End If

         If Vibor = 1 Then Exit For

         Waitms 10

      Next

   End If

'*******************************************************************************

 

 

 

   If Indicator = 0 Then                                    ' Гасим индикаторы перед выводом информации

      Set Dig1 : Set Dig2 : Set Dig3 : Set Dig1_sec : Set Dig2_sec : Set Dig3_sec       ' Для индикатора с ОА

   Else

      Set Dig1 : Set Dig2 : Set Dig3 : Set Dig1_sec : Set Dig2_sec : Set Dig3_sec       'Для индикатора с ОK

   End If

 

   Incr W : If W > 6 Then W = 1                             ' выбираем какую цифру сейчас включать

   Y = 0

   Gosub Look : A = Z                                       ' переходим к подпрограмме Look, которая определяет нужно ли сейчас загорется сегменту А

   Gosub Look : B = Z

   Gosub Look : C = Z

   Gosub Look : D = Z

   Gosub Look : E = Z

   Gosub Look : F = Z

   Gosub Look : G = Z

 

   Select Case W                                            ' включаем цифру(разряд) которую выбрали (w). Подаем плюс на общий провод конкретной цифры (разряда)

      Case 1 :

         If Indicator = 0 Then

            Reset Dig3

            If Podskaz_flag = 0 Then H = Razryad_1.3 Else H = 1

         Else

            Set Dig3

            If Podskaz_flag = 0 Then

               H = Razryad_1.3

               Toggle H

            Else

               H = 0

            End If

         End If

      Case 2 :

         If Indicator = 0 Then

            Reset Dig2

            If Podskaz_flag = 0 Then H = Razryad_1.2 Else H = 1

         Else

            Set Dig2

            If Podskaz_flag = 0 Then

               H = Razryad_1.2

               Toggle H

            Else

               H = 0

            End If

         End If

      Case 3 :

         If Indicator = 0 Then

            Reset Dig1

            If Podskaz_flag = 0 Then H = Razryad_1.1 Else H = 1

         Else

            Set Dig1

            If Podskaz_flag = 0 Then

               H = Razryad_1.1

               Toggle H

            Else

               H = 0

            End If

         End If

      Case 4 :

         If Indicator = 0 Then

            Reset Dig3_sec

            If Podskaz_flag_sec = 0 Then H = Razryad_2.3 Else H = 1

         Else

            Set Dig3_sec

            If Podskaz_flag = 0 Then

               H = Razryad_2.3

               Toggle H

            Else

               H = 0

            End If

         End If

      Case 5 :

         If Indicator = 0 Then

            Reset Dig2_sec

            If Podskaz_flag_sec = 0 Then H = Razryad_2.2 Else H = 1

         Else

            Set Dig2_sec

            If Podskaz_flag = 0 Then

               H = Razryad_2.2

               Toggle H

            Else

               H = 0

            End If

         End If

      Case 6 :

         If Indicator = 0 Then

            Reset Dig1_sec

            If Podskaz_flag_sec = 0 Then H = Razryad_2.1 Else H = 1

         Else

            Set Dig1_sec

            If Podskaz_flag = 0 Then

               H = Razryad_2.1

               Toggle H

            Else

               H = 0

            End If

         End If

   End Select

'

 

 

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, Alpha сказал:

брать диапазон 0-999мА   и оставить 9.99А

 

Удали эти строки:

If Channel_2 < 100 Then
         Channel_2 = Getadc(3)                              ' Ток 0 .. 999 mА                               'опрос АЦП (3 канал)
         If Channel_2 > 999 Then Channel_2 = 999
'         Razryad_2 = &B11101110
         Diapazon = 1
      End If

Ссылка на комментарий
Поделиться на другие сайты

А если бы правильно был подобран уровень абстракции, то выбор ОК/ОА проявлялся бы инверсией(или отсутствием инверсии) готовой для вывода маски. А для остальной программы независимо от выбора логика была бы прямая - есть бит, сегмент светится и нет дела программе до того по какой схеме подключен индикатор - этим должен заниматься более низкоуровневый код. И сами маски цифр хранить в виде массива констант, по номеру цифры достаём прямо по индексу из массива маску и выводим, вместо этих неуклюжих гигантских условных конструкций.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Чуть выше обращался к форумчанам по поводу режима сна в мк мега48, в общем поэкспериментировал,

возник еще вопрос.

сейчас работает все так:

if (timersleep == 0x12C)
					{
						VFD_clear();
						VFD_write("SLEEP", 0x1B);
						
						PCICR |=(1<<PCIE2);
						SMCR |=(1<<SE);
						timersleep=0x00;
						TCNT2=0x00;
						asm("sleep");
						PCICR &=~(1<<PCIE2);
					}

тикает таймер-счетчик 2, считает переполнения в переменную, по прошествии ~10 сек выполняется условие if (), на дисплей для наглядности выводится "спать" и мк уходит в сон, просыпается по прерыванию PCINT, в обработчике следующее:

ISR (PCINT2_vect)
{
	SMCR &=~(1<<SE);
	
	VFD_clear();
	VFD_write("WAKE", 0x1B);
	
	//PCICR &=~(1<<PCIE2);
	
}

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

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

В общем подскажите где я не прав, и как лучше ?

Ссылка на комментарий
Поделиться на другие сайты

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

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

А, ты точно тот вектор определил? Попробуй внутри обработчика дергать каким-то пином(установить в 1 в начале обработчика, и в 0 перед выходом), чтобы подтвердить факт входа в обработчик. И осциллографом смотри, есть ли импульс.

В протеусе неплохо бы пошагово просмотреть процесс выхода из сна и вызов обработчика.

Кстати, а прерывание установлено на фронты или на УРОВЕНЬ? Если установить на уровень - то прерывание будет вызываться постоянно пока удерживается уровень на порту.

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Занятное чтиво, считай "мультиметр своими руками". Не ну а что, были же советские конструкции на кр572пв2) Прецизионные резисторы и В1-12 где-то валяются... Осталось выкрутиться с коммутацией) Чешется иногда.
    • Похоже так, не кто и не подскажет, что это за микруха... 
    • Я извиняю кто тут флудил ! ??  были удаленны другие комменты! , я не поливал не кого грязью, а если вы так считаете напишите жалобу на меня и пусть модератор мне предъявит за нарушение/ за оскорбления и флуд . И касаемо "вчера сделал" после коммента пользователя fessit вспомнил и проверил и все получилось (с ножной напутал тут диод нужен) и также комменты colorad, и Aviator88 всем спасибо. Все работает как надо чего тут выкладывать мне всего-то обычный диод и всё. А что касаемо ваших и подобных комментов это и есть флуд. Устроили охоту на инакомыслящих мол  посмел такой сякой задать вопрос  на техническом форуме о переделки платы зарядки акумов  в светодиодный драйвер какой ужас !!   Поражаюсь блин с таких придираться к словам, и при этом не зная как переделать сразу начинают парировать ошибками автора в тексте запятые, и случайно перепутанные Амперы с мА (Хотя понятно о чем идет речь, но и за это уцепились ) это любимый метод когда по делу толком  нечего сказать, а за изварат и нестандартный подход подколоть что бы ну даже не хочу писать.... А все выпадки мол эта платка не для этого.... ну что тут сказать не надо ограничивать себя мол что подумают или оно якобы не будет работать,название не то... сделал проверил работает! замечательно! да и плевать! зачем покупать, ждать если уже есть под рукой то что тебе нужно!!! и искусственно загонять себя в рамки блин отказываться использовать тпешку только потому что указанно применение для зарядки лития  инакомыслие, богохульство, бред, итд ну дело ваше я не заставляю насильно переделывать. Странно что на тех форуме это вызывает такие вопросы где казалось бы нормально: починить переделать что-то итд. Странные представление что изврат/бред, а что нет учитывая что все, и до переделки всё работало почти отлично.... с каких пор бред не понятно учитывая что все подходит, да в целом нечего дурного нет в этой доработке только польза !! И что-то тут нет подобных высказываний 2е стандарты или инквизиция проворонила  
    • На этой схеме не хватает резисторов, немного открывающих силовые транзисторы. Без них начальный самозапуск  не будет происходить. Поищи их на плате БП.  Они где-то в районе сотни кОм между базой и коллектором.  
    • Может у нас разные были, либо палёный, не будем спорить. У каждого свой вкус.    Ещё слышал, но не слушал, что на TPA3255 хорошие. Присматривал такой как-то. Вы знакомы с таким?
    • Вы самим вообще нормальный??? Под полтинник жалоб!!!!!! Вы чего? Вы говна поели? До утра оставлю сообщение, в надежде на ответ. Но по опыту - никто так и не отпишется...
    • @Vic73 типовая китайская для лент ? биполярники и второй трансформатор ? 
  • Похожий контент

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