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

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Сб ноя 04, 2017 23:11:35

"CBLOCK 0x000" - это как (стр.35)?
Весь текст не смотрел, но исправьте стартовый адрес ваших регистров на 0x0060 (это один из вариантов).

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Сб ноя 04, 2017 23:24:00

не помогло

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Сб ноя 04, 2017 23:36:31

Выкладывайте полный текст программы (вместе с CONFIG-ами и "шапкой программы").
Убедительная просьба: Оформите текст как "Code" и спрячьте его под спойлер.

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Сб ноя 04, 2017 23:45:33

програмка через ацп анализирует напряжение и отображает через portc только наименьшее значение, пробую плавно менять напряжение все работает но как только дохожу до очень малых значений измерений все сбрасывается или резко отключаю напряжение от RB4 другими словами высокое напряжение или малое код программы работает тотже, измеряю 1,5вольта и меньше .
"Оформите текст как "Code" и спрячьте его под спойлер."- как это?

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Сб ноя 04, 2017 23:49:11

varella56 писал(а):как это?
"Кнопками" выше поля текста (перед отправкой сообщения).

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Сб ноя 04, 2017 23:53:54

Спойлер
Код:
;******************************************************************************
;                                                                             *
;   This file is a basic code template for code generation on the             *
;   PIC18F14K50. 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.                                                         *
;                                                                             *
;   Refer to the respective data sheet for additional information on the      *
;   instruction set.                                                          *
;                                                                             *
;******************************************************************************
;                                                                             *
;    Filename:         xxx.asm                                                *
;    Date:                                                                    *
;    File Version:                                                            *
;    Author:                                                                  *
;    Company:                                                                 *
;                                                                             *
;******************************************************************************
;                                                                             *
;    Files Required: P18F14K50.INC                                            *
;                                                                             *
;******************************************************************************
;                                                                             *
;    Notes:                                                                   *
;                                                                             *
;******************************************************************************
;                                                                             *
;    Revision History:                                                        *
;                                                                             *
;******************************************************************************

;----------
; PROCESSOR DECLARATION
;----------

     LIST      P=PIC18F14K50          ; list directive to define processor
     #INCLUDE <P18F14K50.INC>         ; processor specific variable definitions

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

; PIC18F14K50 Configuration Bit Settings

; ASM source line config statements


; CONFIG1L
  CONFIG  CPUDIV = NOCLKDIV     ; CPU System Clock Selection bits (No CPU System Clock divide)
  CONFIG  USBDIV = OFF          ; USB Clock Selection bit (USB clock comes directly from the OSC1/OSC2 oscillator block; no divide)

; CONFIG1H
  CONFIG  FOSC = HS             ; Oscillator Selection bits (HS oscillator)
  CONFIG  PLLEN = ON            ; 4 X PLL Enable bit (Oscillator multiplied by 4)
  CONFIG  PCLKEN = OFF          ; Primary Clock Enable bit (Primary clock is under software control)
  CONFIG  FCMEN = OFF           ; Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor disabled)
  CONFIG  IESO = OFF            ; Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

; CONFIG2L
  CONFIG  PWRTEN = ON          ; Power-up Timer Enable bit (PWRT disabled)
  CONFIG  BOREN = OFF       ; Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
  CONFIG  BORV = 19             ; Brown-out Reset Voltage bits (VBOR set to 1.9 V nominal)

; CONFIG2H
  CONFIG  WDTEN = OFF           ; Watchdog Timer Enable bit (WDT is controlled by SWDTEN bit of the WDTCON register)
  CONFIG  WDTPS = 32768         ; Watchdog Timer Postscale Select bits (1:32768)

; CONFIG3H
  CONFIG  HFOFST = OFF           ; HFINTOSC Fast Start-up bit (HFINTOSC starts clocking the CPU without waiting for the oscillator to stablize.)
  CONFIG  MCLRE = OFF           ; MCLR Pin Enable bit (RA3 input pin enabled; MCLR disabled)

