<?xml version="1.0" encoding="windows-1251"?>
			<rss version="2.0">
				<channel>
					<title>Электроника Программирование Сайтостроение</title> 
					<link>http://acvarif.info/</link> 
					<description>Информация для схемотехников программистов и веб-разработчиков</description> 
					<language>ru</language> 
					<copyright>© Acvarif</copyright> 
					<managingEditor>ygusin@gmail.com</managingEditor> 
					<webMaster>ygusin@gmail.com</webMaster> 
					<image>
						<title>Электроника Программирование Сайтостроение</title> 
						<url>http://acvarif.info/images/logo.gif</url> 
						<link>http://acvarif.info/</link> 
					</image>
			<item>
				<title>Как прошить и отладить ARM микроконтроллер</title>
				<link>http://acvarif.info/electronics/electronics3.html</link>
				<description>&lt;p&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgnews/ielectronics3.jpg&quot; alt=&quot;Симуляция протокола передачи данных Modbus&quot; hspace=&quot;10&quot; border=&quot;0&quot; align=&quot;left&quot;&gt;Прошить flash память любого &lt;a href=&quot;http://acvarif.info/progmk/progmk7.html&quot;&gt;ARM микроконтроллера&lt;/a&gt; достаточно просто если для этого есть все необходимые отладочные средства, например USB отладчик типа J-Link. Но если такового не имеется, то вполне можно воспользоваться простейшим программатором-отладчиком типа Wiggler, который подключается к параллельному LPT порту персонального компьютера.&lt;/p&gt;
&lt;p&gt;Кстати один из возможных вариантов Wiggler - универсальный &lt;a href=&quot;http://acvarif.info/elprofit/adapter/uadpt.html&quot;&gt;адаптер&lt;/a&gt; программатор. Для самостоятельного изготовления вот небольшой  &lt;a href=&quot;http://acvarif.info/Wiggler_download.html&quot;&gt;архив&lt;/a&gt; с документацией (различного рода принципиальные схемы и описание) на Wiggler. Обратите внимание, что Jtag адаптер должен иметь двадцатиконтактный выходной разъем. &lt;/p&gt;
&lt;p&gt;Теперь несколько слов о том как пользоваться адаптером. Для использования адаптера в качестве программатора и отладчика для ARM микроконтроллеров необходима среда IAR (как один из вариантов) и установленный драйвер OCD командер, который поставляется со средой (находится в папке drivers/Macraigor) в виде установочного файла ocd_dbgr.exe. Для того, чтобы работал драйвер необходимо в установках проекта на вкладке Debugger/Driver выбрать &amp;quot;Macraigor&amp;quot;, а на вкладке Macraigor/OCD Interface device выбрать &amp;quot;Wiggler&amp;quot;&lt;/p&gt;
&lt;p&gt;Для использования адаптера Wiggler для программирования и отладки Arm вполне можно воспользоваться RDI драйвером от компании &lt;a href=&quot;http://www.hjtag.com/en/xz.asp?typeid=21&quot; target=&quot;_blank&quot;&gt;H-Jtag&lt;/a&gt;. После установки программу нужно настроить для работы в среде IAR, как показано на картинке ниже. &lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgnews/ielectronics3_1.jpg&quot; alt=&quot;Настройка H-Jtag RDI&quot; width=&quot;433&quot; height=&quot;397&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Далее нужно настроить собственно IAR &lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgnews/ielectronics3_2.jpg&quot; alt=&quot;Настройка Iar Arm RDI&quot; width=&quot;564&quot; height=&quot;869&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Для наглядности ниже скриншет программирования с помощью адаптера Wiggler и H-Jtag современного ARM микроконтроллера LPC2478. &lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgnews/ielectronics3_3.jpg&quot; alt=&quot;Программирование ARM RDI Wiggler&quot; width=&quot;550&quot; height=&quot;367&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ну и на всякий пожарный случай собственно драйвер &lt;noindex&gt;&lt;a href=&quot;http://acvarif.info/4tpp4kieg_download.html&quot; target=&quot;_blank&quot;&gt;H-Jtag&lt;/a&gt;&lt;/noindex&gt;. Для его установки нужно всего лишь распаковать архив и запустить установочный файл. После установки,  перезагрузки системы, настройки H-Jtag и Iar можно подключать Wiggler и работать с Arm микроконтроллером. &lt;/p&gt;
</description>
				<pubDate>Sat, 28 Jan 2012 22:15:43 +0400</pubDate>
			</item>
			<item>
				<title>Синтезатор частоты AD9832 на базе SPI STM32F2xx</title>
				<link>http://acvarif.info/progmk/progmk10.html</link>
				<description>&lt;script src=&quot;http://acvarif.info/chili/jquery-1.3.2.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; 
