Обсуждаем контроллеры компании Atmel.
Ответить

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт июн 04, 2020 13:46:17

Yarikkasl, смотрите прошлый ответ. Если в одном байте вам можно сразу посылать несколько бит команд, то можно делать так, как я написал выше. Но всё зависит от протокола - можно ли там сразу в одном байте посылать несколько разных битов команд. Или же как-то пакетно, или вообще по-байтно запрашивать. Всё зависит от отвечающего ус-ва и его протокола.

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт июн 04, 2020 13:49:54

NStorm, понял понял, будут пытаться дальше спасибо!

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб авг 01, 2020 18:53:32

Приветствую!
В статье непонятно чем руководствовался человек чтобы занести данные в регистр в дополнительном коде (-128; +127)
В функции
Код:
void setAgingOffset(int offset)
{
    if (offset < 0) offset += 256;
 
    Wire.beginTransmission(DS3232_I2C_ADDRESS);
    Wire.write(0x10);
    Wire.write(offset);
    Wire.endTransmission();
}

зачем прибавлять 256 если переменная offset (как и все прочие) уже и так представлена в дополнительном коде (проверено в симуляторе Atmel Studio)
От прибавления 256 младший байт (который и пойдет в регистр) битовое представление не меняется. Смысл этого не понятен, хочется разобраться

Если сделать так
Код:
void setAgingOffset(char offset)
{
    Wire.beginTransmission(DS3232_I2C_ADDRESS);
    Wire.write(0x10);
    Wire.write(offset);
    Wire.endTransmission();
}

то результат тот-же (если например отправляем десятичное (-128) offset будет 0x80 или 0b10000000 т.е. что и требуется)
Ответить