Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://www.helpsoft.lv/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. >
  9.  
  10. <channel>
  11. <title>HelpSoft &#8211; блог компьютерного доктора</title>
  12. <atom:link href="http://www.helpsoft.lv/feed/" rel="self" type="application/rss+xml" />
  13. <link>http://www.helpsoft.lv</link>
  14. <description></description>
  15. <lastBuildDate>Sat, 27 Feb 2021 18:09:19 +0000</lastBuildDate>
  16. <language>en-US</language>
  17. <sy:updatePeriod>
  18. hourly </sy:updatePeriod>
  19. <sy:updateFrequency>
  20. 1 </sy:updateFrequency>
  21. <generator>https://wordpress.org/?v=5.6.14</generator>
  22. <item>
  23. <title>Mikrotik RouterOS &#8211; некоторые особенности работы с USB-портом</title>
  24. <link>http://www.helpsoft.lv/2021/02/27/mikrotik-routeros-nekotorye-osobennosti-raboty-s-usb-portom/</link>
  25. <dc:creator><![CDATA[admin]]></dc:creator>
  26. <pubDate>Sat, 27 Feb 2021 16:33:03 +0000</pubDate>
  27. <category><![CDATA[По горячим следам]]></category>
  28. <guid isPermaLink="false">http://www.helpsoft.lv/?p=356</guid>
  29.  
  30. <description><![CDATA[В своей работе на нескольких объектах применяем роутер Mikrotik LtAP Lte6 kit. Из нужного под нашу задачу на его борту есть: 1 Ethernet порт, 1 USB порт и LTE модем на две SIM-карты. К USB порту через хаб подключены USB-RS232 преобразователи, до которых настроен удалённый доступ. Фактически Mikrotik работает как Port Server. Преобразователи USB-RS232 иногда [&#8230;]]]></description>
  31. <content:encoded><![CDATA[<p><strong><img loading="lazy" class="alignnone size-full wp-image-372" src="http://www.helpsoft.lv/wp-content/uploads/2021/02/Mikrotik_LtAP_LTE6_kit.png" alt="" width="800" height="514" srcset="http://www.helpsoft.lv/wp-content/uploads/2021/02/Mikrotik_LtAP_LTE6_kit.png 800w, http://www.helpsoft.lv/wp-content/uploads/2021/02/Mikrotik_LtAP_LTE6_kit-300x193.png 300w, http://www.helpsoft.lv/wp-content/uploads/2021/02/Mikrotik_LtAP_LTE6_kit-768x493.png 768w, http://www.helpsoft.lv/wp-content/uploads/2021/02/Mikrotik_LtAP_LTE6_kit-624x401.png 624w" sizes="(max-width: 800px) 100vw, 800px" /></strong></p>
  32. <p>В своей работе на нескольких объектах применяем роутер Mikrotik LtAP Lte6 kit.<br />
  33. Из нужного под нашу задачу на его борту есть: 1 Ethernet порт, 1 USB порт и LTE модем на две SIM-карты. К USB порту через хаб подключены USB-RS232 преобразователи, до которых настроен удалённый доступ. Фактически Mikrotik работает как Port Server.</p>
  34. <p><img loading="lazy" class="alignnone size-full wp-image-367" src="http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_ports.png" alt="" width="795" height="576" srcset="http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_ports.png 795w, http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_ports-300x217.png 300w, http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_ports-768x556.png 768w, http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_ports-624x452.png 624w" sizes="(max-width: 795px) 100vw, 795px" /></p>
  35. <p><strong>П</strong>реобразователи USB-RS232 иногда сбоят.<br />
  36. Помогает функция System-&gt;RouterBOARD-&gt;USB Power Reset.<br />
  37. Главное &#8211; выбрать правильную шину (Bus). <strong>В нашем случае нужно выбирать 0 (ноль)</strong>. Третья шина сбрасывает питание LTE-модема. За что отвечают первая и вторая шины &#8211; не исследовал, но <em>есть предположение</em>, что одна из них отвечает за внутренний дополнительный порт mini PCIe, который в штатной комплектации пуст.</p>
  38. <p><img loading="lazy" class="alignnone size-full wp-image-366" src="http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_bus.png" alt="" width="706" height="559" srcset="http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_bus.png 706w, http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_bus-300x238.png 300w, http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_bus-624x494.png 624w" sizes="(max-width: 706px) 100vw, 706px" /></p>
  39. <p><strong>Н</strong>а одном из объектов столкнулся с некорректным поведением USB-шины Mikrotik&#8217;a. Отвалились порты преобразователей USB-RS232. При попытке сброса порты поднимаются, и работают ровно тот промежуток времени, который задан как время отключения. То есть ведут себя абсолютно инверсно. Mikrotik заменили, сбойный доставили мне на разбор полётов.<br />
  40. Оказалось, что неизвестным образом сбился параметр USB Type &#8211; вместо принудительного &#8220;USB Type A&#8221; стал &#8220;auto&#8221;. Возврат к варианту настройки &#8220;USB Type A&#8221; <strong>решил проблему</strong>. Также прошу обратить внимание, что это параметр в версии RouterOS 6.48 не сохраняется в backup&#8217;e.</p>
  41. <p><img loading="lazy" class="alignnone size-full wp-image-368" src="http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_type.png" alt="" width="612" height="564" srcset="http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_type.png 612w, http://www.helpsoft.lv/wp-content/uploads/2021/02/2021-02-27_mt_usb_type-300x276.png 300w" sizes="(max-width: 612px) 100vw, 612px" /></p>
  42. ]]></content:encoded>
  43. </item>
  44. <item>
  45. <title>Как я делал Digispark</title>
  46. <link>http://www.helpsoft.lv/2016/08/07/kak-ya-delal-digispark/</link>
  47. <dc:creator><![CDATA[admin]]></dc:creator>
  48. <pubDate>Sun, 07 Aug 2016 17:12:20 +0000</pubDate>
  49. <category><![CDATA[AVR]]></category>
  50. <category><![CDATA[avr]]></category>
  51. <category><![CDATA[Digispark]]></category>
  52. <guid isPermaLink="false">http://www.helpsoft.lv/?p=345</guid>
  53.  
  54. <description><![CDATA[Узнал о существовании этой платформы &#8211; и загорелся. Из плюсов &#8211; программируется из среды Arduino , до 6 ног для подключения периферии. Заказывать готовый модуль совершенно не хотелось, решил сделать сам. Куплено: Attiny85 &#8211; 2 штуки, стабилитроны на 3,6 вольта &#8211; 10 штук,резисторы на 68 ом &#8211; 10 штук. Найдено в загашнике: резистор на 1,2 [&#8230;]]]></description>
  55. <content:encoded><![CDATA[<p>Узнал о существовании этой платформы &#8211; и загорелся.<br />
  56. Из плюсов &#8211; программируется из среды Arduino , до 6 ног для подключения периферии.<br />
  57. Заказывать готовый модуль совершенно не хотелось, решил сделать сам.</p>
  58. <p>Куплено:<br />
  59. <strong>Attiny85</strong> &#8211; 2 штуки,<br />
  60. <strong>стабилитроны на 3,6 вольта</strong> &#8211; 10 штук,<strong>резисторы на 68 ом</strong> &#8211; 10 штук.</p>
  61. <p>Найдено в загашнике:<br />
  62. резистор на 1,2 килоома (по хорошему бы надо 1,5)<br />
  63. макетная плата,<br />
  64. соединительные провода,<br />
  65. сборка светодиод+резистор,<br />
  66. хвост с USB-разъёмом.</p>
  67. <p><strong>Схема</strong> была сдёрнута <a href="https://robom.ru/blog/arduino/opyt-raboty-s-digispark-attiny85.html">отсюда</a></p>
  68. <p>Получилось так:<br />
  69. <img loading="lazy" class="alignnone wp-image-346" src="http://www.helpsoft.lv/wp-content/uploads/2016/08/digispark.jpg" alt="digispark" width="428" height="321" srcset="http://www.helpsoft.lv/wp-content/uploads/2016/08/digispark.jpg 1167w, http://www.helpsoft.lv/wp-content/uploads/2016/08/digispark-300x225.jpg 300w, http://www.helpsoft.lv/wp-content/uploads/2016/08/digispark-768x576.jpg 768w, http://www.helpsoft.lv/wp-content/uploads/2016/08/digispark-1024x769.jpg 1024w, http://www.helpsoft.lv/wp-content/uploads/2016/08/digispark-624x468.jpg 624w" sizes="(max-width: 428px) 100vw, 428px" /></p>
  70. <p><strong>Bootloader</strong> взял <a href="https://github.com/micronucleus/micronucleus">у micronucleus<br />
  71. </a>Сами Digispark-овцы <a href="http://digistump.com/wiki/digispark/tutorials/connecting">пишут</a>, что их поделка работает на версии 1.02, в других местах встречал упоминание о стабильной 1.06, на micronucleus на момент написания лежит версия 2.03, которая показала себя вполне работоспособной.</p>
  72. <p>Заливал bootloader в attiny85 программатором USBAsp, с программой eXtreme burner.<br />
  73. Burner&#8217;у пришлось <a href="http://forum.easyelectronics.ru/viewtopic.php?f=4&amp;t=23760">чуть вправить мозг</a> &#8211; о существовании attiny85 он не знал.<br />
  74. А теперь коварный вопрос &#8211; с какими <strong>фьюзами</strong> заливать прошивку?<br />
  75. Штатные (Low &#8211; 62, High &#8211; DF, Ext &#8211; FF) не прокатывают.<br />
  76. Нашелся добрый человек, подсказал: <strong>Low &#8211; E1, High &#8211; DD, Ext &#8211; FE. </strong>В этом случае нога контроллера RESET (1 нога чипа, или pin5 с точки зрения Arduino) так и остаётся сбросом, сохраняется возможность перешить контроллер обычным программатором, но pin5 программировать в скетчах бесполезно.</p>
  77. <p><strong>Для рисковых и подготовленных парней</strong><br />
  78. Если сильно хочется задействовать тот самый pin5<br />
  79. <strong>Low &#8211; E1, High &#8211; <span style="color: #ff0000;">5D</span>, Ext &#8211; FE.<br />
  80. </strong>!!! Внимание !!! После прошивки этих фьюзов контроллер для обычного программатора станет недоступен. Посему предлагаю сначала прошиться безопасными фьюзами, убедиться, что девайс завёлся, и только потом шаманить.<br />
  81. У меня на это случай собран <a href="http://mdiy.pl/atmega-fusebit-doctor-hvpp/?lang=en">FuseBit Doctor</a> , так что мне не страшно <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  82. <p>Далее <a href="https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip">ставим драйвера</a> и <a href="http://digistump.com/wiki/digispark/tutorials/connecting">добавляем поддержку</a> Digispark&#8217;a в среде Arduino.</p>
  83. <p>Bootloader работает хитрО &#8211; первые 5 секунд после подачи питания ждёт сигнала по USB на обновление прошивки, после чего передаёт управление залитой программе.</p>
  84. <p>Соответствие <span style="color: #ff9900;">физических ног</span> контроллера и логических пинов в среде разработки:</p>
  85. <ul>
  86. <li class="level1">
  87. <div class="li"><span style="color: #ff9900;">5</span> &#8211; Pin 0 → I2C SDA, PWM</div>
  88. </li>
  89. <li class="level1">
  90. <div class="li"><span style="color: #ff9900;">6</span> &#8211; Pin 1 → PWM</div>
  91. </li>
  92. <li class="level1">
  93. <div class="li"><span style="color: #ff9900;">7</span> &#8211; Pin 2 → I2C SCK, Analog In</div>
  94. </li>
  95. <li class="level1">
  96. <div class="li"><span style="color: #ff9900;">2</span> &#8211; Pin 3 → Analog In (also used for USB+ when USB is in use)</div>
  97. </li>
  98. <li class="level1">
  99. <div class="li"><span style="color: #ff9900;">3</span> &#8211; Pin 4 → PWM, Analog (also used for USB- when USB is in use)</div>
  100. </li>
  101. <li class="level1">
  102. <div class="li"><span style="color: #ff9900;">1</span> &#8211; Pin 5 → Analog In</div>
  103. </li>
  104. </ul>
  105. <p>Про особенности создания bootloader-ов для таких малых чипов можно почитать <a href="https://habrahabr.ru/post/200896/">тут</a></p>
  106. <p>&nbsp;</p>
  107. ]]></content:encoded>
  108. </item>
  109. <item>
  110. <title>Ошибка при программировании ATtiny13 в eXtreme Burner (решено)</title>
  111. <link>http://www.helpsoft.lv/2015/11/18/oshibka-pri-prorammirovanii-attiny13-v-extreme-burner-resheno/</link>
  112. <dc:creator><![CDATA[admin]]></dc:creator>
  113. <pubDate>Wed, 18 Nov 2015 15:01:35 +0000</pubDate>
  114. <category><![CDATA[AVR]]></category>
  115. <category><![CDATA[atmel]]></category>
  116. <category><![CDATA[attiny13]]></category>
  117. <category><![CDATA[attiny13a]]></category>
  118. <category><![CDATA[avr]]></category>
  119. <category><![CDATA[error]]></category>
  120. <category><![CDATA[eXtreme Burner]]></category>
  121. <category><![CDATA[Mismatch at location 0x00000000]]></category>
  122. <category><![CDATA[ошибка]]></category>
  123. <guid isPermaLink="false">http://www.helpsoft.lv/?p=329</guid>
  124.  
  125. <description><![CDATA[Нарвался на неприятность &#8211; программа eXtreme Burner (v 1.4.2) отказывается корректно шить ATtiny13. При верификации начинается ругань &#8220;Mismatch at location 0x00000000&#8221; При этом и Khazama и AVRDUDEPROG шьют её без проблем на том же компе и программаторе. Исправляется так: Находим, куда заинсталлирован eXtreme Burner. У меня располагается штатно c:\Program Files\eXtreme Burner &#8211; AVR\. Заходим в [&#8230;]]]></description>
  126. <content:encoded><![CDATA[<p>Нарвался на неприятность &#8211; программа eXtreme Burner (v 1.4.2) отказывается корректно шить ATtiny13.<br />
  127. При верификации начинается ругань &#8220;Mismatch at location 0x00000000&#8221;<br />
  128. При этом и Khazama и AVRDUDEPROG шьют её без проблем на том же компе и программаторе.</p>
  129. <p>Исправляется так:<br />
  130. Находим, куда заинсталлирован eXtreme Burner.<br />
  131. У меня располагается штатно c:\Program Files\eXtreme Burner &#8211; AVR\.<br />
  132. Заходим в папку Data, в ней открываем файл chips.xml да хоть Notepad&#8217;ом.<br />
  133. Находим кусок:<br />
  134. <code></code></p>
  135. <p>&lt;CHIPLIST&gt;<br />
  136. &lt;CHIP&gt;<br />
  137. &lt;NAME&gt;ATtiny13A&lt;/NAME&gt;<br />
  138. &lt;FLASH&gt;1024&lt;/FLASH&gt;<br />
  139. &lt;EEPROM&gt;64&lt;/EEPROM&gt;<br />
  140. &lt;SIG&gt;0x0007901E&lt;/SIG&gt;<br />
  141. &lt;PAGE&gt;64&lt;/PAGE&gt;</p>
  142. <p>&#8230;и меняем значение PAGE с 64 на 32.</p>
  143. <p>Сохраняем, перезапускаем, наслаждаемся.</p>
  144. ]]></content:encoded>
  145. </item>
  146. <item>
  147. <title>Сложение регистровой пары с регистром или константой</title>
  148. <link>http://www.helpsoft.lv/2015/01/18/slozhenie-registrovoy-paryi-s-registrom-ili-konstantoy/</link>
  149. <dc:creator><![CDATA[admin]]></dc:creator>
  150. <pubDate>Sun, 18 Jan 2015 21:16:40 +0000</pubDate>
  151. <category><![CDATA[AVR]]></category>
  152. <category><![CDATA[avr]]></category>
  153. <category><![CDATA[сложение 16-битного и 8-битного чисел]]></category>
  154. <guid isPermaLink="false">http://www.helpsoft.lv/?p=285</guid>
  155.  
  156. <description><![CDATA[Иногда в памяти программ удобно хранить некий блок констант для последующего использования. Определяется такой блок директивой .db (для однобайтовых значений) и помечается меткой, предположим const_label. Как пример – набор битовых масок цифр и символов для 7-сегментного индикатора. Или последовательность задержек для формирования сложного сигнала. В чем разница? В первом случае из памяти программ извлекается единственное [&#8230;]]]></description>
  157. <content:encoded><![CDATA[<p><strong>И</strong>ногда в памяти программ удобно хранить некий блок констант для последующего использования. Определяется такой блок директивой <strong>.db</strong> (для однобайтовых значений) и помечается меткой, предположим <strong>const_label</strong>.<br />
  158. Как пример – набор битовых масок цифр и символов для 7-сегментного индикатора.<br />
  159. Или последовательность задержек для формирования сложного сигнала.<br />
  160. В чем разница?<br />
  161. В первом случае из памяти программ извлекается единственное значение &#8211;  нужная в данный момент битовая маска.<br />
  162. Во втором происходит последовательное чтение всей цепочки до некоего определённого стоп-байта (как вариант &#8211; $FF).<br />
  163. <strong>Д</strong>ля задания адреса, по которому находится нужный блок и элемент в нём, используется регистровая пара <strong>Z</strong> (она же <strong>ZH:ZL</strong>, она же <strong>r31:r30</strong>), разрядностью в 16 бит.<br />
  164. В первом случае эта регистровая пара складывается либо с 8-битной константой,<br />
  165. либо с 8-битным же регистром.</p>
  166. <p>Этот случай и рассмотрим.<br />
  167. <span id="more-285"></span><br />
  168. <strong>Б</strong>ерём пример из (1) &#8211; стр. 135:</p>
  169. <p><code> ldi ZH,High(const_label *2) ;загружаем адрес начала маски<br />
  170. ldi ZL,Low(const_label *2)<br />
  171. add ZL,5 ;адрес маски цифры 5<br />
  172. lpm ;маска окажется в регистре r0<br />
  173. &nbsp;<br />
  174. Листинг №1</code></p>
  175. <p>и зарекаемся его использовать &#8220;в чистом виде&#8221;, ибо в нём зарыты грабли. Даже не одни. Первые и самые важные – в системе команд AVR отсутствует сложение регистра<br />
  176. с константой, есть только вычитание.<br />
  177. Использование константы в данном случае тоже кажется сомнительным – зачем под каждую цифру лепить свой кусок кода, если проще занести смещение в регистр?</p>
  178. <p><strong>П</strong>ереписываем:</p>
  179. <p><code> .def temp = r16 ; в области определений<br />
  180. ...<br />
  181. ldi temp, 5 ;смещение - адрес маски цифры 5<br />
  182. ldi ZH,High(const_label *2) ;загружаем адрес начала маски<br />
  183. ldi ZL,Low(const_label *2)<br />
  184. add ZL,temp ;<br />
  185. lpm ;маска окажется в регистре r0<br />
  186. &nbsp;<br />
  187. Листинг №2</code></p>
  188. <p>А вот и вторые грабли. Если начало блока придётся на адрес например $00fc, а мы попытаемся выдернуть битмаску для цифры 5, нас ждёт облом: в регистровой паре <strong>Z</strong> вместо $0101 окажется значение $0001, поскольку команда <strong>add</strong> понятия не имеет о переносе единицы в старшую половину <strong>Z</strong>.</p>
  189. <p><em><span style="text-decoration: underline;">Заметки на полях.</span><br />
  190. Если очень нужно всё же сложить регистровую пару с константой, используйте команду <strong>adiw</strong>, она умеет учитывать перенос.<br />
  191. Важно лишь помнить: диапазон значений константы для данной команды<br />
  192. составляет 0&#8230;63, а сами регистровые пары могут быть<br />
  193. только <strong>Z</strong> (r31:R30), <strong>Y</strong> (r29:r28), <strong>X</strong> (r27:r26) и <strong>r25:r24</strong>.</em><br />
  194. <em><br />
  195. <code>ldi ZH,High(const_label *2) ;загружаем адрес начала маски<br />
  196. ldi ZL,Low(const_label *2)<br />
  197. <strong>adiw ZL,5</strong> ;адрес маски цифры 5<br />
  198. lpm ;маска окажется в регистре r0<br />
  199. &nbsp;<br />
  200. Листинг №3</code><br />
  201. </em></p>
  202. <h3>Как будем выкручиваться?</h3>
  203. <p><strong>Н</strong>апример так:</p>
  204. <p><code>.def temp = r16 ; в области определений<br />
  205. ...<br />
  206. ldi temp, 5 ; смещение - адрес маски цифры 5<br />
  207. ldi ZH,High(const_label *2) ;загружаем адрес начала маски<br />
  208. ldi ZL,Low(const_label *2)<br />
  209. add ZL,temp<br />
  210. <strong>brcc add_8</strong><br />
  211. <strong> inc ZH</strong><br />
  212. <strong> add_8:</strong> lpm ;маска окажется в регистре r0<br />
  213. &nbsp;<br />
  214. Листинг №4</code><br />
  215. Плюсы – не задействованы дополнительные регистры</p>
  216. <p><strong>И</strong>ли так:</p>
  217. <p><code>.def temp = r16 ; в области определений<br />
  218. ...<br />
  219. ldi temp, 5 ; смещение - адрес маски цифры 5<br />
  220. ldi ZH,High(const_label *2) ;загружаем адрес начала маски<br />
  221. ldi ZL,Low(const_label *2)<br />
  222. add ZL,temp<br />
  223. <strong>clr temp</strong><br />
  224. <strong> adc ZH,temp</strong><br />
  225. lpm ;маска окажется в регистре r0<br />
  226. &nbsp;<br />
  227. Листинг №5</code></p>
  228. <p><strong>И</strong>ли так – если содержимое temp терять не хочется, и есть свободный регистр:</p>
  229. <p><code>; в области определений<br />
  230. .def zero_REG = r1 ; можно использовать регистр из диапазона r1…r29, кроме r0 и r16<br />
  231. .def temp = r16 ; поскольку r0 занят под команду lpm, а r16 под рабочий регистр temp<br />
  232. ...<br />
  233. clr zero_reg ; в области стартовой инициализации<br />
  234. ...<br />
  235. ldi temp, 5 ; смещение - адрес маски цифры 5<br />
  236. ldi ZH,High(const_label *2) ;загружаем адрес начала маски<br />
  237. ldi ZL,Low(const_label *2)<br />
  238. add ZL,temp<br />
  239. <strong>adc ZH,zero_reg</strong><br />
  240. lpm ;маска окажется в регистре r0<br />
  241. &nbsp;<br />
  242. Листинг №6</code><br />
  243. <strong>И</strong>ли даже так, но в этом случае в temp нельзя грузить значение &#8220;0&#8221;, только больше:</p>
  244. <p><code>.def temp = r16 ; в области определений<br />
  245. ...<br />
  246. ldi temp, 5 ; смещение - адрес маски цифры 5<br />
  247. <strong>neg temp</strong> ; превращаем в отрицательное число<br />
  248. ldi ZH,High(const_label *2) ;загружаем адрес начала маски<br />
  249. ldi ZL,Low(const_label *2)<br />
  250. <strong>sub ZL,temp ; вычитание отрицательного числа</strong><br />
  251. <strong> sbci ZH, (-1) ; да с учетом переноса даёт сложение</strong><br />
  252. lpm ;маска окажется в регистре r0<br />
  253. &nbsp;<br />
  254. Листинг №7</code></p>
  255. <p><strong>Е</strong>сть ещё один вариант: если длина блока не превышает 256 байт и позволяет размер программы, директивой <strong>.org</strong> разместить блок по адресу, к примеру $0700 (для ATTiny2313 это последние 256 байт памяти программ) , в этом случае перенос можно не учитывать, потому что он просто не возникнет. В этом случае код из листинга №2 можно использовать без изменений.</p>
  256. <p>Разумеется, область применения арифметической операции сложения 16-ти и 8-и битных чисел довольно широка, и совершенно не ограничивается приведённым примером.</p>
  257. <p>Второй случай, инкремент 16-битного числа, рассмотрим позже.</p>
  258. <p>Литература:<br />
  259. (1) Юрий Ревич, &#8220;Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера&#8221;, изд. &#8220;БХВ-Петербург&#8221;, 2008 г.</p>
  260. ]]></content:encoded>
  261. </item>
  262. <item>
  263. <title>Касперский &#8211; гори в аду!</title>
  264. <link>http://www.helpsoft.lv/2014/02/10/kasperskiy-gori-v-adu/</link>
  265. <dc:creator><![CDATA[geliard]]></dc:creator>
  266. <pubDate>Mon, 10 Feb 2014 23:23:58 +0000</pubDate>
  267. <category><![CDATA[Бардачок]]></category>
  268. <category><![CDATA[regedit]]></category>
  269. <category><![CDATA[windows 7]]></category>
  270. <category><![CDATA[антивирусы]]></category>
  271. <category><![CDATA[Касперский]]></category>
  272. <category><![CDATA[реестр]]></category>
  273. <category><![CDATA[сбой загрузки]]></category>
  274. <guid isPermaLink="false">http://www.helpsoft.lv/?p=255</guid>
  275.  
  276. <description><![CDATA[Хелло! В глубоком возмущении отложил насущные дела для того чтобы выложить свои эмоции. Провел незабываемые полчаса в кровопролитной битве с тупузмом которым был одарен благодаря поделке незабвенного Касперского, Евгения Валентиновича &#8211; по версии педивикии &#8211; &#8220;российского программиста, одного из ведущих мировых специалистов в сфере информационной безопасности&#8221;. Ладно, про безопасность может спору особого и нет, но как [&#8230;]]]></description>
  277. <content:encoded><![CDATA[<p>Хелло!<br />
  278. В глубоком возмущении отложил насущные дела для того чтобы выложить свои эмоции.<br />
  279. <span style="line-height: 1.714285714; font-size: 1rem;">Провел незабываемые полчаса в кровопролитной битве с тупузмом которым был одарен благодаря поделке незабвенного Касперского, Евгения Валентиновича &#8211; по версии педивикии &#8211; &#8220;российского программиста, одного из ведущих мировых специалистов в сфере информационной безопасности&#8221;. Ладно, про безопасность может спору особого и нет, но как насчет юзабилити и вообще отношению к пользователю? 99% которых имеют весьма скромные познания в компе, выходящие за рамки Internet Explorer/Skype/MS Office? С другой стороны Касперский пашет поле на котором процветают всех мастей траблешутеры и Одмины.</span><br />
  280. <span id="more-255"></span><br />
  281. Вообщем, дело вот в чем. Мне понадобилось пошарить по хакерским сайтам в поисках одного редкого кряка. Для того чтобы сделать это более менее безопасно, я решил поставить триальную версию Kaspersky Internet Security 2014. Несмотря на богатый ассортимент сторонних продуктов, мой выбор был обусловлен восхищенными воплями одного из постоянных клиентов, который пододвигает меня на установку Касперского на компах в его офисах. Скаченная с офф.сайта программа, после завершения инсталляции, цинично отказала мне в пробной регистрации, сославшись на некие сетевые проблемы. Я лениво поискал причину, и поскольку после 3 попыток ничего не вышло, пожал плечами и нажал волшебную кнопку &#8220;Удалить Kaspersky Internet Security 2014&#8221;. То была моя роковая ошибка.</p>
  282. <p>Программа натужно стерлась, попросив рестарт. После рестарта, на экране ввода пароля к учетке, выяснилось &#8211; отказали клавиатура и мышь. Подумав, что дело, видимо, в драйвере USB я, немного обескуражено, пошел рыться по шкафам. Найденная древняя PS/2 клавиатура дело не продвинула &#8211; клава и мышь полностью отказали.<br />
  283. Дело здесь в том, что вообщем-то с благой целью защиты от логгеров, касперский подкидывает с систему свой собственный драйвер. При удалении, они они стераются, но система это видит не сразу, а лишь после рестарта и логина пользователя. После прогрузки оси, в течении минуты система сама находит нужные драйверы. Но это происходит не всегда, и форум касперского тому подтверждение, плюс в при наличии пароля поиск драйвера автоматически не производится.</p>
  284. <p>Дальше, пляски с бубном. По ряду причин, восстановить систему назад на трехдневную точку восстановления для меня не представлялось возможным из-за некоторых ключевых изменений в системе. Единственный выход в данной ситуации, вручную править реестр в ключах:<br />
  285. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318} <strong>UpperFilters=kbdclass</strong> (для клавиатуры)<br />
  286. HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\Class\ {4D36E96F-E325-11CE-BFC1-08002BE10318} <strong>UpperFilters=mouclass </strong>(для мышки)</p>
  287. <p>К сожалению, как назло, оставил все причиндалы в офисе и под рукой не оказалось ничего кроме флешки с инсталляцией Windows 7.</p>
  288. <p>Далее как всегда по пунктам:</p>
  289. <ol>
  290. <li>Загрузка до экрана выбора языка инсталляции</li>
  291. <li>Вход с командную строку при помощи SHIFT + F10</li>
  292. <li>Далее, самый простой вариант, запустить, если он проинсталлирован, файл-менеждер, чтобы не писать команды вручную. Сначала, я установил было FAR, а потом вспомнил про Total Commander.</li>
  293. <li>Подменяем файлы реестра в папке Windows\System32\config на файлы из папки RegBack предварительно сохранив оригиналы. По временной метке было видно, что файлы у меня 3-ех дневной давности, что даст (и дало) кривую но тем не менее работающую систему с клавиатурой и мышью.</li>
  294. <li>Загружаемся в Windows, вводим пароль &#8211; мышка и клава работают, все ок.</li>
  295. <li>Далее, открываем regedit, выделяем HKey_Local_Mashine, жмем Файл/Подгрузить куст (реестра). Находим предварительно сохраненный файл реестра SYSTEM и подгружаем его в реестр под произвольным именем.</li>
  296. <li>Правим ключи реестра, удаляя все лишнее из строкового параметра UpperFilters.</li>
  297. <li>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318} UpperFilters=kbdclass</li>
  298. <li>HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\Class\ {4D36E96F-E325-11CE-BFC1-08002BE10318} UpperFilters=mouclass</li>
  299. <li>Сохраняем, выгружаем куст, перезагружаемся в инсталлятор. Через командную строку  входим в файл менеджер и заменяем текущие файлы в папке Windows\System32\config на те что были нами предварительно сохранены, включая, самое главное, отредактированный файл реестра SYSTEM.</li>
  300. <li>После этого окошки грузятся и работают как им и положено <del>криво</del></li>
  301. </ol>
  302. <p>Маху я дал в той части что не воспользовался их родной утилитой kavremover которая все трет вроде как довольно безболезненно. Однако, имхо, логично о таких возможных проблемах пользователя как-то информировать и/или включать эту прогу в пакет инсталляции, а не заставлять постфактум грузиться с различных лайфсиди и ее запускать. Вообщем, написал им в тех. поддержку что они козлы и пусть горят в аду.</p>
  303. <p><span style="line-height: 1.714285714; font-size: 1rem;">ЗЫ. Кстати, только сейчас пришло мне в голову что можно было работу по редактированию реестра сократить по </span><a style="line-height: 1.714285714; font-size: 1rem;" href="http://www.helpsoft.lv/2013/08/20/zachem-v-reestre-neskolko-hklm-system-controlset00x/">методу коллеги Lexleo</a><span style="line-height: 1.714285714; font-size: 1rem;">. Всего-то в подгруженном кусте надо было сменить 1 цифру.</span></p>
  304. ]]></content:encoded>
  305. </item>
  306. <item>
  307. <title>Скоростной снос пароля пользователя Windows 7</title>
  308. <link>http://www.helpsoft.lv/2014/01/31/skorostnoy-snos-parolya-polzovatelya-windows-7/</link>
  309. <dc:creator><![CDATA[geliard]]></dc:creator>
  310. <pubDate>Fri, 31 Jan 2014 14:02:32 +0000</pubDate>
  311. <category><![CDATA[Бардачок]]></category>
  312. <category><![CDATA[Tips & Tricks]]></category>
  313. <category><![CDATA[windows 7]]></category>
  314. <guid isPermaLink="false">http://www.helpsoft.lv/?p=249</guid>
  315.  
  316. <description><![CDATA[Скоростная смена пароля пользователя при помощи инсталлятора семерки. Очень быстро и удобно, особенно при наличии установочной флешки. Никаких плясок с бубнами и прочими ERD Commander&#8217;aми. На все про все уходит 2 минуты. Для смены пароля воспользуемся функцией залипания клавиш, которая по умолчанию включена в системе. Эту функцию реализует небольшая утилита sethc.exe в системном каталоге. Прелесть этой [&#8230;]]]></description>
  317. <content:encoded><![CDATA[<p>Скоростная смена пароля пользователя при помощи инсталлятора семерки. Очень быстро и удобно, особенно при наличии установочной флешки. Никаких плясок с бубнами и прочими ERD Commander&#8217;aми. На все про все уходит 2 минуты.</p>
  318. <p><span style="line-height: 1.714285714; font-size: 1rem;">Для смены пароля воспользуемся функцией залипания клавиш, которая по умолчанию включена в системе. Эту функцию реализует небольшая утилита sethc.exe в системном каталоге. Прелесть этой утилиты в том, что она запускается даже на экране выбора пользователя. Предлагаю заменить эту опцию на что-то более полезное, скажем на cmd.exe. Из запущенной системы сделать это не удастся, для этого и понадобится инсталлятор системы.</span></p>
  319. <p>Дальше по шагам:</p>
  320. <ol>
  321. <li>Загружаемся с установщика</li>
  322. <li>На первом экране установки, входим с командную строку по нажатию SHIFT + F10</li>
  323. <li>Определяем системный диск просматривая корневой каталог командой dir (обычно это диск D)</li>
  324. <li>Сохраняем оригинальный файл sethc.exe в удобное место.Я, лично, копирую в корень &#8211; copy d:\windows\system32\sethc.exe d:\</li>
  325. <li>Подменяем утилиту на оболочку командной строки &#8211; copy d:\windows\system32\cmd.exe d:\windows\system32\sethc.exe</li>
  326. <li>Перезагружаемся и на экране выбора пользователя быстро 5 раз нажимаем Shift (или Alt или Ctrl) и попадаем в командную оболочку с правами администратора.</li>
  327. <li>Далее подменяем пароль командой &#8211; net user имя_пользователя новый_пароль</li>
  328. <li>Профит</li>
  329. </ol>
  330. <p>Для возвращения системы в исходное положение, загружаемся  с установщика, входим в консоль и выполняем команду &#8211; copy d:\sethc.exe d:\windows\system32\sethc.exe<code><br />
  331. </code></p>
  332. <p>Впрочем, этот маленький бэкдор иногда бывает полезно и оставить для последующего использования <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  333. ]]></content:encoded>
  334. </item>
  335. <item>
  336. <title>Как добавить статический блок в страницу</title>
  337. <link>http://www.helpsoft.lv/2014/01/23/kak-dobavit-staticheskiy-blok-v-stranitsu/</link>
  338. <dc:creator><![CDATA[admin]]></dc:creator>
  339. <pubDate>Thu, 23 Jan 2014 15:04:43 +0000</pubDate>
  340. <category><![CDATA[Magento]]></category>
  341. <guid isPermaLink="false">http://www.helpsoft.lv/?p=240</guid>
  342.  
  343. <description><![CDATA[ Сначала создаётся сам статический блок: CMS &#62; Static Block &#62; Add New Block Запоминаем для себя идентификатро блока, для примера возьмем myblock_id  Затем вставляем в страницу: CMS &#62; Pages выбираем нужную. Теперь внимание, способы вставки в разделы Content и Design различаются. Для раздела Content: {{block type="cms/block" block_id="myblock_id" template="cms/content.phtml"}} Для раздела Design: &#60;block type="cms/block" name="name_myblock_id" template="cms/content.phtml"&#62; [&#8230;]]]></description>
  344. <content:encoded><![CDATA[<p><strong> Сначала</strong> создаётся сам статический блок:<br />
  345. CMS &gt; Static Block &gt; Add New Block<br />
  346. Запоминаем для себя идентификатро блока, для примера возьмем <em>myblock_id</em></p>
  347. <p><strong> Затем</strong> вставляем в страницу:<br />
  348. CMS &gt; Pages<br />
  349. выбираем нужную.</p>
  350. <p>Теперь внимание, способы вставки в разделы Content и Design различаются.</p>
  351. <p>Для раздела <strong>Content:</strong></p>
  352. <p><code>{{block type="cms/block" block_id="<em>myblock_id</em>" template="cms/content.phtml"}}</code><br />
  353. Для раздела <strong>Design:</strong><br />
  354. <code><br />
  355. &lt;block type="cms/block" name="name_myblock_id" template="cms/content.phtml"&gt;<br />
  356. &lt;action method="setBlockId"&gt;&lt;block_id&gt;<em>myblock_id</em>&lt;/block_id&gt;<br />
  357. </code><code>  &lt;/action&gt;<br />
  358. &lt;/block&gt;<br />
  359. </code><br />
  360. В этом случае name_myblock_id может быть любым.</p>
  361. ]]></content:encoded>
  362. </item>
  363. <item>
  364. <title>Хозяйке на заметку</title>
  365. <link>http://www.helpsoft.lv/2014/01/05/hozayke-na-zametku/</link>
  366. <dc:creator><![CDATA[geliard]]></dc:creator>
  367. <pubDate>Sun, 05 Jan 2014 15:19:30 +0000</pubDate>
  368. <category><![CDATA[Бардачок]]></category>
  369. <category><![CDATA[оптимизация]]></category>
  370. <category><![CDATA[производительность]]></category>
  371. <guid isPermaLink="false">http://www.helpsoft.lv/?p=230</guid>
  372.  
  373. <description><![CDATA[Небольшой финт ушами, позволяющий сделать работу на слабой системе немного комфортнее. Имеет смысл для быстрой ручной настройки системы, так как в большинстве своем присутствует как опция в пакетах оптимизации. Суть проста &#8211; ускорение появления всех меню и их подпунктов на экране. В &#8220;Редакторе реестра&#8221; необходимо найти и открыть узел HKEY_CURRENT_USER\Control Panel\Desktop. В параметре MenuShowDelay меняем значение по [&#8230;]]]></description>
  374. <content:encoded><![CDATA[<p>Небольшой финт ушами, позволяющий сделать работу на слабой системе немного комфортнее. Имеет смысл для быстрой ручной настройки системы, так как в большинстве своем присутствует как опция в пакетах оптимизации. Суть проста &#8211; ускорение появления всех меню и их подпунктов на экране.</p>
  375. <p>В &#8220;Редакторе реестра&#8221; необходимо найти и открыть узел HKEY_CURRENT_USER\Control Panel\Desktop. В параметре MenuShowDelay меняем значение по умолчанию с 400 миллисекунд на желаемое.</p>
  376. <p><a href="http://www.helpsoft.lv/wp-content/uploads/2014/01/menushowdelay.jpg"><img loading="lazy" alt="menushowdelay" src="http://www.helpsoft.lv/wp-content/uploads/2014/01/menushowdelay-300x133.jpg" width="300" height="133" /></a></p>
  377. <p>Лично, я обычно ставлю 25 миллисекунд, Чтобы изменения вступили в силу, надо завершить сеанс и зайти в систему снова или просто перезагрузиться.</p>
  378. ]]></content:encoded>
  379. </item>
  380. <item>
  381. <title>&#8220;Надувной&#8221; хард от WD</title>
  382. <link>http://www.helpsoft.lv/2014/01/02/naduvnoy-hard-ot-wd/</link>
  383. <dc:creator><![CDATA[admin]]></dc:creator>
  384. <pubDate>Thu, 02 Jan 2014 21:50:44 +0000</pubDate>
  385. <category><![CDATA[По горячим следам]]></category>
  386. <guid isPermaLink="false">http://www.helpsoft.lv/?p=224</guid>
  387.  
  388. <description><![CDATA[Очередной пациент с запросом на починку  XP-шных &#8220;окошек&#8221;. Перво-наперво лезу в блок питания. Не зря, три вздутых ёмкости. Меняю, чищу, колю масло в вентилятор &#8211; штатные процедуры. Запускаюсь &#8211; &#8220;NTLDR is missing&#8221;. Гружу Acronis Disk Director Suite &#8211; ругается на ошибку в 700-миллионном каком-то секторе. Говорю ему &#8211; игнорировать все ошибки, DDS от такого счастья [&#8230;]]]></description>
  389. <content:encoded><![CDATA[<p>Очередной пациент с запросом на починку  XP-шных &#8220;окошек&#8221;.<br />
  390. Перво-наперво лезу в блок питания. Не зря, три вздутых ёмкости. Меняю, чищу, колю масло в вентилятор &#8211; штатные процедуры.<br />
  391. Запускаюсь &#8211; &#8220;NTLDR is missing&#8221;. Гружу Acronis Disk Director Suite &#8211; ругается на ошибку в 700-миллионном каком-то секторе. Говорю ему &#8211; игнорировать все ошибки, DDS от такого счастья мёртво виснет. Хард, на минуточку, 320 Gb, у него по определению 600 с копейками миллионов секторов, но никак не 700, арифметику ещё не отменили. Ладно, на тебе MHDD. Число секторов показывает штатное, поверхность тоже годная.<br />
  392. Призадумался. Из озорства загрузил Acronis True Image. Ошибки всё тех же несуществующих секторов, но прогрузился. Так, разделы, размеры&#8230; Мамо ж дорогое&#8230; На харде в 320 гигов четыре раздела, один из которых аж 850 гигов. Удаляться разделы отказываются.<br />
  393. Подцепил на другую машину с виндой, запустил Acronis DDS уже из-под неё. Четыре раздела, один из них на 320 гигов, остальные  &#8211; по мелочи, но слагаемые всё равно больше суммы.<br />
  394. От броска в мусорник железяку спасло только чудо. Дай, думаю, у производителя на сайте пошуршу. Нашлась утилита &#8211; <b>Data Lifeguard Diagnostic. </b>Проверил &#8211; не видит оно ошибок. Решился на крайность &#8211; потереть поверхность. Утилита предложила скоростной режим: пишет нули в первый и последний миллион (кажется) секторов. Согласился. На выходе, естественно, хард без единой партиции. Разбивка, формат&#8230; Заработал.<br />
  395. Как я понял, у харда был замусорен Master Boot Record, часть отвечающая за количество и размер партиций. А утилита его похоронила, и копию его резервную, нездоровую &#8211; тоже.<br />
  396. В общем &#8211; SOLVED!</p>
  397. ]]></content:encoded>
  398. </item>
  399. <item>
  400. <title>Перевернутое изображение с веб камеры asus (камера перевернута)</title>
  401. <link>http://www.helpsoft.lv/2013/08/20/perevernutoe-izobrazhenie-s-veb-kameryi-asus-kamera-perevernuta/</link>
  402. <dc:creator><![CDATA[admin]]></dc:creator>
  403. <pubDate>Tue, 20 Aug 2013 19:00:05 +0000</pubDate>
  404. <category><![CDATA[Бардачок]]></category>
  405. <category><![CDATA[asus]]></category>
  406. <category><![CDATA[regedit]]></category>
  407. <category><![CDATA[registry]]></category>
  408. <category><![CDATA[камера перевернута]]></category>
  409. <guid isPermaLink="false">http://www.helpsoft.lv/?p=194</guid>
  410.  
  411. <description><![CDATA[Один из способов решения проблемы: находим в реестре следующий раздел: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0001\Settings Находим там ключ Flip, если его значение &#8220;0&#8221; &#8211; меняем на &#8220;1&#8221; и наоборот. Перезагружаемся. Возможна ситуация, что будет несколько подразделов: 0001\Settings, 0002\Settings &#8211; начинайте менять со старшего. Если ключа нет &#8211; создайте, тип DWORD.]]></description>
  412. <content:encoded><![CDATA[<p>Один из способов решения проблемы:<br />
  413. находим в реестре следующий раздел:</p>
  414. <pre><code class="php"><span class="selection_index" id="selection_index32"></span>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\<span class="keyword">Class</span>\{<span class="number">6</span>BDD1FC6-<span class="number">810</span>F-<span class="number">11</span>D0-BEC7-<span class="number">08002</span>BE2092F}\<span class="number">0001</span>\Settings</code></pre>
  415. <p>Находим там ключ Flip, если его значение &#8220;0&#8221; &#8211; меняем на &#8220;1&#8221; и наоборот.<br />
  416. Перезагружаемся.</p>
  417. <p>Возможна ситуация, что будет несколько подразделов: 0001\Settings, 0002\Settings &#8211; начинайте менять со старшего. Если ключа нет &#8211; создайте, тип DWORD.</p>
  418. ]]></content:encoded>
  419. </item>
  420. </channel>
  421. </rss>
  422.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//www.helpsoft.lv/feed/

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda