Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: Выходит из строя МК

Ср авг 15, 2012 22:35:14

Enman писал(а):в общем, пока, кроме как ставить резистор в +5 и мерять, других путей не видно...

Вот сейчас успокоился и подумал. Контроллер только в субботу новый возьму, а завтра без него на панельке осциллографом стану и посмотру что там происходит :))

Re: Выходит из строя МК

Ср авг 15, 2012 22:40:06

Enman писал(а):Изображение
Как-то ничего прямо и не видно......Из подводных камней - утечки по флюсу(если не канифоль) и неиспользованные ноги контроллера, если они сконфигурированы на вход, ловят помехи и приводят к чудесам ( соединить все через R на общий), керамика на питании само собой.

Все спиртом отчистил блестит, иголкой между паек прочистил, на пик 12f675 свободных ног не оставалось, таже картина. И забыл на схеме дорисовать на 5В конденсатор 33р стоит {Сразу скажу пробовал и с ним и без него}

Re: Выходит из строя МК

Ср авг 15, 2012 23:21:53

Такая идея со стабилизатором мне тоже не нравится.
В момент понижения напряжения на левой стороне он может глюкануть и вдуть в контроллер повышенное, пусть не надолго (импульсом). А от такого счастья может и МК заклинить внутри.
Лучше подцепите вместо МК резистор в качестве нагрузки, станьте осциллографом и пощёлкайте питание.

Re: Выходит из строя МК

Чт авг 16, 2012 17:36:04

Вот сегодня провел исследование и кажется нашел причину.
Во время отключения основного питания {Выключатель 220В} Возникает дребезг. И иногда проскакивают импульсы от 7 до 10в. {Вот почему глюки не постоянны}. Пробовал от этого избавится не вышло.
При работе МК без аккумулятора эта проблема не заметна {тк если мк и заглючит то он всеравно обестачивается}. А при аккумуляторе происходит заглючивание МК с продолжением работы. Вот осциллограммы с вариантами подключений.
1.Исходная схема. Амплитуда импульса 7В длительность около 100мкс
Изображение
2.Схема без индуктивностей и подключение кренки без сопротивления. Амплитуда импульса 7В длительность около 100мкс
Изображение
3.С сопротивлением 200 Ом на Vpp. Амплитуда импульса 11В длительность около 100мкс.Стало хуже {Пробовал с конденсаторами и без картина таже}
Изображение
4.С стабилитроном без сопротивления. Амплитуда импульса 7В длительность около 100мкс
Изображение
5.А вот при вытягивании вилки из розетки. Просто сделал фото ради интереса.
Изображение
Еще было много промежуточных экспериментов, картина почти таже.
Пока единственный выход снижение напряжения до 3,6-4 В. В этом случае амплитуда импульса была до 5,5В Что для контроллера приемлемо.
С уважением, Анатолий.

Re: Выходит из строя МК

Чт авг 16, 2012 20:33:08

это пока всё околонаучная фантастика, откуда могут быть импульсы на электролитах с керамикой?...так, наверное, импульсы будут и просто на щупе, если клацать индуктивностью в сети....от 24 на 7805 тоже можно RC- фильтр добавить.

Re: Выходит из строя МК

Чт авг 16, 2012 23:50:53

Очень многое зависит от того, как разведена печатная плата. Особенно при работе с МК. Советую погуглить. Вот к примеру. http://caxapa.ru/lib/emc_immunity.html

Re: Выходит из строя МК

Сб авг 18, 2012 08:37:16

1. некорректность работы программного обеспечения в области обработки сброса
(желательно использоват внутренние цепи и не подключать внешний резистор или установить mcp100-475,система bod отключена) обязательно выполнение первого запуска при отключенном акумуляторе! (или "волшебная кнопка")

2. управляющтие линии перевести с комбинированных выходов на простые (меньше проблем с начальными настройками и "несанкционированным" входом в режим программирования) - ra0=rc0, ra1=rc1 ацп отключен

