Программный I2C

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Программный I2C

Сообщение dosikus »

ARV писал(а):Юрий сказал, что правильно - это когда считываем в промежуточную переменную, модифицируем и выводим обратно - так?
RMW аппаратная "фича" . В AVR так же имеется ...
Аlex писал(а):Ну я даже и не знаю что сказать...


[/code]IDE - CooCox. компилятор, как я понял, - arm-none-eabi.
:dont_know:
Тебя куда несет ? У ARM нет обработки отдельных бит ...
Последний раз редактировалось dosikus Пт апр 25, 2014 22:47:36, всего редактировалось 1 раз.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18560
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программный I2C

Сообщение ARV »

dosikus писал(а):
ARV писал(а):Юрий сказал, что правильно - это когда считываем в промежуточную переменную, модифицируем и выводим обратно - так?
RMW аппаратная "фича" . В AVR так же имеется ...
да, я в курсе - в AVR так делаются битовые модификации регистров на ассемблере. но в Си это делается через целый байт всегда.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Программный I2C

Сообщение Аlex »

ARV писал(а):как видите, в первом случае считывание в регистр было 1 раз, а потом этот регистр плюсовался к исходному, а во втором случае считывание переменной сделано трижды :)))
Ну про ситуацию с плюсами никто и не спорит, тут мотивы так поступать понятны. А вот с "ИЛИ" даже интересно стало :)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Программный I2C

Сообщение dosikus »

ARV, RMW - бич старых пЫков где были только PORT и TRIS . Все операции ( аппаратно)с портом идут через тот самый RMW .
В AVR PORT в продвинутых пЫк LATCH ...
Последний раз редактировалось dosikus Пт апр 25, 2014 22:52:01, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Программный I2C

Сообщение HHIMERA »

ARV писал(а):пока и я не вижу
А не надо путать сказки про идеальный компилятор и реальный оптимизатор... разные вещи... :)))
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Программный I2C

Сообщение Аlex »

dosikus писал(а):Тебя куда несет ? У ARM нет обработки отдельных бит ...
Я сравнивал обработку 2-х разных переменных. Битовые операции тут не при чём :)
Реклама
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Программный I2C

Сообщение HHIMERA »

ARV писал(а):в Си это делается через целый байт всегда.
Ну да... осталось только вспомнить "о вреде volatile"... и о code reordering...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18560
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программный I2C

Сообщение ARV »

HHIMERA писал(а):
ARV писал(а):пока и я не вижу
А не надо путать сказки про идеальный компилятор и реальный оптимизатор... разные вещи... :)))
а я и не путаю. как весьма хорошее приближение к стандарту языка Си я вижу GCC - и показанный мной пример это подтверждает: volatile полностью связывает руки оптимизатору, как и должно по стандарту. а ничего иного я и не хотел сказать.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18560
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программный I2C

Сообщение ARV »

HHIMERA писал(а):Ну да... осталось только вспомнить "о вреде volatile"... и о code reordering...
я, наверное, чего-то не знаю: никогда еще не сталкивался с вредом volatile...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18560
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программный I2C

Сообщение ARV »

Аlex писал(а):Я сравнивал обработку 2-х разных переменных. Битовые операции тут не при чём :)
протестируйте мой пример с троекратным сложением :)))
Последний раз редактировалось AlekseyEnergo Вс май 04, 2014 20:04:25, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.2 правил форума. Предупрежден!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Программный I2C

Сообщение dosikus »

ARV да не в компиляторах дело .
Чтение- Модификация - Запись происходит при любой команде обращения к порту .
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18560
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программный I2C

Сообщение ARV »

dosikus писал(а): Чтение- Модификация - Запись происходит при любой команде обращения к порту .
т.е. в PIC-ах даже когда я СЧИТЫВАЮ порт, в него происходит запись?!?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Программный I2C

Сообщение dosikus »