; CONFIG4L
  CONFIG  STVREN = OFF          ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
  CONFIG  LVP = OFF              ; Single-Supply ICSP Enable bit (Single-Supply ICSP enabled)
  CONFIG  BBSIZ = OFF           ; Boot Block Size Select bit (1kW boot block size)
  CONFIG  XINST = OFF           ; Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

; CONFIG5L
  CONFIG  CP0 = OFF             ; Code Protection bit (Block 0 not code-protected)
  CONFIG  CP1 = OFF             ; Code Protection bit (Block 1 not code-protected)

; CONFIG5H
  CONFIG  CPB = OFF             ; Boot Block Code Protection bit (Boot block not code-protected)
  CONFIG  CPD = OFF             ; Data EEPROM Code Protection bit (Data EEPROM not code-protected)

; CONFIG6L
  CONFIG  WRT0 = OFF            ; Table Write Protection bit (Block 0 not write-protected)
  CONFIG  WRT1 = OFF            ; Table Write Protection bit (Block 1 not write-protected)

; CONFIG6H
  CONFIG  WRTC = OFF            ; Configuration Register Write Protection bit (Configuration registers not write-protected)
  CONFIG  WRTB = OFF            ; Boot Block Write Protection bit (Boot block not write-protected)
  CONFIG  WRTD = OFF            ; Data EEPROM Write Protection bit (Data EEPROM not write-protected)

; CONFIG7L
  CONFIG  EBTR0 = OFF           ; Table Read Protection bit (Block 0 not protected from table reads executed in other blocks)
  CONFIG  EBTR1 = OFF           ; Table Read Protection bit (Block 1 not protected from table reads executed in other blocks)

; CONFIG7H
  CONFIG  EBTRB = OFF           ; Boot Block Table Read Protection bit (Boot block not protected from table reads executed in other blocks)


;----------
 CBLOCK 0x060
  zadr
  zadr1
  zadr2
  RESULTHI
  RESULTLO
  ENDC
; VARIABLE DEFINITIONS
;
;----------

   
   






         ORG     0x0000            ; processor reset vector
          GOTO    START             ; go to beginning of program

;----------
; HIGH PRIORITY INTERRUPT VECTOR
;----------

ISRH      ORG     0x0008

          ; Run the High Priority Interrupt Service Routine
          GOTO    HIGH_ISR           

;----------
; LOW PRIORITY INTERRUPT VECTOR
;----------

ISRL      ORG     0x0018
         
          ; Run the High Priority Interrupt Service Routine
          GOTO    LOW_ISR             

;----------
; HIGH PRIORITY INTERRUPT SERVICE ROUTINE
;----------

HIGH_ISR 

          ; Insert High Priority ISR Here

          RETFIE  FAST

;----------
; LOW PRIORITY INTERRUPT SERVICE ROUTINE
;----------

LOW_ISR
         
          RETFIE

;----------
; MAIN PROGRAM
;----------

START
   
     MOVLB 00Fh
    CLRF TRISA
    CLRF TRISB
    CLRF TRISC
    CLRF ADCON1
    CLRF ADCON2
    CLRF ANSELH
    CLRF ANSEL
   
    CLRF LATC
    MOVLW 003h
    MOVWF LATC,1
   
         MOVLW 00Eh ;left justify, FOSC/64,
         MOVWF ADCON2,1 ; & 2TAD ACQ time
         MOVLW 000h ;ADC ref = Vdd,Vss
         MOVWF ADCON1,1 ;
         BSF TRISB,4,1 ;Set RB4 to input
         BSF ANSELH,2,1 ;Set RB4 to analog
     
         BSF TRISB,7,1
         BSF TRISB,6,1
         MOVLW 0xC0
         MOVWF WPUB,1
         BCF INTCON2,7,1
RAB1
         MOVLW 028h ;AN10, ADC off
         MOVWF ADCON0,1
    MOVLB 000h
         MOVLW 0FFh
         MOVWF RESULTLO,1
         MOVLW 0FFh
         MOVWF RESULTHI,1
