Home » Archive

Разработка

Written By: pashan on April 12, 2010 14 Comments

В продолжении поста об этом и вот этом.  Хотим рассказать чуть-чуть себе и нашим читателям почему и зачем мы собираемся прекратить использование плат на процессорах архитектуры Intel (Российского производства). Пока это касается только наших проектов в области энергетики, а дальше посмотрим. Процессорная плата сопоставимая по стоимости с дизельным двигателем это не то, что необходимо российским ВС в XXI [...]

Written By: Orange on December 25, 2009 No Comment

Как известно, в своих новых микроконтроллерных разработках КБ 13 отказалось от старой проверенной АтМеги в пользу гипернанотехнологичных процессоров AVR32.

В процессе работы с этими процессорами, мы столкнулись с различными багами. Что, в принципе, неудивительно при плотном общении с любой «новинкой»...

Один из багов был связан с usart в режиме rs-485.

Written By: Orange on December 18, 2009 No Comment

В процессе игр с атмелевской новинкой at32uc3a натолкнулись на интересное.
При объявлении глобального массива (или структуры) в начале программы (где-нить в районе мэйна — т.е., в итоге, по небольшим адрискам) и последующей попытке с-memcpy-ать в нее что-нибудь, проц ведет себя малость неадекватно.
Либо виснет, либо контроллеры периферии начинают глючить — неправильное чтение сдрама, висы усарта...
Небольшое гугленье показало,что мы не [...]

Written By: Orange on December 2, 2009 4 Comments

В продолжение.
Таки созрели написать нормальную функцию-конвертер

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
* swapBytes () — конвертирует порядок байт в буфере
* num — приведенный указатель на число
* n — размер в байтах
*/
int swapBytes(unsigned char * num, size_t n)
{
unsigned char tmp[n];
size_t cnt = n-1;
 
memcpy(tmp, num, n);
 
for(cnt=0; cnt<n; cnt++){
num[cnt] = tmp[(n-1)-cnt];
}
 
return 1;
}

Written By: Orange on November 12, 2009 4 Comments

Сопрягая разные железки, никогда не стоит забывать, что у каждого производителя свое королевство со своими правилами.
Если на AVR32 порядок байт — big-endian, то на x86 — интеловский, little-endian.
И, к примеру, тупо заслав от АЦП на cpc108 буфер unsigned short значений каналов, мы получим на процессоре совсем не то, что хотелось бы.
Магическая функция по конвертации из big-endian в [...]

Written By: Orange on October 22, 2009 2 Comments

Обнаружилась в АЦП нашем магия такая чуднАя — время от времени приходит от него на один байт больше, чем надо. Всегда в одном и том же месте, да один и тот же байт — \r. Вот оно как.
Колдунство это гадкое данные зело портило, и сумма контрольная сходилась плохо. Никак даже не сходилась, эх...

Грешили сначала на плату фаствеловскую [...]

Written By: Orange on August 1, 2009 2 Comments

Есть в фотоне такой виджет — PtList.
Собственно, предоставляет те же возможности, что и компонент с подобным названием в любой другой среде: формирование списков, получение индекса выбранных элементов и т.п.
Ну и, естественно, фотоновская фишка — создание на его основе других виджетов, наследующих те же свойства и возможности.

Как добавить в уже созданный экземпляр PtList список элементов? QSSL заботится о [...]

Written By: pashan on July 21, 2009 One Comment

Существуют различные системы качества типа Оборонсертифика или ИСО. Понятно, что наличие у нас данных сертификатов не говорит заказчику ни о чем - за ними может скрываться многое, а может и ничего. Да и не дело Инженеров обсуждать эти бюрократические, но несомненно важные для нашей Мегакорпорации бумаги. Наше дело — закупить, запрограммировать или спроектировать уникальное оборудования, для обеспечения стопроцентого [...]

Written By: Orange on July 21, 2009 No Comment

Забажил USART в режиме RS485. Непонятненько так забажил — то прерывания выдает, то не выдает, но стабильно забивает выделенный под прием буфер единичками.
Хорошо, что в буфере было сделано циклическое заполнение — до конца дошел, загоняйся с начала, а то программа падала бы без объяснения причин...

Written By: Orange on July 15, 2009 27 Comments

Многие недопрограммисты, привыкшие, что тонкие места в их программах отслеживает и запрещает компилятор, не любят С за то, что в нем есть магическая штучка — void *, с помощью которой возможны любые манипуляции с памятью. Например, он позволяет подобные фокусы:

1
2
3
4
5
6
7
8
9
10
int i=0,j=0;
signed short buff[16];
unsigned long adc_buff[16];
 
for(i=0,j=0;j&lt;16;i+=2,j++){
memcpy( (void *)adc_buff + (i + bus_p->flags.adc_read_pass)*sizeof(signed short),
(void *)buff + j*sizeof(signed short),
sizeof(signed [...]

© 2008—2012, Конструкторское Бюро №13