<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[CANNY forum &mdash; Подмена 1 байта в конкретном пакете]]></title>
	<link rel="self" href="https://forum.canny.ru/extern.php?action=feed&amp;tid=390&amp;type=atom" />
	<updated>2017-11-21T07:04:53Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.canny.ru/viewtopic.php?id=390</id>
		<entry>
			<title type="html"><![CDATA[Re: Подмена 1 байта в конкретном пакете]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=6336#p6336" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ladan пишет:</cite><blockquote><p>Побитовые И+ИЛИ быстрее чем сдвиги + сложение, оптимальнее, правильно понял? Или разница в 1 такт за счет отсутствия 1 операции?</p></blockquote></div><p>Побитовые операции оптимальнее арифметических. К тому же они используются в соответствии с логикой алгоритма: выделить то что оставить и добавить то чего не хватает. Разница в 1 функциональный блок экономит машинное время сокращая длительность цикла выполнения диаграммы.</p><div class="quotebox"><cite>ladan пишет:</cite><blockquote><p>вариант начала передачи через буфер - нормально?</p></blockquote></div><p><strong>UPD:</strong> Буфер использовать нет необходимости (зачем откладывать отправку на целый цикл выполнения диаграммы?) и это, в данном случае, даже неправильно. Актуальность данных в регистрах приема сообщения CAN гарантируется только при наличии &quot;1&quot; в регистре наличия нового сообщения, т.е. на данном цикле выполнения диаграммы. Если значения регистров принятого сообщения не сохраняются с помощью триггеров для дальнейшей обработки, а перегружаются в регистры отправки напрямую, то следует отправлять сообщение в этом же цикле.<br />Откорректированный вариант диаграммы во вложении.</p>]]></content>
			<author>
				<name><![CDATA[Денис, CANNY]]></name>
				<uri>https://forum.canny.ru/profile.php?id=3</uri>
			</author>
			<updated>2017-11-21T07:04:53Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=6336#p6336</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Подмена 1 байта в конкретном пакете]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=6335#p6335" />
			<content type="html"><![CDATA[<p>Угу, блок 7 в моей конкретике лишний, т.к.&nbsp; отсутствие данных D7:D6 контролируется в D0 (там по протоколу транспорта длинна значащих байт) потому&nbsp; я его и не учитываю в сравнении</p><p>Побитовые И+ИЛИ быстрее чем сдвиги + сложение, оптимальнее, правильно понял? Или разница в 1 такт за счет отсутствия 1 операции? <br />вариант начала передачи через буфер - нормально?</p>]]></content>
			<author>
				<name><![CDATA[ladan]]></name>
				<uri>https://forum.canny.ru/profile.php?id=394</uri>
			</author>
			<updated>2017-11-20T16:28:00Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=6335#p6335</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Подмена 1 байта в конкретном пакете]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=6334#p6334" />
			<content type="html"><![CDATA[<p>Вариант решения во вложении: при получении сообщения заданного содержания (все байты равны указанным значениям), заменить байт D4.<br />Маска+Замена: блок №11 &quot;Побитовое И&quot; с константой 0xFF00 выделяет из регистра D5:D4 байт D5; блок №12 &quot;Побитовое ИЛИ&quot; устанавливает на место байта D4 нужную константу.<br />Если бы в сообщении с ID=0x222 нужно было постоянно менять значение байта D4 на одну и туже константу, вне зависимости от содержания всего сообщения, то это можно было бы легко сделать через настройки отбора драйвера шлюза (маска отбора/замена отбора).</p>]]></content>
			<author>
				<name><![CDATA[Денис, CANNY]]></name>
				<uri>https://forum.canny.ru/profile.php?id=3</uri>
			</author>
			<updated>2017-11-20T15:16:11Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=6334#p6334</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Подмена 1 байта в конкретном пакете]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=6332#p6332" />
			<content type="html"><![CDATA[<p>Помучаю еще, если позволите:<br />Задача:<br />в конкретном пакете ID222&nbsp; Data: 00 11 22 33 44 55 66 77 заменить D4 на &quot;0х41&quot; (на константу)<br />Все остальные пакеты от этого ID передать без изменений.</p><p>Получилось как то так.... но что то мне подсказывает что это не совсем оптимальный вариант...&nbsp; хотя он и работает.<br />Может подскажете как сделать через маску/замену?</p>]]></content>
			<author>
				<name><![CDATA[ladan]]></name>
				<uri>https://forum.canny.ru/profile.php?id=394</uri>
			</author>
			<updated>2017-11-20T14:42:28Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=6332#p6332</id>
		</entry>
</feed>
