CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Alex_ka
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Ср сен 04, 2019 17:59:23
Откуда: Гомель

Re: CodeVision AVR в вопросах и ответах

Сообщение Alex_ka »

Спасибо за подсказку. Учту.
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: CodeVision AVR в вопросах и ответах

Сообщение OKF »

Там ещё непочатый край для учёбы, согласись Alex_ka)?
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

да тут ещё много надо подсказок))

например зачем писать отдельно две переменных...

Код: Выделить всё

delay_ms(100);
TX_c_eep();
delay_ms(100);
TX_d_eep();
delay_ms(100);

если можно писать за один раз...
:dont_know:

а это...

Код: Выделить всё

unsigned char in_PINB0, in_PINB1, in_PINB2, in_PINB3;

in_PINB0 = PINB.0;
in_PINB1 = PINB.1;
in_PINB2 = PINB.2;
in_PINB3 = PINB.3;

if(!in_PINB0 && !in_PINB1 && !in_PINB2 && !in_PINB3) {c=0; d=0;;break;}; // от DTMF 1

вообще можно записать в одну переменную...
:dont_know:
и т.д.
Alex_ka
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Ср сен 04, 2019 17:59:23
Откуда: Гомель

Re: CodeVision AVR в вопросах и ответах

Сообщение Alex_ka »

Там ещё непочатый край для учёбы, согласись Alex_ka)?
Согласен.Мы же самоучки. Без адекватной помощи как от Романа, никак. За. что ему отдельная благодарность, что потратил время на мой вопрос и на примере разъяснил.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: CodeVision AVR в вопросах и ответах

Сообщение Starichok51 »

roman.com писал(а):вообще можно записать в одну переменную...
совершенно верно. прочитал весь порт в переменную, а потом проверяй биты. и ничего не будет пропущено.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: CodeVision AVR в вопросах и ответах

Сообщение OKF »

Вопрос только в том, что а нужна ли эта экономия? И зачем? Заради чего?
Понятно, раньше экономили из за ресурсов. А сейчас? По привычке?
А то что страдает наглядность? Понятность исходного кода? Нет, давайте изображать из себя хакеров! Ну тогда да.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

Не страдает наглядность. Даже наоборот.
4 кнопки выглядят так:
c = 0b00001111;
:idea: :idea: :idea: :idea:
И что пострадало ?))
:tea:
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: CodeVision AVR в вопросах и ответах

Сообщение OKF »

0b00001111; - это магические цифры. Если писать по нормальному, то их быть не должно. Каждый разряд должен быть описан. Это нужно объяснять? Удивительно, что тебя этому нужно учить. В принципе, ты можешь писать как угодно, как тебе нравится. Только это будет выглядеть как неграмотный текст с ошибками. Ну и мнение о тебе соответствующее.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

это не магические цифры а биты в байте.))
Если писать по нормальному, то открываем даташит с смотрим как должно быть.
См. выше.
:tea:
codenamehawk
Вымогатель припоя
Сообщения: 527
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVision AVR в вопросах и ответах

Сообщение codenamehawk »

roman.com писал(а):вообще можно записать в одну переменную...

Так написано, чтобы было понятно тому, кому это предназначалось.
И такой код позволит легко переназначить часть входов на другой порт.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

0b00001111; - это магические цифры. Если писать по нормальному, то их быть не должно.

Открываем даташит от разработчиков МК... и что мы видим ?

Изображение

Что такое EEMPE... ? Что такое EEPE... ?
и т.д.

Это не я написал. Это написали разработчики МК.
:tea:

Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))

Вот их адрес (из того же даташита).

Изображение

:tea:
Вложения
Screenshot_1.jpg
(54.69 КБ) 438 скачиваний
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1614
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: CodeVision AVR в вопросах и ответах

Сообщение VNS »

Что такое EEMPE... ? Что такое EEPE... ?
и т.д.