ARV писал(а):т.е. в PIC-ах даже когда я СЧИТЫВАЮ порт, в него происходит запись?!?!
Тьфу ты , ну описался . .. При командах записи . Да и AVR не исключение , из за чего думаешь есть PORT и PIN ?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Программный I2C

Сообщение HHIMERA »

ARV писал(а):
dosikus писал(а): Чтение- Модификация - Запись происходит при любой команде обращения к порту .
т.е. в PIC-ах даже когда я СЧИТЫВАЮ порт, в него происходит запись?!?!
А причём здесь ПИКи... во многих архитектурах так... читается то реальное значение на пине...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18560
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программный I2C

Сообщение ARV »

dosikus писал(а):При командах записи . Да и AVR не исключение , из за чего думаешь есть PORT и PIN ?
повторяю: модификация отдельного бита в регистре/порте делается, как вы говорите, - я в курсе. но делается это ассемблерными командами, например, SBI или SBR.

однако пока не вижу, каким боком это соотносится с моим высказыванием о том, что если бы топикстартер не использовал нестандартные трюки компилятора, на битовые операции он не нарвался бы никогда? ну, во всяком случае, при соответствии его компилятора стандарту Си...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Программный I2C

Сообщение dosikus »

ARV писал(а): повторяю: модификация отдельного бита в регистре/порте делается, как вы говорите, - я в курсе. но делается это ассемблерными командами, например, SBI или SBR.
Мля , а как работает сия команда на уровне железа ты в курсе ?
Считывается состояние всего порта , Модифицируется тот самый бит и только потом результат целиком заносится обратно.
А если на каком то пине провал ?

Тут речь не о ассемблерных командах а о аппаратных операциях ...
Последний раз редактировалось dosikus Пт апр 25, 2014 23:12:40, всего редактировалось 3 раза.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Программный I2C

Сообщение Аlex »

ARV писал(а):протестируйте мой пример с троекратным сложением :)))
Я по этому поводу уже высказался :
Аlex писал(а):Ну про ситуацию с плюсами никто и не спорит, тут мотивы так поступать понятны
:)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18560
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Программный I2C

Сообщение ARV »

Аlex писал(а):Ну про ситуацию с плюсами никто и не спорит, тут мотивы так поступать понятны
дело в том, что мотив у компилятора может быть только один - следовать стандарту языка. и это означает, что volatile запретит компилятору вместо считывания байта в промежуточную переменную использовать ассемблерную команду модификации бита - это абсолютно однозначно!

мотивы могут быть разными у нас, но не у компилятора! а мы должны одинаково воспринимать язык - без мотивов и разночтений. только в этом случае наши программы будут понятны друг другу и не будут содержать не понятных нам скрытых ошибок.
dosikus писал(а):Мля , а как работает сия команда на уровне железа ты в курсе ?
Считывается состояние всего порта , Модифицируется тот самый бит и только потом результат целиком заносится обратно.
А если на каком то пине провал ?
я вам третий раз повторяю, большими буквами: Я В КУРСЕ если вы не уследили за нитью моих рассуждений, прошу вас перечитать мои сообщения, а не толочь воду в ступе.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Программный I2C

Сообщение Аlex »

ARV писал(а):мотив у компилятора может быть только один - следовать стандарту языка
Объясните мне тогда (а лучше ткните носом где это написано) то, что строку a=a|(1<<7); , c отключеной оптимизацией для переменной "a", компилятор должен создать ещё одну переменную. Не вижу никакой логической связи этой строки с использованием дополнительной памяти. И это с учётом того, что для компилятора эта строка абсолютно эквивалентна строке a |= (1<<7);
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Программный I2C

Сообщение HHIMERA »

ARV писал(а):не толочь воду в ступе.
Ну так и прекращайте... Копилятор это одно, а оптимизатор это другое... В ЙАРе под STM8 BCPL до сих пор отдельным макросом висит...
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

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