пятница, 27 июня 2014 г.

CTS-PHD-1080P12X Flex PCB или шлейф для камеры Cisco / Tandberg

Пришли мне две камеры с порванными шлейфами, думал купить шлейф - оказалось очень сложно - его нет нигде.
Правда один, заказчик сам нашел, второй не понадобился но я все же спроектировал шлейф и отправил оценить стоимость изготовления:
10 штук около 2000 - 2500$ - один примерно так же :-)
Выкладываю проект в OrCAD PCB Editor и в Gerber файлах.
Может кому пригодиться - кто закажет 10 - пришлите мне один, в качестве благодарности :-)
http://www.powerc.ru/instrukcii/FlexPCB.zip?attredirects=0&d=1

понедельник, 10 декабря 2012 г.

Глобальные флаги в стиле Renesas

Для удобства работы как с отдельными битами так и целиком с байтом или скажем словом, удобно использовать вот такую конструкцию:


typedef struct {
union {
unsigned char BYTE;
struct{
unsigned char DUMMY: 5;
unsigned char FLAGFORFUTURE: 1;
unsigned char ADCBUSY: 1;
unsigned char UARTBUSY : 1;
}BIT;
}DATA;
}_GLOBAL_FLAGS;


Затем мы создаем эту структуру:

_GLOBAL_FLAGS GLOBAL_FLAGS;

Ну и теперь с ней можно работать например так (побайтно):

GLOBAL_FLAGS.DATA.BYTE = 0;

или так (побитно):

GLOBAL_FLAGS.DATA.BIT.UARTBUSY = 1;

четверг, 25 октября 2012 г.

TCP/IP стек для Renesas RX62N

Продвигается писанина стека протоколов TCP/IP для микроконтроллера Renesas RX62N.
Пока добился вот такого:


Reader 1 и Reader 2 - это считыватели RFID подключенные по Wiegand 26
Ну а Card number соответственно последние считанные карточки.

Еще не одолел TCP таймауты, быстрый повтор и т.д.

понедельник, 20 августа 2012 г.

Восстановление Mercedess DAS

Кому надо, тот поймет!
for XP recover is: starrecover
for Xentry is: killxentry
for DAS is: killdas
for WIS is: killwis

понедельник, 13 августа 2012 г.

TCP/IP стек для RX62N

Давно я не писал в своем блоге.
За это время, я успел написать недоделанный TCP/IP стек для Freescale MC9S12NE64 после чего отказался от нее в пользу Renesas RX62N и стал портировать его туда.
Так что у меня теперь есть два недоделанных стека :-)
На Renesas'е уже работает Ethernet/ARP/IP/ICMP/TCP и примитивный HTTP но с TCP пока еще дел полно. Сейчас сокет только один поддерживается, таймауты еще не сделаны вообще.
ЗАТО работает прием и передача фрагментированных IP пакетов. Например можно послать ICMP пинг с размером скажем 1900 байт, можно разбить его к тому же на скажем 5 фрагментов, да еще и заголовок с опциями послать, и все равно мы получим ответ.
Так же есть возможность задать MTU.
Так что работа, как говориться кипит...
Скоро, скоро, совсем скоро вы увидите как оно будет работать.

Защита батарейного медицинского прибора от переполюсовки батареи

Одним из условий стандарта IEC 60601-1 (наш аналог ГОСТ Р МЭК 60601-1), в случае батарейного питания, является безопасность неправильного подключения батареи.
Одним из простейших способов реализации данного условия, является включение в цепь батареи, диода. Однако на диоде будет нежелательное падение напряжения. И в целом КПД прибора снизится.
Альтернативным вариантом является использование MOSFET ключа, но мы рассмотрим более простую схему. Мы подключим в цепь батареи, самовосстанавливающийся предохранитель Polyfuse, а за ним, параллельно шинам питания, шунтирующий диод в обратном включении.
В случае, если пользователь неправильно подключит батарею, ток потечет через предохранитель и включенный в прямом направлении диод. Вследствие большого тока, предохранитель разорвет цепь. После нормального подключения батареи, работоспособность устройства восстановится.

Выбирать номиналы элементов защиты следует следующим образом:

1. Определить максимальный ток потребления прибора. Iconsump

2. Выбрать предохранитель, на ток, в 2 - 3 раза больше максимального тока потребления.
Ifuse = Iconsump * 2

3. Выбрать диод, с максимальным током, в 2 раза больше тока предохранителя.
Idiode = Ifuse * 2


среда, 22 июня 2011 г.

Библиотека для работы МК Renesas V850ES совместно с ЖК модулем

Библиотека предназначена для работы с модулями на контроллере KS0066U, HD44780U и совместимыми и микроконтроллером Renesas UPD70F3793 но может быть адаптирована под любой МК.
Питание дисплея осуществляется от 3.3V.
На вывод контраста подается отрицательное напряжение полученое на инвертирующем зарядовом насосе.
Подключение дисплея к МК осуществляется так:
ЖК модуль <-> uPD70f3793
-----------------------
DB0 <-> PDL0
DB1 <-> PDL1
DB2 <-> PDL2
DB3 <-> PDL3
DB4 <-> PDL4
DB5 <-> PDL5
DB6 <-> PDL6
DB7 <-> PDL7

RS -> PDL8
R/W -> PDL9
E -> PDL10
-----------------------
На таймере P генерируется ШИМ 200КГц и подается с вывода P35 на зарядовый насос.
Ограничивая ширину импульсов, можно регулировать контрастность дисплея.
Схема зарядового насоса:

Перед выполнением функций чтения/записи, надо вызвать LCD_init()

Функция LCD_write_command_or_data имеет два параметра - первый указывает что будем записывать - команды (LCD_COMMAND или LCD_COMMAND_NO_BF_CHECK) или данные (LCD_DATA или LCD_DATA_NO_BF_CHECK) а затем собственно команда или байт данных.
Приставка NO_BF_CHECK означает что не будем проверять флаг Busy от дисплея (на моем дисплее он работал не правильно).
Вот пример вывода двух цифр в верхнюю и нижнюю строки:

Запишем адрес начала верхней строки (0x80 потому что адрес 0x00 а первый бит - команда записи адреса)
LCD_write_command_or_data(LCD_COMMAND_NO_BF_CHECK, 0x80);

И выведем цифру 1
LCD_write_command_or_data(LCD_DATA_NO_BF_CHECK, (0x31);

Запишем адрес начала нижней строки (0xC0 потому что адрес 0x40 а первый бит - команда записи адреса получаем 11000000b тоесть 0xC0)
LCD_write_command_or_data(LCD_COMMAND_NO_BF_CHECK, 0xC0);

И выведем цифру 2
LCD_write_command_or_data(LCD_DATA_NO_BF_CHECK, (0x32);

Исходники написаны на C в среде IAR.
Скачать можно здесь:
uPD70F3793_LCD.zip