zltigo 0 13 сентября, 2009 Опубликовано 13 сентября, 2009 (изменено) · Жалоба либо уйдет в небытие... Это будет правильным решением :( Посмотрел. На данный момент это графоманство чистой воды - желание писать несомненно есть, но со всем остальным, начиная с чисто ремесленных навыков, очень большой напряг :( Изменено 13 сентября, 2009 пользователем zltigo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
injen-d 0 13 сентября, 2009 Опубликовано 13 сентября, 2009 (изменено) · Жалоба Посмотрел. Это будет правильным решением :( Ну, именно от Вас я ожидал подобной фразы... Аргументируйте, если не трудно. Пусть будет мне наукой. Я, конечно, не претендую на звание "образец стиля" в написании программ, если Вы это имели ввиду под чисто ремесленными навыками, это оттачивается с годами. Нельзя ли конкретней? А то Вы только интригуете подобными фразами. Мне снизу не видно! :laughing: Изменено 13 сентября, 2009 пользователем injen-d Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sansnotfor 0 26 октября, 2009 Опубликовано 26 октября, 2009 · Жалоба для работы с инкрементным энкодером encoder.rar для преобразования двоичных чисел в двоично десятичные и вывода на lcd bcd.rar знакогенератор для LCD от Nokia3310 DriverNokia3310Tx.rar библиотека для работы с LCD от Nokia3310 с видео буфером. нужно от 1 КБ ОЗУ. DriverNokia3310vb.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба Модуль доступа к 16-и битным регистрам AVR (для avr-gcc). ======================================================================= ===== #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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 2 ноября, 2009 Опубликовано 2 ноября, 2009 (изменено) · Жалоба для работы с инкрементным энкодером encoder.rar для преобразования двоичных чисел в двоично десятичные и вывода на lcd bcd.rar знакогенератор для LCD от Nokia3310 DriverNokia3310Tx.rar библиотека для работы с LCD от Nokia3310 с видео буфером. нужно от 1 КБ ОЗУ. DriverNokia3310vb.rar Добавлю-ка я вариант с учетверением количества импульсов валкодера. indent-ы в исходном тексте съела форма ответа на сообщение... 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); } Изменено 2 ноября, 2009 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndryG 0 28 декабря, 2009 Опубликовано 28 декабря, 2009 · Жалоба Простой программный UART-передатчик. STX - Simple TX Удобно в Proteus нацепить на reset-вывод. Код работает под IAR и CodeVisionAVR. (добавите WinAVR - буду рад добавить в исходник) В архиве (функция и проекты IAR, CV, Proteus) STX Rev.71 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sansnotfor 0 2 января, 2010 Опубликовано 2 января, 2010 (изменено) · Жалоба Простой драйвер символьного lcd на основе контроллеров ks0066. Проверка флага занятости. Поддержка 4-ех и 8-ми разрядной шины. В архиве 2 варианта - для IARa и для WINAVR. lcd_winstar.rar Изменено 2 января, 2010 пользователем sansnotfor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
microsin 0 2 марта, 2010 Опубликовано 2 марта, 2010 · Жалоба 1. Библиотека V-USB (старое название AVR-USB) - программная реализация протокола USB на AVR. Есть примеры рабочих устройств USB и компутерных программ, работающих с этими устройствами. Библиотека бесплатная. Комментарии в библиотеке и примерах переведены на русский язык. 2. Макетные платы, на которых удобно применять библиотеку V-USB: AVR-USB-MEGA16, AVR-USB-TINY45. 3. Макетные платы с аппаратным интерфейсом USB: AVR-USB162, AT91SAM7X. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sansnotfor 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Драйвер матричной клавиатуры 3х4. Подходит для любого компилятора, нужно только подключить соответствующих заголовочный файл мк. Позволяет подключать клавиатуру как к разным портам, так и к одному. Единственное условие - столбцы матрицы должны быть подключены к младшим разрядам порта, строки - к старшим. Keyboard_driver.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIr85 0 4 апреля, 2010 Опубликовано 4 апреля, 2010 · Жалоба Работа с графическим дисплеем MT-12232 на ATmega8. mt_12232b.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 22 апреля, 2010 Опубликовано 22 апреля, 2010 · Жалоба Небольшая поправочка к моему сообщению №138 в этой ветке форума, вот так будет вернее: ============================================================================ #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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maxxx_x 0 3 июня, 2010 Опубликовано 3 июня, 2010 · Жалоба ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts_ 0 23 июня, 2010 Опубликовано 23 июня, 2010 · Жалоба Небольшая утилита для Windows с исходниками Позволяет осуществлять удобное кодирование таблички для 7ми сегментного (семисегментного) индикатора Откомпилированный фал в папке realise В программе можно визуально указать какой сегмент к какому выводу контроллера подсоединен собственно PB и PD указанно для удобства можно читать что там и PA и PE короче PX и PY в результирующем фале digs.inc будет табличка из .dw биты которого будут соответствовать PXn и PYn то есть по адресу=адрестаблички+цифра*2 мы получим два байта которые можно сразу outить в PX и PY ну моджет быть замаскировав неиспользуемые биты это уже вторая версия, предыдущая была рассчитана только на один порт и генерировала готовый код с использованием оперативной памяти 7SEG2.RAR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
war4one 0 13 ноября, 2010 Опубликовано 13 ноября, 2010 · Жалоба Энергосчетчик 220 В. Позволяет контролировать напряжение, ток и частоту сети. Гальваническая развязка от сети, интерфейс RS-485. Исходники + схема Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
war4one 0 17 ноября, 2010 Опубликовано 17 ноября, 2010 · Жалоба Watchdog таймер для GSM-модема, работающего под управлением внутренней прошивки (например, GE863-GPS, работающего под управлением внутренней Python-программы). Таймер ждет периодических подтверждающих импульсов от GPIO модема, в противном случае перезагружает модем. Исходник + схема Комбинированный сенсор для робота. Три акселерометра + три гироскопа + АЦП + контроллер + RS232. Исходник + схема Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться