реклама на сайте
подробности

 
 
13 страниц V  « < 8 9 10 11 12 > »   
Reply to this topicStart new topic
> Исходники программ и библиотек, у вас есть чем поделиться?
injen-d
сообщение Sep 13 2009, 13:36
Сообщение #136


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 10-10-07
Из: Воронежа
Пользователь №: 31 250



Цитата(zltigo @ Sep 13 2009, 17:04) *
Посмотрел. Это будет правильным решением sad.gif

Ну, именно от Вас я ожидал подобной фразы...
Аргументируйте, если не трудно.
Пусть будет мне наукой.

Я, конечно, не претендую на звание "образец стиля" в написании программ, если Вы это имели ввиду под чисто ремесленными навыками, это оттачивается с годами.
Нельзя ли конкретней? А то Вы только интригуете подобными фразами. Мне снизу не видно! laughing.gif

Сообщение отредактировал injen-d - Sep 13 2009, 13:12


--------------------
- Бендер, ты же робот, зачем тебе пить пиво?
- Незачем! Я могу бросить в любой момент!
Go to the top of the page
 
+Quote Post
sansnotfor
сообщение Oct 26 2009, 13:51
Сообщение #137


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 24-10-08
Пользователь №: 41 157



для работы с инкрементным энкодером Прикрепленный файл  encoder.rar ( 1.07 килобайт ) Кол-во скачиваний: 1019

для преобразования двоичных чисел в двоично десятичные и вывода на lcd Прикрепленный файл  bcd.rar ( 1.36 килобайт ) Кол-во скачиваний: 839

знакогенератор для LCD от Nokia3310 Прикрепленный файл  DriverNokia3310Tx.rar ( 6 килобайт ) Кол-во скачиваний: 732

библиотека для работы с LCD от Nokia3310 с видео буфером. нужно от 1 КБ ОЗУ. Прикрепленный файл  DriverNokia3310vb.rar ( 6.77 килобайт ) Кол-во скачиваний: 708
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Oct 27 2009, 15:16
Сообщение #138


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Модуль доступа к 16-и битным регистрам AVR (для avr-gcc).
CODE
=======================================================================
=====
#define avr_read_word_atomic(addr) \
(__extension__({ \
uint16_t __addr16 = (uint16_t)(addr); \
uint16_t __result; \
__asm__ __volatile__ \
( \
"in __tmp_reg__,__SREG__" "\n\t" \
"cli" "\n\t" \
"ldd %A0,%a1+0" "\n\t" /*lo*/ \
"out __SREG__, __tmp_reg__" "\n\t" \
"ldd %B0,%a1+1" /*hi*/ \
: "=r" (__result) /* output operands */ \
: "e" (__addr16) /* input operands */ \
: "memory" /* list of clobbered registers */ \
); \
__result; \
}))

// ============================================================================
#define avr_write_word_atomic(addr,value) \
(__extension__({ \
uint16_t __addr16 = ((uint16_t)(addr)); \
uint16_t __value = (uint16_t)(value); \
__asm__ __volatile__ \
( \
"in __tmp_reg__,__SREG__" "\n\t" \
"cli" "\n\t" \
"std %a1+1,%B0" "\n\t" /*hi*/ \
"out __SREG__, __tmp_reg__" "\n\t" \
"std %a1+0,%A0" /*lo*/ \
: /* output operands */ \
: "r" (__value), /* input operands */ \
"e" (__addr16) \
: "memory" /* list of clobbered registers */ \
); \
}))

Прикрепленные файлы
Прикрепленный файл  avr_reg16.zip ( 706 байт ) Кол-во скачиваний: 278
 


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 2 2009, 22:02
Сообщение #139


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(sansnotfor @ Oct 26 2009, 16:51) *
для работы с инкрементным энкодером Прикрепленный файл  encoder.rar ( 1.07 килобайт ) Кол-во скачиваний: 1019

для преобразования двоичных чисел в двоично десятичные и вывода на lcd Прикрепленный файл  bcd.rar ( 1.36 килобайт ) Кол-во скачиваний: 839

знакогенератор для LCD от Nokia3310 Прикрепленный файл  DriverNokia3310Tx.rar ( 6 килобайт ) Кол-во скачиваний: 732