3. транзисторы предусилителя должны иметь резистор 10-15к в цепи база-эмиттер

4. программа должна успеть предварительно перевести выходные каскады, управляющие внешними цепями в z-состояние (режим входа с отключенными подтягивающими резисторами) до того момента, как исчезнет напряжение +24в (неверное расположение датчика отсутствия питания и резервирования тех же 24 в до завершения процесса подготовки выводов)
и вообще- то при таких условиях (резервное питание) предпочтительна полная гальванразвязка резервных и остальных цепей (применение трансформаторной связи и/или оптронов)

вывод - заново переделывать схему и программу :sleep:

Re: Выходит из строя МК

Сб авг 18, 2012 10:37:59

А вот если интересно прошивка. Правда будет переделываться. Это черновик.
Спойлер
Код:
;**********************************************************************
;   This file is a basic code template for assembly code generation   *
;   on the PIC12F675. This file contains the basic code               *
;   building blocks to build upon.                                    *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler (Document DS33014).                     *
;                                                                     *
;   Refer to the respective PIC data sheet for additional             *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:       xxx.asm                                           *
;    Date:                                                            *
;    File Version:                                                    *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files Required: P12F675.INC                                      *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;**********************************************************************

   list      p=12f675           ; list directive to define processor
   #include <p12f675.inc>        ; processor specific variable definitions

   errorlevel  -302              ; suppress message 302 from list file

   __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See data sheet for additional information on configuration word settings.




;***** VARIABLE DEFINITIONS
          cblock      0x20                         ; Адрес начала блока переменных.
w_temp       
status_temp   
tmr_1sek     
tmr_1min     
tmr_1hour 
tmr_1day   
event   
event_2
my_reg
save_minH
save_minL     
Reg_1
Reg_2
Reg_3
ADRESL_temp
          endc
;флаги регистра счета 1сек 1мин 1 час
            cblock      0x00
event_0.1sek 
event_1sek   
event_1min   
event_1hour
event_1day
event_save_min
event_power
event_polyrnost 
          endc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;флаги регистра счета 1сек 1мин 1 час
            cblock      0x00
event_correkciya   
event_peremotka   
            endc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ust_TMR1H     EQU     .60
ust_TMR1L     EQU     .176
ust_tmr_1sek  equ     .10
ust_tmr_1min  equ     .60
ust_tmr_1hour equ     .60
ust_tmr_1day  equ     .24
ust_reg       equ     .3
ust_save_minH equ     .2   ;установка 24 часов для
ust_save_minL equ     .208 ;проверки обнуления счетчика сохраненных минут
ust_knop_1    equ     .160; проверка 1 кнопки  1В - 205
ust_knop_2    equ     .220; проверка 2 кнопки  0,75В- 154
;**********************************************************************
      ORG     0x000             ; processor reset vector
      goto    main              ; go to beginning of program
   

      ORG     0x004             ; interrupt vector location
      movwf   w_temp            ; save off current W register contents
      movf   STATUS,w          ; move status register into W register
      movwf   status_temp       ; save off contents of STATUS register
       
      btfss       PIR1,TMR1IF
      goto        in_prir
        bcf         PIR1,TMR1IF
       movlw       ust_TMR1H         ;приращение таймера тмр1
        addwf       TMR1H,f             ;;;;;
       movlw       ust_TMR1L         ;;;;
        addwf       TMR1L,f             ;;;;
      bsf         event,event_0.1sek
      decfsz      tmr_1sek, F
      goto        in_prir
       movlw       ust_tmr_1sek         
        movwf       tmr_1sek
      bsf         event,event_1sek
      decfsz      tmr_1min,f
      goto        in_prir
       movlw       ust_tmr_1min         
        movwf       tmr_1min
      bsf         event,event_1min
      decfsz      tmr_1hour,f
      goto        in_prir
       movlw       ust_tmr_1hour         
        movwf       tmr_1hour
      bsf         event,event_1hour
      decfsz      tmr_1day,f
      goto        in_prir
       movlw       ust_tmr_1day         
        movwf       tmr_1day
      bsf         event,event_1day
; isr code can go here or be located as a call subroutine elsewhere

in_prir   movf    status_temp,w     ; retrieve copy of STATUS register
      movwf   STATUS            ; restore pre-isr STATUS register contents
      swapf   w_temp,f
      swapf   w_temp,w          ; restore pre-isr W register contents
      retfie                    ; return from interrupt


; these first 4 instructions are not required if the internal oscillator is not used
;настройка контроллера
main    BCF        INTCON,GIE
      movlw       b'00000111'
      movwf       CMCON
      movlw       b'01000000' ;резрешение глобальных и переферийных прерываний
      movwf       INTCON
      movlw       b'00010001'
      movwf       T1CON   
      bsf         STATUS,RP0        ; set file register bank to 1
      movlw       b'00000001'       ;настройка tmr1
      movwf       PIE1              ; 
        movlw       b'11111100'       ;настройка конфигурации портов
      movwf       TRISIO   
        clrf        ADRESL   
      movlw       b'00010100'       ;порт 2 на ввод аналогового сигнала
      movwf       ANSEL             ;делитель 8 для 4 мгц   
      bcf         STATUS,RP0        ; set file register bank to 0
      movlw       b'10001001'       ;
      movwf       ADCON0            ;
        clrf        GPIO              ; установка 0 на портах выхода
;Установк счетчиков   
       movlw       ust_TMR1H         ;приращение таймера тмр1
        movwf       TMR1H             ;;;;;
       movlw       ust_TMR1L         ;;;;
        movwf       TMR1L             ;;;;
       movlw       ust_tmr_1sek         
        movwf       tmr_1sek
       movlw       ust_tmr_1min         
        movwf       tmr_1min      
       movlw       ust_tmr_1hour         
        movwf       tmr_1hour
       movlw       ust_tmr_1day         
        movwf       tmr_1day
      clrf        event
      clrf        event_2
        clrf        save_minL
      clrf        save_minH
      clrf        ADRESL_temp
      BSF        INTCON,GIE
      
;начало программы;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
min             call        indic_power
                call        Cloc_Tik
            call        Cloc_save
            call        load_save_min
            call        start_ACP   
            call        peremotka_cloc
            call        correkciya
            
                goto        min   
;подрограмма индикатора питания            
indic_power     btfss       GPIO,GP3 ;проверка порта контроля основного источника питания
                goto        off_power
on_power        bsf         event,event_power
                bsf         ADCON0,ADON
            return   
off_power       bcf         event,event_power
                bcf         ADCON0,ADON   
                return      

;подпрограмма счета минут            
Cloc_Tik       btfss       event,event_power
                return
                btfss       event,event_1min ;опрос флага 1 минута
                return
              bcf         event,event_1min
Cloc_ust       btfss       event,event_polyrnost ;проверка последней полярности шагового двигателя
              goto        gen_gp1
gen_gp0         bcf         event,event_polyrnost
            bsf         GPIO,GP0
            goto        pause_2sec
gen_gp1         bsf         event,event_polyrnost
            bsf         GPIO,GP1
pause_2sec      movlw       .186
                movwf       Reg_1
                movlw       .4
                movwf       Reg_2
                movlw       .8
                movwf       Reg_3
wr2             decfsz      Reg_1, F
                goto        wr2
                decfsz      Reg_2, F
                goto        wr2
                decfsz      Reg_3, F
                goto        wr2         
            bcf         GPIO,GP0
            bcf         GPIO,GP1
             return
;подпрограмма сохранения минут при отсутствии основного источника питания
Cloc_save       btfsc       event,event_power ;опрос флага наличия сети
                return
                btfss       event,event_1min ;опрос флага 1 минута
                return
next_min_save   bcf         event,event_1min
                incfsz      save_minL,F
                goto        prov_clrf_min
                incf        save_minH,f   
prov_clrf_min   bsf         event,event_save_min
                movf        ust_save_minH,W  ;проверка счетчиков
                bcf         STATUS,Z         ;сохраненных минут    
                xorwf       save_minH,W      ;на равенство 12 часам
                btfss       STATUS,Z      
                return
            movf        ust_save_minL,W   
                bcf         STATUS,Z
                xorwf       save_minL,W   
                btfss       STATUS,Z
              return
               clrf        save_minL   ;очистка минут при
              clrf        save_minH   ;равенстве12 часам
            bcf         event,event_save_min
                return   
;подпрограмма подводки часов после подачи питания
load_save_min   btfss       event,event_power ;опрос флага наличия сети
                return
                btfss       event,event_save_min
                return
                bcf         STATUS,Z
                movf      save_minL,F
            btfss       STATUS,Z
            goto        dec_save_min
                bcf         STATUS,Z
                movf      save_minH,F
            btfss       STATUS,Z
            goto        dec_save_min
            bcf         event,event_save_min
                return
dec_save_min    call        fist_tic
                decfsz      save_minL,F
                return             
            bcf         STATUS,Z
                movf      save_minH,F
            btfsc       STATUS,Z
            return
            decfsz      save_minH,F
            return
            call        fist_tic
            decf        save_minL,f
            return      

;подпрограмма запуска ацп            
start_ACP       btfss       event,event_power
                return
                bsf         ADCON0,GO_DONE; запуск ацп
                btfsc       ADCON0,GO_DONE;проверка окончена ли работа ацп
                goto        $-1
            GOTO        $+1    ;задержка после выбора канала ацп
                GOTO        $+1
                GOTO        $+1
                movlw       9E;косвенная адресация перенос данных из
            movwf       FSR;младшего заначения ацп
                movf        INDF,w
                movwf       ADRESL_temp;;;;;;
            
prov_no_knopka   bcf         STATUS,Z
            movf        ADRESL_temp,f
            btfsc       STATUS,Z
            return
prov_knop_1      movlw       ust_knop_1
            bsf         STATUS,C
            SUBWF       ADRESL_temp,w
            btfsc       STATUS,C
            goto        prov_knop_2
                bsf         event_2,event_correkciya
            return
prov_knop_2      movlw       ust_knop_2
            bsf         STATUS,C
            SUBWF       ADRESL_temp,w
            btfsc       STATUS,C
            return
                bsf         event_2,event_peremotka
            return
                        
;подпрограмма перемотки минут
peremotka_cloc   btfss       event,event_power
            return
                btfsc       event,event_save_min
                return
            btfsc       event_2,event_peremotka     ;опрос кнопки перемотки минут
                call        fist_tic
            bcf         event_2,event_peremotka
            return
;подпрограмма быстрого счета            
fist_tic         btfss       event,event_polyrnost ;проверка последней полярности шагового двигателя
              goto        gen_gp11
                bcf         event,event_polyrnost
            bsf         GPIO,GP0
            goto        pause_0.2sec
gen_gp11      bsf         event,event_polyrnost
            bsf         GPIO,GP1
pause_0.2sec   movlw       .186
                movwf       Reg_1
                movlw       .4
                movwf       Reg_2
                movlw       .2
                movwf       Reg_3
wr              decfsz      Reg_1, F
                goto        wr
                decfsz      Reg_2, F
                goto        wr
                decfsz      Reg_3, F
                goto        wr
            bcf         GPIO,GP0
            bcf         GPIO,GP1
             return      
            
correkciya      btfss      event,event_power
                return
                btfss      event_2,event_correkciya
                goto       end_correkc
            bcf        INTCON,GIE
                clrf       tmr_1sek
                clrf       tmr_1min      
                clrf       tmr_1hour
                clrf       tmr_1day
                bcf        event,event_0.1sek
            bcf        event,event_1sek
                bcf        event,event_1min
            bcf        event,event_1hour
                bcf        event,event_1day
            bcf        event,event_save_min
                bcf        event,event_power
              clrf       event_2
                clrf       save_minL
              clrf       save_minH
            return
