Помогите подправить прошивку для pic контроллера 12f629
- Войдите на сайт для отправки комментариев
Пт, 06/10/2017 - 19:13
Здравствуйте ищу человека для редактирования прошивки, а в случае невозможности отредатктировать - написать новую. Готовое устройство на чём тестировать уже есть. Прибор считывает входящую частоту ШИМ сигнала, и если эта частота превышает 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 файл вышлю на почту. О цене договримся с реальным исполнителем. Спасибо за внимание.
Пишите htpicc@gmail.com.
pcbadm на малру.
На Тиньку переделать нельзя?
В пиках есть регул константа. Может быть просто ее попробовать менять. Почитайте калибровка пиков