Помогите подправить прошивку для pic контроллера 12f629

gosha2393
Offline
Зарегистрирован: 08.12.2014

Здравствуйте ищу человека для редактирования прошивки, а в случае невозможности отредатктировать - написать новую. Готовое устройство на чём тестировать уже есть. Прибор считывает входящую частоту ШИМ сигнала, и если эта частота превышает 60 Гц, замыкается реле. Принципиальную схему прилагаю.

Сейчас по какой то причине реле срабатывает только при достижении частоты в 67 Гц.

Основная проблема заключается в том что в наличии имеется только .hex файл.

Диасемблировав получил вот это:

; original File = C:\Users\gosha\Downloads\ref1\ref1.hex

    processor 12F629
    #include <P12F629.INC>
    __config 0x31C4
;   _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF 
;   & _INTRC_OSC_NOCLKOUT 

; RAM-Variable
LRAM_0x20 equ 0x20
LRAM_0x21 equ 0x21
LRAM_0x22 equ 0x22
LRAM_0x23 equ 0x23
LRAM_0x24 equ 0x24
LRAM_0x25 equ 0x25
LRAM_0x26 equ 0x26
LRAM_0x27 equ 0x27
LRAM_0x28 equ 0x28

; Program

    Org 0x0000

;   Reset-Vector
    BCF PCLATH,4         ; !!Bank Program-Page-Select
    BCF PCLATH,3         ; !!Bank Program-Page-Select
    GOTO LADR_0x0005
    NOP
;   Interrupt-Vector
    RETFIE
LADR_0x0005
    MOVLW 0x07
    MOVWF CMCON          ; !!Bank!! CMCON - VRCON
    MOVLW 0xFB
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVWF GPIO           ; !!Bank!! GPIO - TRISIO
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    CLRF GPIO            ; !!Bank!! GPIO - TRISIO
LADR_0x000C
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    BSF GPIO,4           ; !!Bank!! GPIO - TRISIO
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    BCF STATUS,IRP
    MOVLW 0x05
    MOVWF FSR
    MOVLW 0x10
    MOVWF LRAM_0x24
    MOVLW 0xE7
    MOVWF LRAM_0x22
    MOVLW 0x03
    MOVWF LRAM_0x23
    CALL LADR_0x0047
    MOVF LRAM_0x20,W
    MOVWF LRAM_0x26
    MOVF LRAM_0x21,W
    MOVWF LRAM_0x27
    MOVF LRAM_0x26,W
    MOVWF LRAM_0x20
    MOVF LRAM_0x27,W
    MOVWF LRAM_0x21
    MOVLW 0x3A
    MOVWF LRAM_0x22
    CLRF LRAM_0x23
    CALL LADR_0x0030
    BTFSS STATUS,Z
    GOTO LADR_0x0029
    BSF GPIO,2           ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x002A
LADR_0x0029
    BCF GPIO,2           ; !!Bank!! GPIO - TRISIO
LADR_0x002A
    GOTO LADR_0x000C
LADR_0x002B
    GOTO LADR_0x002B
    MOVLW 0x05
    GOTO LADR_0x0037
    MOVLW 0x02
    GOTO LADR_0x0037
LADR_0x0030
    MOVLW 0x06
    GOTO LADR_0x0037
    MOVLW 0x03
    GOTO LADR_0x0037
    MOVLW 0x04
    GOTO LADR_0x0037
    MOVLW 0x01
LADR_0x0037
    MOVWF LRAM_0x28
    MOVF LRAM_0x23,W
    SUBWF LRAM_0x21,W
    BTFSS STATUS,Z
    GOTO LADR_0x003E
    MOVF LRAM_0x22,W
    SUBWF LRAM_0x20,W
LADR_0x003E
    MOVLW 0x04
    BTFSC STATUS,C
    MOVLW 0x01
    BTFSC STATUS,Z
    MOVLW 0x02
    ANDWF LRAM_0x28,W
    BTFSS STATUS,Z
    MOVLW 0xFF
    RETURN
LADR_0x0047
    CLRF LRAM_0x20
    CLRF LRAM_0x21
    BCF LRAM_0x25,0
    BCF INTCON,T0IE
    BCF INTCON,T0IF
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVLW 0xC0
    ANDWF TMR0,F         ; !!Bank!! TMR0 - OPTION_REG
    BSF TMR0,0           ; !!Bank!! TMR0 - OPTION_REG
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVLW 0x07
    MOVWF TMR0           ; !!Bank!! TMR0 - OPTION_REG
LADR_0x0053
    BTFSC INTCON,T0IF
    GOTO LADR_0x0065
    BTFSC LRAM_0x25,0
    GOTO LADR_0x0060
    MOVF INDF,W
    ANDWF LRAM_0x24,W
    BTFSC STATUS,Z
    GOTO LADR_0x0053
    BSF LRAM_0x25,0
    INCF LRAM_0x20,F
    BTFSC STATUS,Z
    INCF LRAM_0x21,F
    GOTO LADR_0x0053
LADR_0x0060
    MOVF INDF,W
    ANDWF LRAM_0x24,W
    BTFSC STATUS,Z
    BCF LRAM_0x25,0
    GOTO LADR_0x0053
LADR_0x0065
    MOVLW 0x07
    MOVWF TMR0           ; !!Bank!! TMR0 - OPTION_REG
    BCF INTCON,T0IF
    MOVF LRAM_0x22,F
    BTFSC STATUS,Z
    GOTO LADR_0x006D
    DECF LRAM_0x22,F
    GOTO LADR_0x0053
LADR_0x006D
    MOVF LRAM_0x23,F
    BTFSC STATUS,Z
    GOTO LADR_0x0073
    DECF LRAM_0x23,F
    DECF LRAM_0x22,F
    GOTO LADR_0x0053
LADR_0x0073
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVLW 0x3F
    IORWF TMR0,F         ; !!Bank!! TMR0 - OPTION_REG
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    RETURN

    End

Я в програмировании pic'ов ничего не понимаю. Вообщем жду предложений кто займется. .hex файл вышлю на почту. О цене договримся с реальным исполнителем. Спасибо за внимание. 

Green
Offline
Зарегистрирован: 01.10.2015

Пишите htpicc@gmail.com.

pcb
Offline
Зарегистрирован: 02.04.2015

pcbadm на малру.

DrProg
Offline
Зарегистрирован: 07.08.2015

На Тиньку переделать нельзя?

griin
Offline
Зарегистрирован: 19.04.2015

В пиках есть регул константа. Может быть просто ее попробовать менять. Почитайте калибровка пиков