Jump to content

    

dexter_khm

Участник
  • Content Count

    31
  • Joined

  • Last visited

Community Reputation

0 Обычный

About dexter_khm

  • Rank
    Участник

Recent Profile Visitors

1120 profile views
  1. Добрый день разработал тут светодиодный светильник по схеме Бестрансформаторного блок питания. Типа этого. Акцент стоял на максимально дешевом исполнении. Все вроде ок но на финальных тестах оказалось что не проходим по Коэффициенту мощности он у нас 0,2 а должен быть ≥0,8. Помогите советом как в этой ситуации привести его в норму.
  2. MC34063 Sepic li-ion to 3,3V

    Цитата(smk @ Aug 18 2015, 20:53) Вот подумалось, что флай мог бы пожалуй быть вменяемым решением. Линейный стабилизатор запитать им скажем 5 вольтаим. Хотя можно и стабилизацией добиться нормальных результатов, если нагрузка не резко просаживать будет. Простите я не понял. Поподробнее пожалуйста.
  3. MC34063 Sepic li-ion to 3,3V

    Цитата(smk @ Aug 17 2015, 22:07) NCP дешевле. 350мА там есть. Точно не помню, но смотреть 12, 14 и старше. Если вы про ncp1450 так он же повышающий только, как быть с понижением от 4,2В
  4. Добрый день. Нужен стабилизатор который из диапазона 3В-4,2В делало 3,3В. Желательно из доступных деталей. Я вот тут набросал схему в протеусе MC34063 Sepic li-ion to 3,3V [attachment=94693:mc34063.jpg] хотел узнать будет ли она работать и выдавать 3,3В 350мА. Протеус однозначно не дает понять сильно тупит вылетает. Проект [attachment=94695:mc34063.zip]
  5. stm8s 16mhz и точность часов

    Всем спасибо проблему решил ответ на этом форуме http://forum.easyelectronics.ru/viewtopic....=33&t=18186
  6. Здравствуйте в своем проекте часов на STM8S пользуюсь "STM8S Touch-Sensing" библиотекой модифицировал проект STSW-STM8023 http://www.st.com/web/en/catalog/tools/PF259386# . Работают 4 кнопки все ок. Но для входа в меню настройку времени нужно одновременно нажать две кнопки, а вот тут засада так как библиотека возвращает значение DETECTED=1 только для одной кнопки в единицу времени, а если держишь палец на одной кнопке то нажатие второй библиотека уже не идентифицирует. Привожу куски кода: stm8_tsl_conf.h Код#define LOADREF_PORT_ADDR  (GPIOC_BaseAddress)  /**< LOADREF pin GPIO base address */ #define LOADREF_BIT        (0x04)               /**< LOADREF pin mask */ //============================================================================== // // 5) SINGLE CHANNEL KEYS DEFINITION - PORT 1 // // Set the number of keys // Set the port // Set the pins mask // // Warning: This port is mandatory and one key at least must be defined. // //============================================================================== #define SCKEY_P1_KEY_COUNT  (4)  /**< Single channel key Port 1: Number of keys used (value from 1 to 8) */ #define SCKEY_P1_PORT_ADDR  (GPIOC_BaseAddress)  /**< Single channel key Port 1: GPIO base address */ #define SCKEY_P1_A  (0x02)  /**< Single channel key Port 1: 1st key mask */ #define SCKEY_P1_B  (0x40)  /**< Single channel key Port 1: 2nd key mask */ #define SCKEY_P1_C  (0x20)  /**< Single channel key Port 1: 3rd key mask */ #define SCKEY_P1_D  (0x10)  /**< Single channel key Port 1: 4th key mask */ #define SCKEY_P1_E  (0)     /**< Single channel key Port 1: 5th key mask */ #define SCKEY_P1_F  (0)     /**< Single channel key Port 1: 6th key mask */ #define SCKEY_P1_G  (0)     /**< Single channel key Port 1: 7th key mask */ #define SCKEY_P1_H  (0)     /**< Single channel key Port 1: 8th key mask */ #define SCKEY_P1_DRIVEN_SHIELD_MASK (0)//(0x08) Настройки библиотеки main.h Код if ((TSL_GlobalSetting.b.CHANGED) && (TSLState == TSL_IDLE_STATE))   {              TSL_GlobalSetting.b.CHANGED = 0;                           if (sSCKeyInfo[3].Setting.b.DETECTED) /* KEY 1 touched */     {                         Keys|=Key1;             return;     }                  if (sSCKeyInfo[2].Setting.b.DETECTED) /* KEY 2 touched */     {             Keys|=Key2;             return;     } } Опрос кнопок. Сделал такой финт ушами Код              if (sSCKeyInfo[1].Setting.b.DETECTED) /* KEY 3 touched */     {             if ((sSCKeyInfo[0].Setting.b.DETECTED)||(sSCKeyInfo[0].State.b.DETECTED))             {                 Keys|=KeyD; //Нажаты две кнопки                 return;             }             else             {                                  Keys|=Key3;                 return;             }     }               if (sSCKeyInfo[0].Setting.b.DETECTED) /* KEY 4 touched */     {             if ((sSCKeyInfo[1].Setting.b.DETECTED)||(sSCKeyInfo[1].State.b.DETECTED))             {                 Keys|=KeyD;//Нажаты две кнопки                 return;             }             else             {                                  Keys|=Key4;                 return;             }     } Нашел методом тыка - иногда в переменной второй из пары нажатых кнопок sSCKeyInfo[х].State.b.DETECTED появляется 1 но срабатывает 2 двух случаях из 3 то есть нестабильно. Помогите советом как мне отработать двойное нажатие?
  7. stm8s 16mhz и точность часов

    Сделал часы на базе контроллера stm8s. Светодиодный семимегментник на 4 разряда, четыре сенсорных кнопки STM8 Touch-Sensing. Все работает вроде но вот часы за день отстают на минуту. Кварц на 16мГц надпись на нем 16,0RG9-3H. инициализация таймера: Кодvoid Timer_Init(void) {     // Reset ("de-initialise") TIM1.     TIM1_DeInit();     // Set TIM1 to:     // - use an exact prescaler of 1000,     // - to count up,     // - to have a period of 1, and     // - to have a repetition counter of 0.     TIM1_TimeBaseInit(16000, TIM1_COUNTERMODE_DOWN, 1000, 0);//     // Set TIM1 to generate interrupts every time the counter overflows (every ms).     TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);     // Enable TIM1.     TIM1_Cmd(ENABLE);          // Enable interrupts (no, really).     enableInterrupts(); } Таблица векторов прерываный: Кодstruct interrupt_vector const _vectab[] =   {     {       0x82, (interrupt_handler_t)_stext     }     , /* reset */     //{0x82, (interrupt_handler_t)main}, /* reset */     {0x82, NonHandledInterrupt}, /* trap */     {0x82, NonHandledInterrupt}, /* irq0 - tli */     {0x82, NonHandledInterrupt}, /* irq1 - awu */     {0x82, NonHandledInterrupt}, /* irq2 - clk */     {0x82, NonHandledInterrupt}, /* irq3 - exti0 */     {0x82, NonHandledInterrupt}, /* irq4 - exti1 */     {0x82, (interrupt_handler_t)EXTI_PORTC_IRQHandler}, /* irq5 - exti2 */     {0x82, NonHandledInterrupt}, /* irq6 - exti3 */     {0x82, NonHandledInterrupt}, /* irq7 - exti4 */     {0x82, NonHandledInterrupt}, /* irq8 - can rx */     {0x82, NonHandledInterrupt}, /* irq9 - can tx */     {0x82, NonHandledInterrupt}, /* irq10 - spi*/     {0x82, (interrupt_handler_t)TIM1_UPD_OVF_TRG_BRK_IRQHandler}, /* irq11 - tim1 */     {0x82, NonHandledInterrupt}, /* irq12 - tim1 */     {0x82, NonHandledInterrupt}, /* irq13 - tim2 */     {0x82, NonHandledInterrupt}, /* irq14 - tim2 */     {0x82, NonHandledInterrupt}, /* irq15 - tim3 */     {0x82, NonHandledInterrupt}, /* irq16 - tim3 */     {0x82, NonHandledInterrupt}, /* irq17 - uart1 */     {0x82, NonHandledInterrupt}, /* irq18 - uart1 */     {0x82, NonHandledInterrupt}, /* irq19 - i2c */     {0x82, NonHandledInterrupt}, /* irq20 - uart2/3 */     {0x82, NonHandledInterrupt}, /* irq21 - uart2/3 */     {0x82, NonHandledInterrupt}, /* irq22 - adc */     {0x82, (interrupt_handler_t)TSL_Timer_ISR}, /* irq23 - tim4 */     {0x82, NonHandledInterrupt}, /* irq24 - flash */     {0x82, NonHandledInterrupt}, /* irq25 - reserved */     {0x82, NonHandledInterrupt}, /* irq26 - reserved */     {0x82, NonHandledInterrupt}, /* irq27 - reserved */     {0x82, NonHandledInterrupt}, /* irq28 - reserved */     {0x82, NonHandledInterrupt}  /* irq29 - reserved */   }; Прерывание таймера: КодINTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11) {     TIM1_ClearITPendingBit(TIM1_IT_UPDATE);              rtc_service();         rtc_get_time(&Time);      } Функции RTC переделал из библиотеки для AVR: Код/******************************************************************************** *********** * Программная реализация часов                                                             * * Версия 0.1                                                                               * * Начато 27 августа 2005 года                                                              * * Окончено 28 октября 2005 года                                                            * * Автор Якимов Юрий Анатольевич                                                            * ******************************************************************************** ***********/ #include "main.h" #include "stm8s_it.h" #include <string.h> #include "Rtc.h" //#include "service.h" void cli(void) { disableInterrupts(); } void sei(void) { enableInterrupts(); } unsigned char month_day_table[]={31,28,31,30,31,30,31,31,30,31,30,31}; unsigned char CorectionFlag=0; rtc_type rtc_time;                                    //системное время //Инициализация часов void rtc_init(void) { rtc_set_time(0,0,0);                                  //Время считаем с 00:00:00 rtc_set_date(1,1,2012);                               //Дату считаем с 1 января 2000 года } //Наращивание часов void rtc_service(void) {   unsigned char day_tmp;     rtc_time.seconds++;     if(rtc_time.seconds>59)         {         rtc_time.seconds=0;         rtc_time.minutes++;         if(rtc_time.minutes>59)             {             rtc_time.minutes=0;             rtc_time.hours++;             if(rtc_time.hours>23)                 {                 rtc_time.hours=0;                 rtc_time.day++;                                 //если год - високосный и сейчас февраль                                 if(leap_year(rtc_time.year) && (rtc_time.month==2))                                   day_tmp=29;         //то количество дней - 29                                 else                                   day_tmp=month_day_table[rtc_time.month-1]; //иначе - как обычно                 if(rtc_time.day > day_tmp)                     {                     rtc_time.day=1;                     rtc_time.month++;                     if(rtc_time.month>12)                         {                         rtc_time.month=1;                         rtc_time.year++;                         }                     }                 }             }         } } //Устанавливает системное время void rtc_set_time(unsigned char hours, unsigned char minutes, unsigned char seconds) {   cli();   rtc_time.hours=hours;   rtc_time.minutes=minutes;   rtc_time.seconds=seconds;   sei(); } //Устанавливает системную дату void rtc_set_date(unsigned char day, unsigned char month, unsigned int year) {   cli();   rtc_time.day=day;   rtc_time.month=month;   rtc_time.year=year;   sei(); } //Получает текущее время и размещает в rtc_var void rtc_get_time(rtc_type *rtc_var) {   cli();   memcpy(rtc_var,&rtc_time,sizeof(rtc_time));   sei(); } //Возвращает 1, если год test_year - високосный unsigned char leap_year(unsigned int test_year) {   if(((test_year%4==0) && (test_year%100)) || (test_year%400==0))     return 1;   else     return 0; } Два таймера заняты сенсорными кнопками Код#define TIMACQ           (TIM3) #define TIMTICK         (TIM4) Незнаю где набегает отставание в одну минуту. сначала грешил на некачественный кварцы, сегодня вернулся к плате дискавери на stm8s но и на ней отставание присутствует. Помогите советом что делаю не так?
  8. at90usb647 bootloader как восстановить

    Все проблему решил сам нога VBUS не была подключена +5в. Прошивка та что скинула Xenia рабочая
  9. at90usb647 bootloader как восстановить

    Зашитый в камень заводской бутлоадер молчал. Попробовал размещенную выше прошивку - молчит. Потом скачал бутлоадер от LUFA настроил маке файл, зашил, опять проверил фьюзы BOOTRST, HWBE, 4k boot flash size - Молчит. Истерика непреодалимое желание расхреначить плату об стол Загуглил название контроллера. http://electronix.ru/forum/lofiversion/index.php/t93849.html http://www.avrfreaks.net/index.php?name=PN...ic&t=106332 оказывается я не один такой. И не кто не может решить проблему. Вопрос at90usb647 вообще у когото через USB прошивался??? P.S. Соединения проверял, контроллер зашитый через ISP мигает светодиодом, кварц 16мгц, при этом флип на этойже машине с USB162 работает аж бегом.
  10. Здравствуйте стер стандартный бутлоадер на at90usb647. Подскажите где можно взять прошивку DFU bootloader at90usb647. Заранее спасибо.
  11. AT91sam7s vs LCD i2c TIC107 (PCF2119)

    Да конечно примеры я смотрел. Там из примеров i2c и TWI только работа с внешней памятью 24хх . Именно этот пример я сегодня целый пробовал переделать. Проблема в том что примеров работы именно LCD а темболее TIC107 нету. Получается негде посмотреть правильным путем я иду или нет. Помогите примером наверняка ктото чтото такое до ума доводил.
  12. AT91sam7s vs LCD i2c TIC107 (PCF2119)

    Ну фактически "против" ибо этот екран не хочет работать нифига
  13. AT91sam7s vs LCD i2c TIC107 (PCF2119)

    Здравствуйте снова я со своим AT91sam7s256 и вопросами. Итак есть AT91sam7s256 и экран TIC107 на чипе PCF2119 и я пытаюсь это все подключить. Возможно у когото есть примеры работы sam7 по шине i2c с какимнибудь экраном???? инициализацию на свой TIC107 я вроде нашел. http://www.avrfreaks.net/index.php?name=PN...768&start=0 http://kvorb.ru/2010/02/13/primer-raboty-s-tic107/
  14. Вот на этой строчке всегда застряет. Блин не знаю даже что не так? П.С. Заливаю из IAR через JTAG J-Link.
  15. Mempfis еще раз прошу у вас помощи. Совместил вашу инициализацию и свое мигание светодиодом. Запустил в дебаггере застряет на первых адресах и не идет дальше. Подозреваю что чтото не выставил правильно в настройках проэкта. Посмотрите пожалуйста проект прикрепляю