end_correkc       btfsc      INTCON,GIE
                return
                movlw       ust_TMR1H         ;приращение таймера тмр1
                movwf       TMR1H             ;;;;;
               movlw       ust_TMR1L         ;;;;
                movwf       TMR1L             ;;;;
               movlw       ust_tmr_1sek         
                movwf       tmr_1sek
               movlw       ust_tmr_1min         
                movwf       tmr_1min      
               movlw       ust_tmr_1hour         
                movwf       tmr_1hour
               movlw       ust_tmr_1day         
                movwf       tmr_1day
              clrf        event_2
                clrf        save_minL
              clrf        save_minH
              clrf        ADRESL_temp
              BSF         INTCON,GIE
            return
      END                       ; directive 'end of program'


В файл вложили бы, или под спойлер.
ploop

Re: Выходит из строя МК

Сб авг 18, 2012 10:45:57

А вот откуда взята схема управления часами{Вроде из радиоаматора}
Изображение

Re: Выходит из строя МК

Сб авг 18, 2012 12:10:35

Исходная схема, как я вижу, резервного питания не имеет
Да откуда взятся корректной программе, если для pic16f676, в исходнике указано:
" list p=12f675 ; list directive to define processor
#include <p12f675.inc> ; processor specific variable definitions

errorlevel -302 ; suppress message 302 from list file

__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC "
естесственно и конфигурация МК соответственно...! :)))

Re: Выходит из строя МК

Сб авг 18, 2012 14:04:03

BOB51 писал(а):Исходная схема, как я вижу, резервного питания не имеет
Да откуда взятся корректной программе, если для pic16f676, в исходнике указано:
" list p=12f675 ; list directive to define processor
#include <p12f675.inc> ; processor specific variable definitions

errorlevel -302 ; suppress message 302 from list file

__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC "
естесственно и конфигурация МК соответственно...! :)))

Извиняюсь, это я прошивку 16f676 под 12F675 переделывал, и не то сбросил{не обратил внимание на шапку}.
Последний раз редактировалось Dariele Сб авг 18, 2012 15:05:22, всего редактировалось 1 раз.

Re: Выходит из строя МК

Сб авг 18, 2012 14:08:48

Кстати контроллеры 12f675 и 16f676 практически одинаковые. И картина при переходе на резерв одинаковая.

Re: Выходит из строя МК

Сб авг 18, 2012 14:34:13

Вот собрал новый блок питания, буду в среду опробовать на pic12f675 или pic16f676 {какой будет в наличии на том и опробую}
Изображение
Импульсы при дребезге контактов не превышают 5,4В.

Re: Выходит из строя МК

Сб авг 18, 2012 16:06:39

там даже при всем прочем (не считая отличий в адресации рсф из-за появления порта RC )... избытком валерианки попахивает... :cry:
почитайте повнимательней даташит и апноты по тактическому применению узлов МК...
если уж стоит _MCLRE_OFF то внешний резистор лиш проблем создаст (правда в случае репрограммирования "высоковольтный" программатор потребуется)
ну и проче "прелести"...
на... там ацп затесался - детектор пропадания питания значительно проще выполняется ( и совсем не в том месте), при том, что особенности применения Т1 в качестве секунд-генеатора не использованы вообще...
не мешало бы также иметь датчик начального положения стрелок (вида 12-00 или 00-00) т.к. контрольного дисплея соответствия содержимого начальнго состояния регистров внутренних часов, в отличииот прототипа, нету (или потребуется еше одна кнопушка подтверждения стартового соответствия позиции 00-00 стрелок обнулению регистров главных часов)
по блоку питания как было Г так и осталось...
мняяаав... :cry: даже ремейк идеи чужой схемы соорудить... :facepalm: пойду валерианки налижусь... :sleep:

Re: Выходит из строя МК

Сб авг 18, 2012 16:44:28