RAB
     
    MOVLB 00Fh
         BTFSS PORTB,7,1
         GOTO VKL1
         NOP
         NOP
     
         GOTO RAB
   
VKL1
    CALL ZADER1
   
     
VKL 
    MOVLB 00Fh
         BTFSS PORTB,6,1
         GOTO RABNACH
    GOTO OSNOV
         
 
RABNACH
   
         CALL ZADER1
    GOTO RAB1
   
OSNOV
    MOVLB 00Fh
         MOVLW 029h ;AN10, ADC on
         MOVWF ADCON0,1 ;
         CALL ZADER
    MOVLB 00Fh
         BSF ADCON0,GO,1;Start conversion
ADCPoll
         BTFSC ADCON0,GO,1 ;Is conversion done?
         GOTO ADCPoll ;No, test again
            ; Result is complete - store 2 MSbits in
            ; RESULTHI and 8 LSbits in RESULTLO
         MOVFF ADRESH,RESULTHI
         MOVFF RESULTHI,WREG
    MOVLB 000h
         CPFSGT RESULTLO,1
         GOTO DOP
GOR     
         MOVFF RESULTHI,RESULTLO
         MOVFF RESULTHI,LATC
    CALL ZADER
         GOTO VKL
 
 
 
DOP 
    MOVLB 000h
         CPFSEQ RESULTLO,1
         GOTO DOP1
         GOTO GOR
 
DOP1
    MOVLB 000h
         CPFSLT RESULTLO,1
         NOP
         GOTO VKL
 
ZADER
 
    MOVLB 000h
         MOVLW 04Fh
         MOVWF zadr,1
         
ZAD
 

         DECFSZ zadr,1,1
         GOTO ZAD

 

         
         NOP
         NOP
         
   
   
 
 
         RETURN
   
ZADER1
 
    MOVLB 000h
         MOVLW 0F2h
         MOVWF zadr,1
         MOVLW 0CCh
         MOVWF zadr1,1
         MOVLW 03Dh
         MOVWF zadr2,1
         NOP
         NOP
         NOP
 
ZAD1
 

         DECFSZ zadr,1,1
         GOTO ZAD1

         DECFSZ zadr1,1,1
         GOTO  ZAD1
 
         DECFSZ zadr2,1,1
         GOTO ZAD1
         NOP
         NOP
 
         RETURN
 
 


          END
 
 
 

 

 
 


 

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 00:09:58

Первое, что "бросилось в глаза": Когда вы делаете перезапись стартовых значений для сравнения по кнопке, подключенной к PORTB,6 - вместо записи в ADCON0 (выключение ADC), идёт обращение к регистру по адресу 00C2h (в вашем случае, проблема не в этом).
Подозреваю что проблема у вас в другом:
Вы сделали "подтяжку" кнопок к "+" внутренним Pull-up. Ток "подтяжки" там достаточно маленький (типовой 250µA) и, скорее всего, на длинных проводах вы "ловите помеху", которой достаточно для того, что бы "посчитать" что кнопка нажата (подавления "дребезга" у вас нет).
Сделайте подтяжку RB6 и RB7 к "+" резисторами номиналом 1К.
Так же, возможно, у вас проблемы с питанием (к примеру, не поставили конденсаторы по питанию или до них "километр провода")...
Что касается самой программы - имея "на борту" таймеры, "лепить" программные задержки не вижу смысла.

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 21:06:52

я думаю не в нажатии кнопок проблема потому что организованно два цикла, один цикл проверяет нажата ли кнопка RB7 и если нажата то переходит в основной где происходят замеры и проверяется не нажата ли кнопка RB6. после нажатий на RB7 и RB6 выполняется задержка размером в секунду для исключения влияния дребезга. но если бы во время основного цикла RB6 ловила помеху то программа должна перейти в цикл обработки нажатия RB7,а не на метку START. я для точной уверенности и прописал после старта программы до выполнения этих двух циклов включение двух младших LCD они горят до нажатия RB7. так вот когда сбой происходит загораются две лампочки. питание пробовал от разных компьютерных блоков питания, от батареек. менял кондеры. все признаки происходящего сброса по питанию но происходит только во время замеров и отображения через портС. во всех других случаях проблем с питанием не наблюдается

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 21:15:09