&lt;script src=&quot;http://acvarif.info/chili/jquery.chili-2.2.js&quot; type=&quot;text/javaScript&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot;&gt;    
ChiliBook.recipeFolder = &quot;/chili/&quot;;
&lt;/script&gt; 
&lt;p&gt;&lt;img vspace='5' hspace='10' vspace=&quot;5&quot; hspace=&quot;7&quot; align=&quot;left&quot; src=&quot;http://acvarif.info/images/imgnews/iprogmk10.jpg&quot; alt=&quot;Синтезатор частоты на DDS AD9832 + STM32F217&quot;&gt;Синтезатор частоты AD9832 довольно таки избитая тема. И тем не менее время от времени приходится возвращаться к  DDS для проведения тех или иных тестов. В данном посте описан один из возможных способов управления DDS AD9832 с помощью SPI нтерфейся микроконтроллера STM32F2xx. Такой вариант достаточно удобен, поскльку позволяет посылать команды на AD9832 в виде 16 битных слов с нужным расположением битов - старшими вперед. &lt;/p&gt;
&lt;p&gt;Прежде чем привести простейший код инициализации SPI STM32F2xx для работы с синтезатором частоты AD9832 полезно пройтись по &lt;a href=&quot;http://www.analog.com/en/rfif-components/direct-digital-synthesis-dds/ad9832/products/tools-software-simulation-models/index.html&quot; target=&quot;_blank&quot;&gt;интерактивным программам&lt;/a&gt; позволяющим не только рассчитать и представить  код соответствующий нужной частоте, который нужно загружать в регистры частоты DDS, но и представить предполагаемый спектр сформированного с помощью DDS сигнала.&lt;/p&gt;
&lt;p&gt;Итак простейший вариант формирования синусоидального сигнала на базе DDS AD9832 это последовательное выполнение нескольких команд по сбросу, загрузке регистров частоты и пуску DDS. Для более полной информации ниже представлена картинка со стандартной схемой подключения AD9832. &lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgnews/iprogmk10_1.jpg&quot; alt=&quot;Схема подключения синтезатора частоты AD9832&quot; width=&quot;550&quot; height=&quot;388&quot; /&gt;&lt;/p&gt;
&lt;p&gt;C14 - 100 nF, C23 - 100 nF, R8 - 50 Ohm (выход сигнала), R7 - 300 Ohm, R6 - 3,9 k, C18 - 10 nF, C17 - 10 nF&lt;br /&gt;
  1 - Корпус. Аналоговое и цифровое питание на девайсик можно подавать от одного источника напряжения через резисторы 50...100 Ohm&lt;/p&gt;
&lt;p&gt;Для примера, чтобы получить выходную частоту 1 КГц - при MCLK 12,5 мГц порядок загрузки Ad9832 будет следующий: &lt;/p&gt;
&lt;p&gt;0xF800 - сброс&lt;br /&gt; 
0x 3300 - загрузка регистра FREQ0 REG 8 H MSBs&lt;br /&gt;
0x2205 - загрузка регистра FREQ0 REG 8 L MSBs&lt;br /&gt;
0x313e - загрузка регистра FREQ0 REG 8 H LSBs&lt;br /&gt;
0x202d - загрузка регистра FREQ0 REG 8 L LSBs&lt;br /&gt;
0xc000 - пуск синтезатора&lt;/p&gt;
&lt;p&gt;При этом загрузка каждого слова должна сопровождаться отрицательным сигналом на входе FSYNC. В дальнейшем перестройка DDS осуществляется только загрузкой  нужных регистров частоты. Поскольку выходная частота рассчитывается как: &lt;br /&gt;
  Fout = FREG0 * Fmclk / 2^32, где&lt;br /&gt;
  Fout - частота на выходе dds, Hz;&lt;br /&gt;
  FREG0 - значение регистра, определяющего частоту (32   бит);&lt;br /&gt;
  Fmclk - тактовая частота dds, Hz;&lt;br /&gt;
2^32 = 4   294 967 296.&lt;/p&gt;
&lt;p&gt;Решая это простое уровнение относительно FREG0, находим:&lt;br /&gt;
  FREG0 = (Fout /   Fmclk) * 2^32; &lt;br /&gt;
  И для частоты 1 kHz &lt;br /&gt;
FREG0 = (1 000 /12 500 000) * 2^32 = 343597 =   0x00053e2d.&lt;/p&gt;
&lt;p&gt;Итак функция инициализации SPI3 &lt;br /&gt;
  &lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;cplusplus&quot;&gt;
void SPI3_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef   SPI_InitStructure;

  // Output HSE clock (12.5 MHz) on MCO pin (PC9) to clock the AD9832 
  RCC_MCO2Config(RCC_MCO2Source_HSE, RCC_MCO2Div_2);

	// PC11 - NSS софтовый PС10 - SPI3 SCK	PС12 - SPI3 MOSI  
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOC, &amp;GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_MCO);
   
	// NSS: выход push-pull 
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
	GPIO_Init(GPIOC, &amp;GPIO_InitStructure);

	// SCK: выход push-pull 
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &amp;GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_SPI3);

	// MOSI: выход push-pull 
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &amp;GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_SPI3);
	
  // SPI Init
  SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx; 
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
	SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
	SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;   
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; 
   
  SPI_Init(SPI3, &amp;SPI_InitStructure);
  SPI_Cmd(SPI3, ENABLE);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ну и собственно функция загрузки AD9832 &lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;cplusplus&quot;&gt;