библиотека для работы с LCD от Nokia3310 с видео буфером. нужно от 1 КБ ОЗУ. Прикрепленный файл  DriverNokia3310vb.rar ( 6.77 килобайт ) Кол-во скачиваний: 708


Добавлю-ка я вариант с учетверением количества импульсов валкодера. indent-ы в исходном тексте съела форма ответа на сообщение...

CODE
static uint_least8_t old_val;

void spool_encinterrupt(void)
{
uint_least8_t new_val = hardware_get_encoder_bits(); /* Состояние фазы A - в бите с весом 2, фазы B - в бите с весом 1 */

// dimensions are:
// old_bits new_bits
const static int_least8_t v [4][4] =
{
{
+0, /* 00 -> 00 stopped */
-1, /* 00 -> 01 rotate left */
+1, /* 00 -> 10 rotate right */
+0, /* 00 -> 11 invalid combination */
},
{
+1, /* 01 -> 00 rotate right */
+0, /* 01 -> 01 stopped */
+0, /* 01 -> 10 invalid combination */
-1, /* 01 -> 11 rotate left */
},
{
-1, /* 10 -> 00 rotate left */
+0, /* 10 -> 01 invalid combination */
+0, /* 10 -> 10 stopped */
+1, /* 10 -> 11 rotate right */
},
{
+0, /* 11 -> 00 invalid combination */
+1, /* 11 -> 01 rotate right */
-1, /* 11 -> 10 rotate left */
+0, /* 11 -> 11 stopped */
},
};


rotate += v [old_val][new_val];

old_val = new_val;
}

ISR(INT0_vect)
{
spool_encinterrupt();
}

ISR(INT1_vect)
{
spool_encinterrupt();
}

void encoder_clear(void)
{
rotate2 = 0;
disableIRQ();
rotate = 0;
tickcount = TICKCOUNT_MAX;
enableIRQ();
}
/* получение количества шагов и времени с последнего вызова. */
int
encoder_snapshot(
uint_least8_t * ticks,
uint_least8_t derate)
{
div_t h;
int hrotate;

disableIRQ();
if (tickcount != 0)
{
* ticks = tickcount;
tickcount = 0;
hrotate = rotate;
rotate = 0;
}
else
{
* ticks = 1;
hrotate = 0;
//hrotate = rotate;
//rotate = 0;
}
enableIRQ();

/* Ументшение разрешения валкодера в зависимости от установок в меню */
h = div(hrotate + rotate2, derate);

rotate2 = h.rem;

return h.quot;
}


/* получение "редуцированного" количества прерываний от валкодера.
* То что осталось после деления на scale, остается в накопителе
*/

int getRotateLoRes(void)
{
uint_least8_t ticks;
return encoder_snapshot(& ticks, ROTATE_LORES_DIV * hiresdiv);
}


Сообщение отредактировал Genadi Zawidowski - Nov 2 2009, 22:05
Go to the top of the page
 
+Quote Post
AndryG
сообщение Dec 28 2009, 11:20
Сообщение #140


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 23-05-05
Из: UA
Пользователь №: 5 317



Простой программный UART-передатчик. STX - Simple TX Удобно в Proteus нацепить на reset-вывод.
Код работает под IAR и CodeVisionAVR. (добавите WinAVR - буду рад добавить в исходник)
В архиве (функция и проекты IAR, CV, Proteus)

STX Rev.71
Go to the top of the page
 
+Quote Post
sansnotfor
сообщение Jan 2 2010, 23:31
Сообщение #141


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 24-10-08
Пользователь №: 41 157



Простой драйвер символьного lcd на основе контроллеров ks0066. Проверка флага занятости. Поддержка 4-ех и 8-ми разрядной шины. В архиве 2 варианта - для IARa и для WINAVR.
Прикрепленный файл  lcd_winstar.rar ( 3.92 килобайт ) Кол-во скачиваний: 762


Сообщение отредактировал sansnotfor - Jan 2 2010, 23:31
Go to the top of the page
 
+Quote Post
microsin
сообщение Mar 2 2010, 07:20
Сообщение #142


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 27-11-08
Пользователь №: 41 999



1. Библиотека V-USB (старое название AVR-USB) - программная реализация протокола USB на AVR. Есть примеры рабочих устройств USB и компутерных программ, работающих с этими устройствами. Библиотека бесплатная. Комментарии в библиотеке и примерах переведены на русский язык.
2. Макетные платы, на которых удобно применять библиотеку V-USB: AVR-USB-MEGA16, AVR-USB-TINY45.
3. Макетные платы с аппаратным интерфейсом USB: AVR-USB162, AT91SAM7X.
Go to the top of the page
 
+Quote Post
sansnotfor
сообщение Mar 14 2010, 23:57
Сообщение #143


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 24-10-08
Пользователь №: 41 157



Драйвер матричной клавиатуры 3х4. Подходит для любого компилятора, нужно только подключить соответствующих заголовочный файл мк. Позволяет подключать клавиатуру как к разным портам, так и к одному. Единственное условие - столбцы матрицы должны быть подключены к младшим разрядам порта, строки - к старшим.
Прикрепленные файлы
Прикрепленный файл  Keyboard_driver.rar ( 1.77 килобайт ) Кол-во скачиваний: 693
 
Go to the top of the page
 
+Quote Post
Kir85
сообщение Apr 4 2010, 13:28
Сообщение #144


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 24-05-09
Из: Нижний Новгород
Пользователь №: 49 495



Работа с графическим дисплеем MT-12232 на ATmega8.

Прикрепленный файл  mt_12232b.rar ( 118.31 килобайт ) Кол-во скачиваний: 632


--------------------
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 22 2010, 10:26
Сообщение #145


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Небольшая поправочка к моему сообщению №138 в этой ветке форума,
вот так будет вернее:
CODE

============================================================================
#define avr_read_word_atomic(addr) \
(__extension__({ \
uint16_t __addr16 = (uint16_t)(addr); \
uint16_t __result; \
__asm__ __volatile__ \
( \
"in __tmp_reg__,__SREG__" "\n\t" \
"cli" "\n\t" \
"ldd %A0,%a1+0" "\n\t" /*lo*/ \
"out __SREG__, __tmp_reg__" "\n\t" \
"ldd %B0,%a1+1" /*hi*/ \
: "=r" (__result) /* output operands */ \
: "b" (__addr16) /* input operands */ \
: "memory" /* list of clobbered registers */ \
); \
__result; \
}))

// ============================================================================
#define avr_write_word_atomic(addr,value) \
(__extension__({ \
uint16_t __addr16 = ((uint16_t)(addr)); \
uint16_t __value = (uint16_t)(value); \
__asm__ __volatile__ \
( \
"in __tmp_reg__,__SREG__" "\n\t" \
"cli" "\n\t" \
"std %a1+1,%B0" "\n\t" /*hi*/ \
"out __SREG__, __tmp_reg__" "\n\t" \
"std %a1+0,%A0" /*lo*/ \
: /* output operands */ \
: "r" (__value), /* input operands */ \
"b" (__addr16) \
: "memory" /* list of clobbered registers */ \
); \
}))
заменил
"e" (__addr16)
на
"b" (__addr16)

а то вдруг компилятор попытался сгенерить STD X+1,N (мой косяк)
а можно лишь
STD Y+1,N
STD Z+1,N


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
maxxx_x
сообщение Jun 3 2010, 08:56
Сообщение #146