Это не я написал. Это написали разработчики МК.
:tea:

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

И научись свои партянки под спойлер прятать… :facepalm:
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

прежде чем писать ответ... хотя бы сначала прочитал вопрос ))
:tea:
Alex_ka
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Ср сен 04, 2019 17:59:23
Откуда: Гомель

Re: CodeVision AVR в вопросах и ответах

Сообщение Alex_ka »

Мужики, в чем срач? Ну если вы действительно профи, ну так приведите пример, а не голословно показывайте то, что ваш уровень выше. Будет полезно и таким как я, которые сами познают и некому научить.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

пример ? так никто ничего не спрашивает))
:tea:
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: CodeVision AVR в вопросах и ответах

Сообщение OKF »

Это не я написал. Это написали разработчики МК.
:tea:

Напиши / позвони разработчикам МК и скажи что они все дураки ! )) И так писать нельзя ! ))

Что тебя смущает? Что не так у разработчиков?
И чётче выражай свои мысли.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

для тех кто в танке))
если разработчикам МК используют битовые операции... значит и нам можно))
:tea:
Alex_ka писал(а):там кнопок нет, там управление на порт "В" подаётся с микросхемы DTMF НТ9170. т. е с телефонного аппарата, в тональном наборе приходит комбинация цифр и меняет состояние на порту "В".

осталось увидеть полную схему и программу...
:tea:
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: CodeVision AVR в вопросах и ответах

Сообщение OKF »

если разработчикам МК используют битовые операции... значит и нам можно))

Я же говорил не о битовых операциях, а о магических цифрах, как твои 0b00001111, которые непойми что значат. И неважно в каком они виде - двоичном, десятичном...
Как раз у разработчиков всё красиво. С них и старайся брать пример.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: CodeVision AVR в вопросах и ответах

Сообщение roman.com »

выше прозвучало предложение...
вместо этого...

Код: Выделить всё

if(!in_PINB0 && !in_PINB1 && !in_PINB2 && !in_PINB3) {c=0; d=0; break;}; // от DTMF 1


можно просто записать порт "B" в переменную "с"
вот так:

Код: Выделить всё

с = PINB;

и дальше работаем с битами...

0b00001111;

любому программисту эта запись понятна.
:tea:

а кому не понятно... идет учиться дальше))

на этом всё.
:tea:
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: CodeVision AVR в вопросах и ответах

Сообщение OKF »

вместо этого...

ЭТО вообще пишется не так. Сначала описываешь подключение (схему, физику). Через define, либо
через const переменные или ещё как. И это всё находится в одном месте, обычно в .h файле.

Код: Выделить всё

#define DTMF0       PINB.0              //вот твоё подключение, физика
#define DTMF1       PINB.1
#define DTMF2       PINB.2
#define DTMF3       PINB.3

Теперь тебе пофигу что и как подключено. Ты схему в упор не видишь! Ты работаешь с логикой.

Код: Выделить всё

if (!DTMF0 && !DTMF1 && !DTMF2 && !DTMF3) {
  c = 0;
  d = 0;
  break;
}

Теперь, ты можешь как хочешь менять схему, логика (текст программы) останется неизменной!

Можно и по другому, вдруг ты хочешь скорости или компактности. Создаёшь макро или инлайн
функцию:

Код: Выделить всё

#define get_dtmf()  (PORTB & 0b1111)    //опять же, все в одном месте, лучше в header-е
Тогда если ты меняешь подключение, ты только правишь макро-функцию get_dtmf(). В программе
же ничего меняться не будет и логика останется прежней:

Код: Выделить всё

if (!get_dtmf()) {
  c = 0;
  d = 0;
  break;
}
И тебе не придётся лазить по всей программе, выискивая порты и биты к которому подключен
этот DTMF и гадать, а что же это значит 0b00001111? Что именно содержится в этих битах?

Устал я от тебя, Рома.)
Ответить

Вернуться в «AVR»