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

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


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

Гораздо вероятнее коза на плате или неправильно разведенный разъем. Программаторы обычно работают без доработки напильником.

Спасибо за ответ, действительно, проблема была в разъеме, подключил проводками к шлейфу программатора, все заработало :D

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

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

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

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

к примеру...

Как-то так делаю и я. Только с учетом низкой (относительно STM) тактовой частоты и синхронизации главного цикла по прерыванию таймера (что дает бОльшую предсказуемость распределения процессорного времени), мне даже счетчики не требуются. Результат - тот же самый.

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

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

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

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

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

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

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

Привет всем. Как-то задался идеей сделать себе устройство, работающее от пульта управления, скажем телевизора или DVD плеера.

Итак, суть вот в чём: включаем устройство, нажимаем кнопку "обучение", даём ей "понюхать" последовательно n нажатий, затем устройство переходит в режим прослушки эфира :)

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

Для себя выяснил, что помимо RC-5 этих форматов существует пара десятков. А как можно сделать универсальное устройство считывания? Допустим, завести счётчик, и через промежутки, гораздо меньшие, чем частота следования импульсов с пульта отслеживать состояние приёмника, записывать получившееся, а затем сравнивать его с пришедшей командой? Или как это будет лучше сделать? Из всех этих протоколов подавляющее большинство работает на 36 кГц несущей. Ограничимся пока ей.

Вот приём от двух имеющихся пультов у меня дома:

post-151572-0-96978400-1439199900_thumb.jpg - этот код полностью повторяется с определённой периодичностью.

post-151572-0-17692300-1439199901_thumb.jpg - а этот код повторяет только кусочек. Очень похож на NEC.

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

если не стоит задачи вкурить от и до

Я за вкурить от и до. Всегда рад хорошей статье или пояснению :)

Ещё раз: принять пачку импульсов, записать и уметь распознавать её при повторном приёме.

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

Запоминай интервалы между импульсами пока не поймаешь длинную паузу. Это 100% верняк.

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

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

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

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

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

Впрочем... можно память и не экономить, просто взять внешнюю SPI-FLASH на мегабит или даже два.

Да, еще вспомнил... была такая прога LIRC - для неё в опенсорсе есть готовые наборы команд для огромного количества пультов хранящихся именно в интервалах(попугаи) между импульсами.

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

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

LIRC видел, искал там обе модели своих пультов :) Не нашёл. Я тоже думал, что нужно будет запоминать интервалы. Алгоритм в голове нарисовал примерный.

С момента подтяжки к нулю выхода с TSOPxxxx - начинаем считать и записывать длительности каждой смены состояния.

Затем из этих посылок исключить те, которые будут т.н. ошибками - например, те самые стартовые интервалы.

Далее взять среднее арифметическое из оставшихся нулевых и единичных состояний и записать эти значения.

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

Пишем в память вид кодировки и последовательность единиц и нулей + тайминги этих событий.

Затем, при необходимости эти последовательности можно будет либо воспроизвести (репитер, повторитель), либо распознать, что такая команда уже была и выполнить определённое действие.

Завтра сегодня возьмусь за реализацию.

у всех есть длинный стартовый импульс

Sharp Protocol, RC-5 и RECS-80, к примеру, не имеют таковых импульсов.

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

Привет ребята.

Скажите, разве цена микроконтроллеров может влиять на качество их работы??? Вот недавно провозился, около месяца, с очередным глюком непонятного происхождения... Делал небольшой станочек, сшиватель шпона. Несколько концевиков, кнопок, дисплей и регулятор температуры. Все провода к плате через оптопары, питание - крутой БП за 1500грн. Выхода симисторные и через оптику. Короче глюкам шанса небыло. Че там говорить, я изучал строение плат и т.д.

Глюки, наблюдались в момент срабатывания концевиков, даже ПЕС не спасал. Намучившись с ним, купил мегу16 за 100 гривен, в спецмагазине и чудо произошло, станок работает как новый. А до этого стояла мега за 35грн. Вот задача... Как так??? Как цена камешка так влияет на его качество? У кого то бывало такое??

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

Непонятно. требуются подробности. Какой контроллер на какой был заменён? Вы точно уверены что соблюли все заявленные условия эксплуатации контроллера? особенно это касается ограничения по тактовой частоте в зависимости от напряжения питания.

Если не соблюдать такие тонкости понадеявшись на "и так ведь работает" можно запросто нарваться на такое поведение которое будет зависеть от экземпляра микросхемы, т.е. от отклонения характеристик при производстве чипов. Один будет работать на 8Мгц при 3 вольтах, а другой экземпляр не будет...

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

