солар Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 Не-не-не. В студии такое не проканает. 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Trisector Опубликовано 3 января, 2019 Автор Поделиться Опубликовано 3 января, 2019 @солар увы. ладно, ассемблерные вставки пойду изучать позже. а сейчас бы разобраться, как проверять отдельный бит регистра порта на соответствие единице 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
artos5 Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 Только что, Trisector сказал: как проверять отдельный бит регистра порта на соответствие единице Да ёпрст ... Яже пример дал! Там всё имеется! Второй или третий пост буквально! 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
солар Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 1 минуту назад, artos5 сказал: ... ё... ... ...! ...! ...! Нервы, батенька, нервы. ТС пишет 4 минуты назад, Trisector сказал: разобраться , а не тупо скопировать. 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Trisector Опубликовано 3 января, 2019 Автор Поделиться Опубликовано 3 января, 2019 (изменено) вот в этом выражении: if((PINB&0x01)==0) проверяется бит 0? только один бит? 7 минут назад, солар сказал: , а не тупо скопировать. Дада. Изменено 3 января, 2019 пользователем Trisector 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 8 минут назад, Trisector сказал: проверяется бит 0? Да , а уже в следующей буквально строчке , проверяется единица ) 13 минуты назад, солар сказал: Нервы, батенька, нервы. ТС пишет В смысле? Нервы в порядке , просто яже пример дал и в протеусе можно покрутить и разобраться что да как ) 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Trisector Опубликовано 3 января, 2019 Автор Поделиться Опубликовано 3 января, 2019 Объясню, откуда берутся вопросы. Распечатал книги Белова и Шпака, но примеры оттуда не работают, хотя они и используют АВР студио. Поэтому каждую команду приходится проверять и корректировать. Вот такая конструкция: while(PINB.0==1); у меня в студии вызывает ошибку, хотя в книге у него все красиво. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 Только что, Trisector сказал: Вот такая конструкция: while(PINB.0==1); Так это в cvavr такие фокусы ... 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Trisector Опубликовано 3 января, 2019 Автор Поделиться Опубликовано 3 января, 2019 Может, какую-то другую среду попробовать, более дружелюбную? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 Cvavr возьми , как в книге использует автор , потом придет уже осознание для других сред . 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Trisector Опубликовано 3 января, 2019 Автор Поделиться Опубликовано 3 января, 2019 6 минут назад, artos5 сказал: Cvavr "Компилятор Си, входящий в состав CodeVisionAVR, имеет некоторые отличия от AVR-GCC (WinAVR), в том числе собственный синтаксис". Ясно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
солар Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 if((PINB&0x01)==0) PINB это байт, то бишь восемь бит. Этот байт по И перемножается с маской (тоже байтом) 0х01, т.е. с 0b00000001. В итоге все биты кроме нулевого сбрасываются в 0. А вот значение нулевого бита остается таким, какой в младшем бите PINB. И именно он сравнивается с нулем. 1 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Trisector Опубликовано 3 января, 2019 Автор Поделиться Опубликовано 3 января, 2019 @солар Вот спасибо! Теперь дошло. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Trisector Опубликовано 3 января, 2019 Автор Поделиться Опубликовано 3 января, 2019 Все получилось. Теперь осталась одна проблема - как использовать PB5 в качестве входа, не устанавливая RSTDISBL в 0. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 17 минут назад, Trisector сказал: Никак ! Только RSTDISBL 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Falconist Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 П.I.4 Правил. 0 Просят - не откажи. Не просят - не навязывайся! Простота хуже воровства. Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksei80 Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 Я для себя многое почерпнул от сюда: https://radioparty.ru/programming/avr/c/239-lesson7 - операторы управления битами. Тут для себя нужно хорошо запомнить, что DDR, PORT, PIN - это восьми битовые регистры .В них можно записывать и с них можно считывать данные. Записывать можно в десятичном, двоичном, шестнадцатеричном виде. Это, например, так: DDRD = 12; - это в десятичном. Или так : DDRD = 0b00001100; (нули вначале можно не писать) - это в двоичном виде. Или так: DDRD = 0x0C; (нули вначале можно не писать) - это в шестнадцатеричном виде . Это всё одинаковая запись, которая означает, что нулевой, первый, 4-ый, 5-ый, 6-ой и 7-ой биты порта D будут работать на вход, а 2-ой и 3-ий биты порта D будут работать на выход. Регистр DDR определяет режим работы порта(направление передачи информации). Как я уже писал, нули вначале можно не писать, НО лучше писать - поначалу будете меньше путаться, а также желательно не использовать без особой надобности десятичную систему (лучше шестнадцатеричную). 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksei80 Опубликовано 3 января, 2019 Поделиться Опубликовано 3 января, 2019 (изменено) С регистром PORT ситуация такая: Первое - при записи единицы в какой-нибудь бит регистра DDR регистр PORT будет управлять уровнем сигнала на ножке МК (при записи единицы в такой же бит регистра PORT - на соответствующей ножке порта будет логическая 1 и, соответственно, при записи нуля в тот же бит регистра PORT - на соответствующей ножке порта будет логический 0 ). Например: DDRD = 0x08; и PORTD = 0x08; будет означать, что на ножке PD3 будет логическая единица (условно 5 вольт). Второе - при записи нуля в какой-нибудь бит регистра DDR регистр PORT будет управлять подтягивающим резистором внутри МК (сопротивлением около 10 - 100 кОм) на соответствующей ножке МК (при записи единицы в такой же бит регистра PORT - на соответствующую ножку порта будет подтянут резистор к питанию и, соответственно, при записи нуля в тот же бит регистра PORT - на соответствующей ножке порта будет высоко импедансное состояние ). Например: DDRD = 0xF7( что в двоичном виде означает 0b11110111); и PORTD = 0x08; будет означать, что на ножке PD3 будет логическая единица (условно 5 вольт через подтягивающий резистор), НО в этом случае ведётся запись информации в регистр PIN, т.е. в этом случае в регистр PIND в третий бит запишется единица. А вообще пройдите по ссылке - там очень много полезной информации. Изменено 3 января, 2019 пользователем Aleksei80 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.