The LPC11xx IAP provides function to call the ISP in the BootROM from user code. Here's an example of how to use it. The code is based on UART example for LPC1114 (for LPCXpresso)

The first thing is that, if you have LPC11xx UART enabled, you need to disable it, including the interrupts

static void StopUART(void)
{
  uint32_t temp;

  /* Disable UART interrupts */
  LPC_UART->IER = 0;
  /* Disable UART interrupts in NVIC */
  NVIC_DisableIRQ(UART_IRQn);

  /* Ensure a clean start, no data in either TX or RX FIFO. */
  while (( LPC_UART->LSR & (LSR_THRE|LSR_TEMT)) != (LSR_THRE|LSR_TEMT) );
  while ( LPC_UART->LSR & LSR_RDR )
  {
temp = LPC_UART->RBR; /* Dump data from RX FIFO */
  }

  /* Read to clear the line status. */
  temp = LPC_UART->LSR;
}

Then, turn on Timer32B1, GPIO and IOCON block in the SYSAHBCLKCTRL, set the stack pointer to the BootROM's requirement, and execute the IAP command 57.

typedef void (*IAP)(unsigned int[], unsigned int[]);

static void ReinvokeISP(void) {
  IAP iap_entry = (IAP) 0x1fff1ff1;
  uint32_t command[5], result[4];

  /* make sure 32-bit Timer 1 is turned on before calling ISP */
  LPC_SYSCON->SYSAHBCLKCTRL |= 0x00400;
  /* make sure GPIO clock is turned on before calling ISP */
  LPC_SYSCON->SYSAHBCLKCTRL |= 0x00040;
  /* make sure IO configuration clock is turned on before calling ISP */
  LPC_SYSCON->SYSAHBCLKCTRL |= 0x10000;
  /* make sure AHB clock divider is 1:1 */
  LPC_SYSCON->SYSAHBCLKDIV = 1;

  /* Send Reinvoke ISP command to ISP entry point*/
  command[0] = 57;

  /* Set stack pointer to ROM value (reset default).
     This must be the last piece of code executed before calling ISP,
     because most C expressions and function returns will fail after
     the stack pointer is changed.
   */

  __set_MSP(*((uint32_t *) 0x1FFF0000)); /* inline asm */

  /* Invoke ISP. We call "iap_entry" to invoke ISP because the ISP entry
     is done through the same command interface as IAP. */

  iap_entry(command, result);

  // Code will never return!
}

Lastly, before you can run your new code (assuming you are upgrading / replacing the firmware using ISP), you will need to reset the MCU.

 

В данной статье расмоорим расчет простого транзисторного ключа включенного по приведенной ниже схеме.

Рис.1

В нашем случае R1 это сопротивление в цепи базы, а R2 это сопротивлени нашей нагрузки. Continue reading »

 

Пример конфигурационного файла MYSQL.

#Секция клиентов
[client]
# Порт для клиентов.
port = 3306
# Сокет.
socket = /var/run/mysqld/mysqld.sock

#Секция mysqk_safe
# Настройки для работы в режиме mysql_safe
<strong>[mysqld_safe]</strong>
#
socket = /var/run/mysqld/mysqld.sock
#
nice = 0

# Секйция mysqld
# Настройки для работы в режиме mysqld
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
skip-bdb
skip-federated
skip-locking
big-tables
set-variable = net_buffer_length=64M
set-variable = max_allowed_packet=16M
set-variable = myisam_sort_buffer_size=64M
set-variable = sort_buffer=64M
set-variable = max_connections=100
set-variable = key_buffer=32M
set-variable = table_cache=128
long_query_time = 360
record_buffer = 32M
max_connect_errors = 50
connect_timeout = 400

#innodb
innodb_buffer_pool_size = 150M
innodb_additional_mem_pool_size = 50M
innodb_thread_concurrency = 8

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[mysql]

[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M

[isamchk]
key_buffer        = 16M
sort_buffer_size = 16M</pre>
 

ITG-3200 – однокристальный 3-осевой MEMS гироскоп с цифровым выходом, оптимизированный для игр, 3D манипуляторов и 3D удаленного управления. Микросхема имеет повышенную температурную стабильность, избавляя от дополнительной калибровки. Уменьшенный, по сравнению с предыдущим поколением, уровень шума упрощает разработку устройств и повышает чувствительность к движениям.

Для оцифровки сигнала ITG-3200 имеет три 16-разрядных АЦП. Примененные в микросхеме технические новшества позволили на 67% уменьшить размер корпуса и на 50% снизить энергопотребление.

Гироскоп ITG-3200 обеспечивает высокую производительность, низкий уровень шума и низкую стоимость. Микросхема выдерживает удары с ускорением до 10000 g.
С целью увеличения гибкости в выборе источника питания ITG-3200, кроме вывода для питания аналоговой части — VDD, имеет отдельный вывод VLOGIC для питания I2C-интерфейса. Напряжение на выводе VLOGIC может быть в диапазоне 1,71 В…VDD. Потребляемый ток составляет 6,5 мА в рабочем режиме и 5 мкА в спящем. Continue reading »

 

MCP79410-I/MS и MCP79410-I/SN – это часы реального времени (RTC) с цифровой компенсацией для повышения точности часов/календаря, программируемым управлением выходом для универсальных схем, чувствительных к потребляемой мощности, автоматическим переключением на резервные источники питания, с запоминанием момента переключения, энергонезависимой памятью для хранения данных. Микросхеме требуется кварцевый резонатор на частоту 32,768 кГц. Отсчет времени ведется с использованием внутренних регистров. Для обмена данными используется шина I2C (100 кГц или 400 кГц).

Часы/календарь автоматически учитывают разную продолжительность месяца, включая високосные года. Допустимым является как 24-часовой, так и 12-часовой формат времени с индикацией AM/PM. В микросхеме имеются настраиваемые будильники с независимой установкой секунд, минут, часов, дня недели, числа или месяца. Используя программируемый вывод CLKOUT, от микросхемы можно получить выходной синхросигнал с частотой 32,768, 8,192, 4,096 кГц, 1 Гц или сигнал будильника. Continue reading »

 

Небольшая программа демонстрирующая работу с отдельной прямоугольной областью на изображении. Программа загружает изображение из файла image.jpg выделяет на нем область (cvSetImageROI) и с помощью функции cvAddS уменьшает каждую составляющую всех выделенных пиксей на 100, затем выделение сбрасывается вызовом функции cvResetImageROI.

#include "highgui.h"
#include "cv.h"
 
int main(int argc, char* argv[])
{
 IplImage* src = cvLoadImage("image.jpg");
 int x = 0;
 int y = 0;
 int width = 200;
 int height = 100;
 
 cvSetImageROI(src, cvRect(x,y,width,height));
 cvAddS(src, cvScalar(-100,-100,-100),src);
 cvResetImageROI(src);
 
 cvNamedWindow( "SetROI", 1 );
 cvShowImage( "SetROI", src );
 cvWaitKey();
 return 0;
}
 

Понадобилось работать с камерами с разрешением 1280×960 и более. При работе через встроенную библиотеку OPenCV (DirectDraw) возникли определенные проблемы с быстродействием и капризность к камерам, часть тестовых камер HD вообще не заработали.

Решил попробовать работать с библиотекой videoInput которую можно взять здесь.

Но в комплекте исходники и собранные библиотеки под VC2005,VC2008,Dev-C++,CW. Под Mingw32 в комплекте нет.

Поиски в Google принесли результат: библиотека videoInput скомпилированная MinGW 4.4.0 DW2, спасибо Kronen, автору Qt-OpenCv лежит здесь.

Для работы с библиотекой под MinGW32 я поступил следующим образом:

  • заголовочный файл videoInput.h я поместил в:  c:\dev\OpenCV-2.2.0\3rdparty\videoInput\Include\
  • саму библиотеку для MinGW32 и все дополнительные библиотеки в: c:\dev\OpenCV-2.2.0\3rdparty\videoInput

Continue reading »

 

Вот и я озаботился подобной проблемой.

И так, предположим, мы имеем нужный нам BIN файл, который нормально прошивается под Windows XP/7.

При подключении под Linux LPC1343 видится как страндартный диск, к примеру на /dev/sdc, тогда команды для прошивки девайса будут следующие:

 sudo mdel -i /dev/sdc ::/firmware.bin
 sudo mcopy -i /dev/sdc firmware.bin ::/
 sudo umount /dev/sdc

В принципе, кому надо могут оформить это для удобства в скрипт.

 

Как известно, в LPC1343 есть втроенный USB-bootloader.

При написании программы в среде Keil по умолчанию можем получит лишь iHex.

Для получения необходимного нам файла следует добавить следующие строки в настройку проекта (Flash\Configure Flash Tools...):

fromelf --bin "./flash/blinky.axf" --output "./flash/firmware.bin"
lpcrc.exe "./flash/firmware.bin"
Continue reading »
 

Свершилось чудо. Вновь потребовалась моя большая записная книжка, то есть этот блог.
Блог был перенесен с домашнего сервера на нормальную площадку и теперь я вновь буду им заниматься. Так что, простите все кому не успел ответить, теперь я буду бывать здесь регулярней.

© 2011 ADTL Blog Suffusion theme by Sayontan Sinha