void SPI3_WriteWorld(int Data)
{
	Delay(10);
	// FSYNC в 0 
  GPIOC-&gt;ODR &amp;= ~GPIO_OTYPER_ODR_11;
	// Отправка данных (16 бит)
  SPI_I2S_SendData(SPI3, Data);
  // Жду пока буфер TX будет пустой
  while (SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE) == RESET)
	// Задержка подбирается  
	Delay(2500);
	// FSYNC в 1 
  GPIOC-&gt;ODR |= GPIO_OTYPER_ODR_11;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Данный код проверен на работоспособностьв демопроекте&lt;a href=&quot;http://acvarif.info/progmk/progmk9.html&quot;&gt; LwIp стека&lt;/a&gt; под платку SK-STM32F217&lt;/p&gt;
</description>
				<pubDate>Thu, 26 Jan 2012 12:07:41 +0400</pubDate>
			</item>
			<item>
				<title>PHP отладка в Zend Studio плюс Денвер часть 2</title>
				<link>http://acvarif.info/instruments/instruments3.html</link>
				<description>&lt;p&gt;&lt;img vspace='5' hspace='10' align=&quot;left&quot; src=&quot;http://acvarif.info/images/imgpages/instruments3.jpg&quot; alt=&quot;Zend Debugger Денвер&quot;&gt;Итак исходим из того, что вся необходимая подготовка к &lt;a href=&quot;http://acvarif.info/instruments/instruments2.html&quot;&gt;отладке&lt;/a&gt; PHP скриптов в IDE Zend  Studio совместно с сервером Денвер выполнена, запущен сервер Денвер, и программа Zend  Studio. Теперь для тестовой отладки скрипта Acvarif-CMS можно воспользоваться, например, браузером Firefox в котором установлен Zend Toolbar, можно все то же самое выполнять и из самой среды Zend  Studio, ведь в ней тоже имеется встроенный браузер.&lt;/p&gt;
&lt;p&gt;Для демонстрации и проверки этой возможности, можно например попробовать отладить, или симитировать отладку скрипта обработчика формы обратной связи mail.php, полный путь до скрипта X:/home/data/php/mail/mail.php.  Для этого в Zend Studio нужно перейти на вкладку Browser, в строке запроса набрать acvarifcms.ru/formmail.html, в окне появится форма обратной связи.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgpages/instruments3_1.jpg&quot; alt=&quot;Zend Studio отладка обработчика POST&quot; width=&quot;450&quot; height=&quot;273&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Теперь нужно установить режим отладки - All forms (POST), а показано на картинке ниже. Кстати режимов отладки может быть несколько All forms (POST) - один из них и означает что отладка будет вестись только с обработчиками метода POST, хотя в нашем случае вполне можно было-бы выбрать и режим All pages on this site. &lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgpages/instruments3_2.jpg&quot; alt=&quot;Режи отладки Zend Debugger&quot; width=&quot;500&quot; height=&quot;107&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Далее перейдем на вкладку Editor и поставим точку останова вначале mail.php.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgpages/instruments3_3.jpg&quot; alt=&quot;Режим ожидание Zend Debugger&quot; width=&quot;450&quot; height=&quot;233&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Затем можно вернуться в Browser и нажать на кнопку формы обратной связи &amp;quot;Послать&amp;quot;. Отладчик Zend Studio длжен перейти в режим отладки поместив курсор в начало файла index.php. Теперь можно нажать клавишу F5 и убедиться, что отладчик достигнет установленной в файле mail.php точки останова и перейдет в режим ожидания. Все. Цель достигнута. Теперь можно пошагово (F11) выполнять скрипт mail.php наблюдая в правом окне программы под названием &amp;quot;Debug Output&amp;quot;  результат его выполнения  как в текстовом так и в HTML формате. Дальнейший переход по ссылкам можно делать опять переключившись на вкладку Browser в центральном окне Zend Studio.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img vspace='5' hspace='10' src=&quot;http://acvarif.info/images/imgpages/instruments3_4.jpg&quot; alt=&quot;Пошаговая php отладка в Zend Studio&quot; width=&quot;500&quot; height=&quot;322&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Примерно таким образом можно выполнять отладку как отделных скриптов так и целых порталов. Для большей нагладности вместо вкладки Browser вполне можно пользоваться и обычным браузером со встроенным Zend тулбаром. Для ваших отзывов и замечаний ссылка для комментов ниже по тексту. &lt;/p&gt;
</description>
				<pubDate>Mon, 23 Jan 2012 16:42:02 +0400</pubDate>
			</item></channel>
    		</rss>