Группа: Новичок
Сообщений: 2
Регистрация: 3-06-10
Пользователь №: 57 722



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ah:al/bl 86байт 46 тактов
;ah=]ah:al/bl[ остаток
;al=[ah:al/bl] частное
div16_8:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lsl al ;1
rol ah ;1
sbc ah,bl ;1
brsh koko7 ;2/1
add ah,bl ;1
koko7: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rol ah ;1
sbc ah,bl ;1
brsh koko6 ;2/1
add ah,bl ;1
koko6: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rol ah ;1
sbc ah,bl ;1
brsh koko5 ;2/1
add ah,bl ;1
koko5: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rol ah ;1
sbc ah,bl ;1
brsh koko4 ;2/1
add ah,bl ;1
koko4: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rol ah ;1
sbc ah,bl ;1
brsh koko3 ;2/1
add ah,bl ;1
koko3: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rol ah ;1
sbc ah,bl ;1
brsh koko2 ;2/1
add ah,bl ;1
koko2: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rol ah ;1
sbc ah,bl ;1
brsh koko1 ;2/1
add ah,bl ;1
koko1: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rol ah ;1
sbc ah,bl ;1
brsh koko0 ;2/1
add ah,bl ;1
koko0: rol al ;1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
com al ;1
ret ;4 6+7*5+5=46
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;СRC-CCITT_16 0x1021;;;;;;;;;
;CRC-XMODEM (0x1021) Initial value:0x0 ;
; 50 байт ;
; 18 тактов на байт
;Z-sumbol al=dlin ;
;bh:bl=crc-16 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crc_home: clr bh ;1
clr bl ;1
crc_plus: push al ;2
push ah ;2
push r1 ;2
push r0 ;2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
crc_loop1: ld ah,Z+ ;2
eor bh,ah ;1
ldi ah,16 ;1
mul ah,bh ;2
eor bh,r1 ;1
mul ah,bh ;2
eor bl,r0 ;1
add r0,r0 ;1
adc r1,r1 ;1
eor r0,bh ;1
eor r1,bl ;1
movw bh:bl,r1:r0;1
dec al ;1
brne crc_loop1 ;2/1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18
pop r0 ;2
pop r1 ;2
pop ah ;2
pop al ;2
ret ;4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Go to the top of the page
 
+Quote Post
Nuts_
сообщение Jun 23 2010, 06:13
Сообщение #147


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-07-09
Пользователь №: 50 799



Небольшая утилита для Windows с исходниками
Позволяет осуществлять удобное кодирование таблички для 7ми сегментного (семисегментного) индикатора
Откомпилированный фал в папке realise
В программе можно визуально указать какой сегмент к какому выводу контроллера подсоединен
собственно PB и PD указанно для удобства можно читать что там и PA и PE короче PX и PY
в результирующем фале digs.inc будет табличка из .dw биты которого будут соответствовать PXn и PYn

то есть по адресу=адрестаблички+цифра*2 мы получим два байта которые можно сразу outить в PX и PY
ну моджет быть замаскировав неиспользуемые биты

это уже вторая версия, предыдущая была рассчитана только на один порт и генерировала готовый код с использованием
оперативной памяти
Прикрепленные файлы
Прикрепленный файл  7SEG2.RAR ( 24.69 килобайт ) Кол-во скачиваний: 495
 


--------------------
Go to the top of the page
 
+Quote Post
war4one
сообщение Nov 13 2010, 18:46
Сообщение #148


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 16-07-05
Из: г. Уфа
Пользователь №: 6 851



Энергосчетчик 220 В. Позволяет контролировать напряжение, ток и частоту сети. Гальваническая развязка от сети, интерфейс RS-485.
Исходники + схема


--------------------
Электронные устройства Open Hardware
Go to the top of the page
 
+Quote Post
war4one
сообщение Nov 17 2010, 05:46
Сообщение #149


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 16-07-05
Из: г. Уфа
Пользователь №: 6 851



Watchdog таймер для GSM-модема, работающего под управлением внутренней прошивки (например, GE863-GPS, работающего под управлением внутренней Python-программы). Таймер ждет периодических подтверждающих импульсов от GPIO модема, в противном случае перезагружает модем.
Исходник + схема

Комбинированный сенсор для робота. Три акселерометра + три гироскопа + АЦП + контроллер + RS232.
Исходник + схема


--------------------
Электронные устройства Open Hardware
Go to the top of the page
 
+Quote Post
war4one
сообщение Nov 21 2010, 16:28
Сообщение #150


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 16-07-05
Из: г. Уфа
Пользователь №: 6 851



GPS GSM трекер. Трекер отправляет хозяину SMS со своими координатами, определенными при помощи GPS приемника. SMS отправляются периодически, в соответствии с заранее определенным интервалом.
Схема + программа


--------------------
Электронные устройства Open Hardware
Go to the top of the page
 
+Quote Post

13 страниц V  « < 8 9 10 11 12 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 12:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01507 секунд с 7
ELECTRONIX ©2004-2016