Форум обсуждения оборудования  

Вернуться   Форум обсуждения оборудования "Умный дом" > Разное > Курилка

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.09.2016, 20:46   #41
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 8,858
Вес репутации: 9055
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

Цитата:
Пока все правильно?
да
Цитата:
Возможно ли сравнивать байт по кускам, и имеет ли это хоть какой-то смысл в экономии оперативки?
Если не создаются переменные и массивы, то оперативка не используется
для выделения битов используются битовые маски
Admin вне форума   Ответить с цитированием
Старый 27.09.2016, 21:25   #42
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 551
Вес репутации: 583
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

Цитата:
Сообщение от Admin Посмотреть сообщение
Если не создаются переменные и массивы, то оперативка не используется
для выделения битов используются битовые маски
Опять непонятно...
Допустим есть unsigned char x = 0x15; как проверить что первая часть равно единице и получить '5' для передачи в DDRD |=(_BV('5')); ?

Я могу завести вторую переменную, например так:
unsigned char x[2] ={0x01;0x05}
и обрабатывать :

if (x[0]==1){
DDRD |=(_BV(x[1]));
}
if (x[0]==0){
DDRD &= ~(_BV(x[1]));
}


Второй вариант легче в написании, как мне кажется.. а первый я себе пока не представляю.
Tohin вне форума   Ответить с цитированием
Старый 27.09.2016, 23:45   #43
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 8,858
Вес репутации: 9055
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

Цитата:
Допустим есть unsigned char x = 0x15; как проверить что первая часть равно единице
Не понятно, первая часть чего?
Admin вне форума   Ответить с цитированием
Старый 28.09.2016, 07:14   #44
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 551
Вес репутации: 583
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

Первая часть байта в шестнадцатеричном виде 00 - FF.
В десятеричной системе аналогом будут десятки. То есть я хочу сравнивать только первый знак двузначной записи. А что будет если я напишу:
char x = 0xF5; //данная переменная содержит байт, получаемый по сети clunet, поэтому значение нужно проверить.
if ((x/10)==0xF){
DDRD |=(_BV(x-0xF0));
}

на калькуляторе получается то что надо.
Tohin вне форума   Ответить с цитированием
Старый 28.09.2016, 12:30   #45
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 8,858
Вес репутации: 9055
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

Цитата:
Первая часть байта в шестнадцатеричном виде 00 - FF.
Это вторая, она же старшая тетрада
Сравнивать через маску &

if (x/10==(DDRD &=B11110000))
или
if (x/10==(DDRD &=0xF0))
или
if (x/10==(DDRD &=240))
Admin вне форума   Ответить с цитированием
Старый 30.09.2016, 20:44   #46
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 551
Вес репутации: 583
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

Никак не могу понять что происходит в части: DDRD &=B11110000

Можно на примере?
char x = 0xF5;
x&=B11110000;

Что будет содержать х? Есть ли на примете книги/статьи где данный аспект рассматривается в подаче "для детей с проблемами развития"?
У меня никак не возникает понимание битовых операций типа |=; ~&=; >>; <<. Вроде и читал, вроде и в примерах все понятно, но применять или понять что происходит в коде никак не могу...

И сразу еще вопрос:
есть у меня массив char data [128]. Предположительно (!) ему присваивается значение либо {0x15,0x72}, либо "1572" (не могу пока чужой код разобрать)
пытаюсь вернуть в UART data[0] - приходит 0004. А если возвращаю просто data, то приходит как и требуется 1572
Может моя ошибка очевидна, и найти проблему легко - буду благодарен за помощь. Если нет - то я продолжу эксперименты...
UPD: Кажется что-то нашел DEC 1572 = Hex 624. Метод "тыка" конечно, но цифра совпала... Как при присвоении значений убедить компилятор работать исключительно в hex?

Последний раз редактировалось Tohin; Вчера в 18:12.
Tohin вне форума   Ответить с цитированием
Старый 30.09.2016, 22:27   #47
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 8,858
Вес репутации: 9055
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

Цитата:
Можно на примере?
char x = 0xF5;
x&=B11110000;
Что будет содержать х?
х будет равен 0xF0

Побитовое И — это бинарная операция, действие которой эквивалентно применению логического И к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если оба соответствующих бита операндов равны 1, результирующий двоичный разряд равен 1; если же хотя бы один бит из пары равен 0, результирующий двоичный разряд равен 0.
Admin вне форума   Ответить с цитированием
Старый 11.10.2016, 21:42   #48
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 551
Вес репутации: 583
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

Цитата:
Сообщение от Tohin Посмотреть сообщение
Товарищи программисты, а подскажите пожалуйста возможна ли (теоретически) система автоматизированного программирования avr?
<..>
А может такая система уже есть?
Кажется что-то есть. Но мне опять не нравиться http://remotexy.com

Последний раз редактировалось Tohin; 11.10.2016 в 21:44.
Tohin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 17:59. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика