Здравствуйте. Необходимо сделать "слепок" состояния порта и менять по маске только то, что нужно. На деле задача не очень сложная, это в чистом виде логические операции.
Я не настолько крут, чтоб по словам понять. Мне примерный кусок кода в BascomAvre нужен.
Очень жаль, что не хотите справиться сами. Это здорово поднимает то самое чувство. Но вдруг никто готового решения не предложит, тогда эта заметка пригодится...
Смотрите, у нас есть порт, два вывода которых нам никак нельзя трогать, уровни на них должны остаться такими, какие есть в момент обращения. Но в то же время остальные 6 выводов мы в этот самый момент обращения трогаем, да еще как. Этот самый момент обращения может случиться когда угодно, а значит заранее к нему мы не можем подготовиться. Приходится импровизировать.
Пусть на этих двух выводах уровни меняются аппаратно, а значит при их изменении нам не нужно заботиться о том, чтобы сохранить остальные ноги (те самые 6 ног цифр). А значит, задача только одна - при изменении этих 6 ног оставить целыми два вывода.
Случилось так, что пора на 6 ног вывести что-то нужное. Мы не знаем, что на двух неприкосновенных ногах. А значит должны сделать слепок по маске в данный момент. Пусть это будут биты 5 и 4.
СЛЕПОК = ПОРТ И 0b00110000
Теперь слепок содержит уровни только неприкосновенных ног. Все остальное в нулях. Остается собрать в кучу и цифру и слепок
ПОРТ = ЦИФРА ИЛИ СЛЕПОК.
В результате в порт отправляется код цифры, а биты 5 и 4 остаются такими, какие были на момент снятия слепка.
* Разумеется, в знакогенераторе цифр биты 5 и 4 должны быть равны 0.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Очень жаль, что не хотите справиться сами. Это здорово поднимает то самое чувство. Но вдруг никто готового решения не предложит, тогда эта заметка пригодится...
Я Гений. Можно же просто поменять местами аноды и катоды...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
goldskif, обычный хам, подтирающий за собой свои же посты. За что уже был натыкан, ибо не в первый раз, да только все без толку. Практически во всех сообщениях только просьбы, и никакой пользы в ответ. Если это подразумевалось под словом гений, то да, безусловно гений.
vanyap1 писал(а):
Странно, если последовательный порт включен то менять состояния его портов невозможно. Если не ошибаюсь.
Менять-то можно, только зачем? Мы же отдаем себе отчет в том что если работает USART, то такое вмешательство ему навредит. Я вообще не могу представить такую ситуацию, когда на приемопередатчике основан обмен данными, а мы начинаем дергать эти ноги.
Все правильно написали, за включение-выключение отвечают биты RXEN (RX ENable) и TXEN (TX ENable) регистра UCSRB. Выключается он записью нулей в соответствующие биты. И по умолчанию USART выключен.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
goldskif, обычное хамло, подтирающее за собой свои же посты. За что уже был натыкан, ибо не в первый раз, да только все без толку. Практически во всех сообщениях только просьбы, и никакой пользы в ответ. Если это подразумевалось под словом гений, то да, безусловно гений.
Я ненавижу таких советчиков. Вместо конкретного ответа они любят выдавать пространные рассуждения в менторско-поучительном тоне. Им интереснее написать еще один пространный пост ни о чем, чем одну строчку примера кода. А какую пользу в ответ вы хотели на такие посты? Только такую же. Если вы у нас тут флудер и кармодрочер, живущий на форуме ради еще одной тысячи постов и пользы в карму, то вас за это никто любить не обязан. Да, вы абсолютно правы. Я захожу на этот форум в среднем раз в два года, чтобы попросить совета. Я -то по наивности думал, что форумы для того и существуют. А везде сидят вчерашние жертвы ЕГЭ с тысячами постов и дрочат в карму. Ни одного нормального ответа от них не дождешься, кроме как "да тут все просто, иди читай доки, очень жаль, что вы не хотите сами разобраться, достали неучи с одинаковыми вопросами и блабла..." Но когда такому гуру задашь вопрос чуть выше уровнем, так он затыкается. Ибо ничего толкового ответить не может. Я помню, пару лет назад мне надо был скрипт написать на баше для обработки изображений. Даже не скрипт написать (это я и сам смогу), а решить одну проблему в коде.. Так на всех форумах такие же гуру сидели с такими же полезными советами. Я месяц нихрена добиться не мог. Потом наконец один великий гуру с несколькими тысячами постов соизволил снизойти до моей просьбы и высокомерно выдавил из себя кусок говнокода. Который давился, грузил проц на 100% и вешал комп.. Мне это надоело, я пошел на буржуйский тематический, через Яндекс.переводчика задал вопрос, через тридцать минут получил короткий ответ с примером кода. И через несколько минут еще пару. И все. Проблема была решена. С тех я на совковые форумы за советом обращаюсь только в самом крайне случае.. Ибо везде ссука сидят гуру, которых распирает от того, что они вчера сдали ЕГЭ и у них тыщщи постов и плюсов в карме..
Цитата:
Все правильно написали, за включение-выключение отвечают биты RXEN (RX ENable) и TXEN (TX ENable) регистра UCSRB. Выключается он записью нулей в соответствующие биты. И по умолчанию USART выключен.
Мое слово "НЕТ" в предыдущем посте означает, что предложенный вариант не работает. Вам что-то непонятно? И речь в моей просьбе шла об аппаратном UART, а не USART.
То бишь вы из года в год на совершенно разных форумах получаете совершенно одинаковую реакцию, и вас это не настораживает? Есть такой баянистый анекдот: «Если и третий муж бьёт по морде, может, дело не в мужьях, а в морде?».
Разумеется форумы для того и нужны, что бы делиться опытом. И за себя могу сказать точно, я никогда не отправлял курить даташиты. Даже ссылаясь на них обычно выделяю нужное место и перевожу с комментариями. И в моих ответах минимум 90% решения проблемы. Да, а на 10% уж извольте мозг напрячь. Более того, недавно сам ругался на этом же форуме с посылающими самостоятельно изучать и яндексы гуглить. Но там-то речь шла о человеке, который вообще этого ни разу не делал, и даже понятия не имел с чего начать. А если вы не в состоянии две строчки с русского перевести на бейсик в подробно расписанном ответе, при этом не первый год занимаясь этим и имея кучу примеров кода, то у меня не очень хорошие новости. Не тем вы занимаетесь.
goldskif писал(а):
Я месяц нихрена добиться не мог. Потом наконец один великий гуру с несколькими тысячами постов соизволил снизойти до моей просьбы и высокомерно выдавил из себя кусок говнокода.
Вы за целый месяц не смогли разобраться в собственном скрипте, а вместо этого сидели на жопе и ждали ответа на форуме?! И после этого пишите "это я и сам смогу"? Балаболить вы можете. Вы же не в состоянии за несколько лет даже из кусков предложенного кода часы собрать, о чем вообще говорить можно.
Вы хотите писать хотелки и получать на выходе готовый код? Хотите вносить изменения в хотелки и наблюдать как код меняется? Не хотите даже пытаться в этом всем разобраться? Тогда вам в ЭТУ ТЕМУ. Пишете ТЗ, получаете предложения, и если устраивает цена то начинаете сотрудничать.
goldskif писал(а):
Мое слово "НЕТ" в предыдущем посте означает, что предложенный вариант не работает. Вам что-то непонятно? И речь в моей просьбе шла об аппаратном UART, а не USART.
После этого заявления ведь очевидно, что мое предложение - лучший вариант. Подумайте хорошо, это ведь не шутки, тут же электричество.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
If Byte1 > 248 Then Byte0 = &HFF - Byte0 Byte1 = &HFF - Byte1 Sign = "-"
Else Sign = "+" End If
T1 = Byte0 / 16 T2 = Byte1 * 16
T1 = T1 + T2
If Sign = "-" Then T1 = T1 + 1 End If
If Sign = "+" And T1 = 0 Then Sign = " " End If
Return
End
Собственно по нажатию кнопки читается еепром, выводится вместе с текущим значением температуры и записывается текущее в еепром. По факту в считываемом еепроме всегда 255. Почему так? Тут даташит на используемую память.
_________________ Демократии нет и не будет! Государство - это я!
Всем привет! Имеется две платы: Arduino UnoR3 и Ethernet Shield (на базе чипа W5100). Требуется по протоколу Modbus TCP передавать значение переменной (типа Integer, например) из МК на ПК. Вопрос: приходилось ли кому-либо реализовывать подобную задачу с помощью BASCOM? Если да, то нельзя ли поделиться исходником? Заранее, спасибо. (P.S. В Arduino IDE это реализовать просто, но я ненавижу эту среду разработки!)
Novice user, спасибо, но я указал в исходных данных конфигурацию аппаратки: Arduino Uno в связке с Ethernet Shield. Взаимодействие между этим модулями обеспечивается через SPI. UART тут не при делах...
Приветствую неспящих котов и котиков! Мужики, выручайте. На тиньке остался один свободный PORTB.X и хочу на него повесить 2 светодиода LED1 и LED2 для индикации режима. А их целых четыре: постоянно горящий или мигающий LED1 или LED2. Подключил их последовательно и среднюю точку подключил к PORTB.X. Концы подтянул к +5В и GND. Если PORTB.X = 1 then LED1, если PORTB.X = 0 then LED2. Собственно, вопрос: а как вывести в PORTB.X ничего, чтобы светодиоды потухли (Z-состояние?)? т.е. If PORTB.X = ??? then LED1 = 0 : LED2 = 0 — ?? Буду признателен, если кто объяснит
А в чем проблема? Нужно просто сделать этот пин - входом без внутренней подтяжки. Либо через DDR, либо средствами баскома. Это и будет Z-состояние.
Код:
Config PORT.X = Input
Единственное, нужно подобрать резистор R3, шунтирующий оба светодиода. Чтобы исключить свечение обоих светодиодов в режиме высокоимпедансного состояния пина. Ведь в этом случае мы получим два последовательно включенных светодиода, между плюсом и минусом питания.
Вы уточняйте, если что-то непонятно.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Сейчас этот форум просматривают: Just_Fluffy и гости: 75
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения