Size: a a a

2021 January 28

ED

Electronics Designer in Embedded Group
Это STM32L152RE. У него есть следующие варианты:

I2C1:

SCL = PB6 / PB8
SDA = PB7 / PB9

I2C2:

SCL = PB10
SDA = PB11
источник

ED

Electronics Designer in Embedded Group
Ну и можно одинокий датчик подключить к PB6/PB7, в то время как основная шина на PB8/PB9.
источник

ED

Electronics Designer in Embedded Group
Я в колебаниях. Но я понял, что коммутация питания не прокатит, спасибо всем отписавшимся.
источник

P.

Pavel . in Embedded Group
Electronics Designer
Коллеги, помнит кто сходу, устройства с интерфейсом I2C по стандарту обязаны выдерживать подачу напряжения на выводы SCL/SDA в отсутствие основного питания, или нет?

Суть проблемы: есть два датчика HTU21D. В них адрес задан хардкодом, а мне нужно два таких датчика на шине. Я хочу коммутировать питание датчиков, чтобы общаться с тем, который в данный момент запитан, и думаю, это нормальное решение или все же костыль.
уверен, что SCL/SDA имеют встроеныне защитные диоды, так что подтяжки приведу к фантомнопу питанию. Воспользуйтесь i2c мультимплексором
источник

AK

Andrew K in Embedded Group
 __asm volatile("svc  #3 \n\t"

                :"=r"(D)
       :"r"(A), "r"(B), "r"(C)
       :"cc"
      );
источник

AK

Andrew K in Embedded Group
подскажите почему он думает что результат лежит в r5? Не пойму что нужно чтобы он думал что уже есть в r0. GCC.
источник

u

uis in Embedded Group
Andrew K
подскажите почему он думает что результат лежит в r5? Не пойму что нужно чтобы он думал что уже есть в r0. GCC.
Кто он?
источник

AK

Andrew K in Embedded Group
компилятор GCC
источник

u

uis in Embedded Group
svc - supervisor call
источник

SK

Stas Koynov in Embedded Group
не легче всю функцию на асме написать? без инлайн ассемблера?. мне кажется даже авторы Гцц не понимают как он работает
источник

u

uis in Embedded Group
Stas Koynov
не легче всю функцию на асме написать? без инлайн ассемблера?. мне кажется даже авторы Гцц не понимают как он работает
Мне кажется, что авторы gcc тут ни при чём
источник

AK

Andrew K in Embedded Group
хочу написать интерфейс и вызывать из с++… функция и так вся на асме
источник

SK

Stas Koynov in Embedded Group
хз но норм ассемблер тем более для АРМа это прям ништь. зачем вот эту Х..ту типа :m :r :c нормальных людей только путать. хочешь писать асм пиши
источник

SK

Stas Koynov in Embedded Group
у тебя не асм а инлайн асм это разные вещи!
источник

SK

Stas Koynov in Embedded Group
в асме нет, cc или =r какой то регистр. есть r1 или r5 но не какой то. и где-то. и положи куда-то.
источник

MW

Mohammad Wolf in Embedded Group
Andrew K
 __asm volatile("svc  #3 \n\t"

                :"=r"(D)
       :"r"(A), "r"(B), "r"(C)
       :"cc"
      );
Может потому что ты не можешь управлять регистрами такими встроенными функциями? Посоветую тебе написать ассемблерную фугкцию. Там и укажешь r0
источник

MW

Mohammad Wolf in Embedded Group
Или я ошибаюсь. Это у интринсков такое
источник

AK

Andrew K in Embedded Group
она и так ассемблерная это обработчик svc, нужно просто ее вызвать как надо, входные параметры передает как надо, а результат херня
источник

MW

Mohammad Wolf in Embedded Group
Andrew K
она и так ассемблерная это обработчик svc, нужно просто ее вызвать как надо, входные параметры передает как надо, а результат херня
Да забей на это и попробуй написать норм. функцию синтаксисом gas. По крайней мере я так и пишу
источник

LZ

Leonid Zaliubovskii in Embedded Group
не знаю как в плюсах но в Си ты поимеешь кучу гемора, если не учтешь соглашение о вызовах. R0..R3 используются для передачи параметров внутрь функции, а r0 еще и для возврата.

Значения передаваемы внутрь попортишь если тут так же как и в сях
источник