Вы точно уверены что программатор реально прописывает Config-и?
Проверьте: Если есть реакция на уровень на выводе MCLR (в вашей программе он отключен) - Config-и не прописываются.

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 22:44:28

подключил кнопку к MCLR, сброс при нажатии кнопки не происходит, а вот программа заработала без сбоев. почему так бывает?

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 23:29:16

Это уже читать pdf нужно и смотреть что, к чему и как подключено.
Лично я, всегда делаю полный INIT контроллера при старте и даже думать не хочу что будет, если я не "пройдусь по всем регистрам" периферии.
Чётких условий в программе для Reset-а у вас нет (за исключением неполного Init-а).

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 23:43:14

Огромное вам спасибо Albert_V! без вас не разобрался бы. искал причину где угодно только не здесь. И еще один вопрос с чем сравнивает АЦП уровень напряжения? в MPLABе с опорным 3.3 вольтами, в PROTEUSе с 5 вольтами, в реальности чип 4.5 вольта не измеряет уходит в сброс. а 3 вольта измеряет но по формуле рассчитываю получается что чип сравнивает с 5 вольтами. почему тогда 4.5 вольта отказывается измерять?

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 23:54:03

Конкретно в вашей программе, на данный момент, опорным является напряжение питания (Vdd).
У вас есть возможность выбрать 3 варианта (регистр ADCON1).

Добавлено after 7 minutes 22 seconds:
Про опорное, попробую объяснить "на двух пальцах":
Если входное напряжение равно "0" - в идеале, с ADC вы получите 000h. Если входное равно (или превышает) опорное - максимальное значение (для 10-ти битного - 1023d).

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Вс ноя 05, 2017 23:56:38

напряжение питания у меня 5 вольт, 3 вольта измеряю и полученное бинарное значение перевожу по формуле 5/1023*бинарное значение=3 вольта. Так если чип сравнивает с 5 вольтами почему отказывается замерять 4.5 вольта?
при измерении 4.5 вольта в сброс уходит, и программа начинается с начала

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Пн ноя 06, 2017 00:06:51

Он не может "отказаться измерять" (по крайней мере, за мою практику я ни разу с этим не сталкивался).
Вы берёте только старший байт (не проверял) 10-битного числа, поэтому делить надо на 256.
Так же, не забывайте, что выходное сопротивление источника напряжения (которого измеряете) должно быть как можно меньше. Грубо говоря, если последовательно со входом ADC вы поставили 100К - про измерения можно забыть.
Надеюсь, входное на ADC не превышает напряжение питания?
-----
P.S.
Если вы говорите про симулирование - тут я не советчик.
Протезом и пр. принципиально не пользуюсь.

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Пн ноя 06, 2017 00:19:11

так как только 8 бит я к бинарному результату прибавляю 2 нуля с права. 9 вольтовую батарейку делил 3 резисторами по 460 КОм каждый, прекрасно измеряет 3 вольта, а вот 4.5 не хочет, в сброс уходит, я тоже считаю что должен все лампочки зажечь.

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Пн ноя 06, 2017 00:20:37

Выложите фото вашей платы (или макета).

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Пн ноя 06, 2017 00:29:18

по фото трудно будет что разобрать ) куча всего не подключенного не убрано с платы. не понятно следующее - судя по включенным лампочкам при измерении 3 вольт загораются почти все, отсюда следует что чип сравнивает с 3.3 вольта. а применяя формулу получается что с 5 вольтами.??????

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Пн ноя 06, 2017 00:32:39

Надеюсь, вы не про симуляцию?
Какое напряжение питания реального PIC18F14K50?

Re: PIC18F14K50 сбрасывается при использовании PORTC (asm)

Пн ноя 06, 2017 00:37:23

нет не про симуляцию, 5 вольт от PC БП.
Ответить