И еще есть один тонкий момент. Контроллер который тактируется от внешнего кварцевого резонатора может начать глючить из-за того что заводится резонатор не на том овертоне который нужен! Как правило, резонаторы частотой выше 1-2Мгц работают не на фундаментальной частоте а на овертонах - в таком случае, работа генератора зависит еще и от активной части схемы - то что встроено в контроллер(поэтому кстати там предусмотрено несколько режимов работы с резонаторами) и так же генераторы с такими резонаторами более чувствительны к помехам и имеют повышенный джиттер. У вас узел подключения резонатора выполнен по рекомендациям с даташита? Очень важно к резонатору подобрать те самые конденсаторы - от них так же зависит устойчивость работы резонатора на его рабочей частоте, и емкость должна стоять ровно такая какая заявлена в даташите на резонатор, а не первые попавшиеся от фонаря, даже если они вроде как работают.

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

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

фузы, локи (мало ли) 1 в 1?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

Всех приветствую.

Разбираюсь с модулем GPS. http://meandr.org/archives/5180

Требуется помощь.Дохожу до абзаца-

Для настройки модуля существуют специальные команды. Вот, например, команда горячего рестарта:

  • $PMTK101*32

Рассмотрим подробно то, как формируются команды. Сначала идут символы $PMTK, после них идёт трёхзначный код команды(от 000 до 999), далее через запятую идут атрибуты команды(если есть), а потом контрольная сумма. После контрольной суммы нужно отправить ещё два байта: 0x0D и 0x0A. Без них команда не будет исполнена!

Контрольную сумму необходимо рассчитывать самостоятельно. Для того, чтобы получить контрольную сумму нужно провести побитовую операцию Исключающее ИЛИ(команда EOR в ассемблере) всех символов команды между знаками $ и *.

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

  • $PMTK251,4800*14 – 4800
  • $PMTK251,9600*17 – 9600
  • $PMTK251,14400*29 – 14400
  • $PMTK251,19200*22 – 19200

Как считать эту контрольную сумму?

Брать первый символ,в данном случае это P,ищем в таблице ascii для компьютера его числовой код и проводим операцию "исключающее или" с FF?И так с каждым символом и потом их складывать?

В итоге не получается.

Гугул говорит про хеши срс32 и т.д.

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

Будет очень хорошо,если скажете прочитать книгу,где это описано,а то следом еще один вопрос возник

После контрольной суммы нужно отправить ещё два байта: 0x0D и 0x0A. Без них команда не будет исполнена!

Получается мне необходимо отсылать $PMTK251,4800*14 0D 0A?

dd1aab21e932t.jpgВот так делаю,ни чего не получается правда

Сейчас антенну отключил,а так все ловит и определяет спутники и т.д.

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

по моему 0х0D и 0x0А это коды окончания строки и новой линии. Почти все терминалы отправляют их автоматом по нажатию на enter (или не отправляют, если галки в настройках нет)

а у вас она как раз таки сброшена. Набо бы ткнуть и попробовать (CR=CR+LF. Я об этой галке)

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Я так же сталкивался с такой ситуацией(блютуз-модули) когда эти коды необходимо отправлять БЕЗ ПРОМЕДЛЕНИЯ т.е. вручную в терминале команду выполнить не получится.

заменил на ATmega16 за 100грн.

Простая мега без каких-либо индексов? Лучше приведите полное название что написано на самом чипе. ATmega16, ATmega16A, ATmega16PA и ATmega16V - это всё похожие но разные контроллеры! Которые еще и не взаимозаменяемые. У них совместимость только на уровне исходных кодов а адреса регистров и периферии и некоторые ньюансы работы - всё разное.

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

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

При работе с ATtiny2313A китайский ЖК-дисплей 1602 стал глючить, то есть прыгают символы и курсор и показывает какую-то белиберду.

Можно ли принудительно его сбросить?

Вроде как при включении питания у дисплея происходит автоматическая инициализация

post-187141-1439457103,555_thumb.jpg

Можно ли её сделать в ручном режиме?

Busy flag при инициализации не прочитать, значит надо выдерживать временные паузы с запасом…

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

Хочу спросить,когда прописываю (1<<MUX1),это значение одно и тоже,если (1<<1) .И если вдруг присвоить unsigned char under=ADMUX (а присвоение происходит я так понимаю такое 0В00000000 )и написать under |=(1<<MUX1),то как переменная under определит названия битов для ADMUX,при присвоении их названия тоже передаются?или МUX1 всегда равен 1?

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

Хочу спросить,когда прописываю (1<<MUX1),это значение одно и тоже,если (1<<1)

Эквивалентно, если MUX1 равен "1".

С остальным - совершенно ничего не понятно, что Вы написали.

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

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

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

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

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

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

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

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

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

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

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

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