BOB51 писал(а):если уж стоит _MCLRE_OFF то внешний резистор лиш проблем создаст
ну и проче "прелести"...
на... там ацп затесался - детектор пропадания питания значительно проще выполняется ( и совсем не в том месте), при том, что особенности применения Т1 в качестве секунд-генеатора не использованы вообще...
не мешало бы также иметь датчик начального положения стрелок (вида 12-00 или 00-00) т.к. контрольного дисплея соответствия содержимого начальнго состояния регистров внутренних часов, в отличииот прототипа, нету (или потребуется еше одна кнопушка подтверждения стартового соответствия позиции 00-00 стрелок обнулению регистров главных часов)
:

MCLRE_OFF Это только на pic12f675. Этот порт задействован для определения сети.
В 16F676 MCLRE_ON. И порт для проверки наличия сети 8. Внимательно смотреть.
АЦП задействован только для кнопок коррекции и подводки часов.
А начальное положение стрелок там и не надо. Контроллер либо переводит часы на 1 минуту вперед, при наличии сети, либо запоминает количество пройденных минут, при отсутствии сети, и автоматически подводит стрелки при появлении основного питания.
И кстати Т1 свободно справляется с отсчетом 100млс.
Кстати с прошивкой проблем нет. При наличии основной сети часы довольно точно идут. А вот при переходе на резерв один раз из 10 глючат.

Re: Выходит из строя МК

Сб авг 18, 2012 18:36:53

ладушки... дерзайте... 8)
однако хоша б кусочек совести был - правильно на первоисточник прототипа указать (тем более логотип на схемке имеется) - все ж на этом же сайте такой же котейко опубликовал:
http://radiokot.ru/circuit/digital/home/55/

там же подобные темы
http://radiokot.ru/circuit/digital/home/122/
http://radiokot.ru/circuit/digital/home/51/

Re: Выходит из строя МК

Сб авг 18, 2012 18:51:40

BOB51 писал(а):ладушки... дерзайте... 8)
однако хоша б кусочек совести был - правильно на первоисточник прототипа указать (тем более логотип на схемке имеется) - все ж на этом же сайте такой же котейко опубликовал:
http://radiokot.ru/circuit/digital/home/55/
/

Я извеняюсь если показалось, что я нарушил авторские права, просто хотел указать что узел с управлением вторичными часами уже давно используется и с ним проблем нет.
Изображение
"там же подобные темы
http://radiokot.ru/circuit/digital/home/122/
http://radiokot.ru/circuit/digital/home/51/[/quote]"
а за эти ссылки спасибо, правда не совсем подходят к моей задаче.

Re: Выходит из строя МК

Сб авг 18, 2012 19:16:55

Dariele, а вы можете перезалить файл прошивки с PIC12F675 на PIC16F676.

Re: Выходит из строя МК

Сб авг 18, 2012 19:31:54

Aaantonnn15 писал(а):Dariele, а вы можете перезалить файл прошивки с PIC12F675 на PIC16F676.

Вот обе. Сразу говорю это рабочие черновики.{хотя и работаю}Прошивка будет переделываться. в 676 будет убрано использование ацп. Да и немного код поурезать.
Вложения
16F676_chasi.asm
(14.47 KiB) Скачиваний: 226
12f675_chasi.asm
(14.46 KiB) Скачиваний: 435

Re: Выходит из строя МК

Сб авг 18, 2012 22:01:22

Dariele писал(а):МК будто заглючивает. Вместо 0,9-2 мА начинает потреблять около 50мА и больше, грется, садит напряжение 5 в до 2,5В. И в итоге если не уследить выходит из строя.

Вариантов 2:
- полуоткрытое состояние выходов
- выгорают транзисторы выхода
в обоих случаях поможет индуктивность перед конденсатором питания МК
образуется CLC фильтр, перед индуктивностью стабилитрон с напряжением срабатывания на 2-3В больше напряжения питания или варистор
еще хорошо бы посмотреть откуда идет земля на конденсаторы кварца - дорожка должна идти с ножки МК и быть как можно короче
проводник на reset тоже как можно короче
а вообще разводку платы хорошо бы посмотреть
Ответить