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

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

"CBLOCK 0x000" - это как (стр.35)?
Весь текст не смотрел, но исправьте стартовый адрес ваших регистров на 0x0060 (это один из вариантов).
Реклама
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

не помогло
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Выкладывайте полный текст программы (вместе с CONFIG-ами и "шапкой программы").
Убедительная просьба: Оформите текст как "Code" и спрячьте его под спойлер.
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

програмка через ацп анализирует напряжение и отображает через portc только наименьшее значение, пробую плавно менять напряжение все работает но как только дохожу до очень малых значений измерений все сбрасывается или резко отключаю напряжение от RB4 другими словами высокое напряжение или малое код программы работает тотже, измеряю 1,5вольта и меньше .
"Оформите текст как "Code" и спрячьте его под спойлер."- как это?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

varella56 писал(а):как это?
"Кнопками" выше поля текста (перед отправкой сообщения).
Реклама
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

Спойлер

Код: Выделить всё

;******************************************************************************
;                                                                             *
;   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
 
 
 

 

 
 


 
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

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

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

Сообщение varella56 »

я думаю не в нажатии кнопок проблема потому что организованно два цикла, один цикл проверяет нажата ли кнопка RB7 и если нажата то переходит в основной где происходят замеры и проверяется не нажата ли кнопка RB6. после нажатий на RB7 и RB6 выполняется задержка размером в секунду для исключения влияния дребезга. но если бы во время основного цикла RB6 ловила помеху то программа должна перейти в цикл обработки нажатия RB7,а не на метку START. я для точной уверенности и прописал после старта программы до выполнения этих двух циклов включение двух младших LCD они горят до нажатия RB7. так вот когда сбой происходит загораются две лампочки. питание пробовал от разных компьютерных блоков питания, от батареек. менял кондеры. все признаки происходящего сброса по питанию но происходит только во время замеров и отображения через портС. во всех других случаях проблем с питанием не наблюдается
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Вы точно уверены что программатор реально прописывает Config-и?
Проверьте: Если есть реакция на уровень на выводе MCLR (в вашей программе он отключен) - Config-и не прописываются.
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

подключил кнопку к MCLR, сброс при нажатии кнопки не происходит, а вот программа заработала без сбоев. почему так бывает?
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Это уже читать pdf нужно и смотреть что, к чему и как подключено.
Лично я, всегда делаю полный INIT контроллера при старте и даже думать не хочу что будет, если я не "пройдусь по всем регистрам" периферии.
Чётких условий в программе для Reset-а у вас нет (за исключением неполного Init-а).
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

Огромное вам спасибо Albert_V! без вас не разобрался бы. искал причину где угодно только не здесь. И еще один вопрос с чем сравнивает АЦП уровень напряжения? в MPLABе с опорным 3.3 вольтами, в PROTEUSе с 5 вольтами, в реальности чип 4.5 вольта не измеряет уходит в сброс. а 3 вольта измеряет но по формуле рассчитываю получается что чип сравнивает с 5 вольтами. почему тогда 4.5 вольта отказывается измерять?
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

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

Добавлено after 7 minutes 22 seconds:
Про опорное, попробую объяснить "на двух пальцах":
Если входное напряжение равно "0" - в идеале, с ADC вы получите 000h. Если входное равно (или превышает) опорное - максимальное значение (для 10-ти битного - 1023d).
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

напряжение питания у меня 5 вольт, 3 вольта измеряю и полученное бинарное значение перевожу по формуле 5/1023*бинарное значение=3 вольта. Так если чип сравнивает с 5 вольтами почему отказывается замерять 4.5 вольта?
при измерении 4.5 вольта в сброс уходит, и программа начинается с начала
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Он не может "отказаться измерять" (по крайней мере, за мою практику я ни разу с этим не сталкивался).
Вы берёте только старший байт (не проверял) 10-битного числа, поэтому делить надо на 256.
Так же, не забывайте, что выходное сопротивление источника напряжения (которого измеряете) должно быть как можно меньше. Грубо говоря, если последовательно со входом ADC вы поставили 100К - про измерения можно забыть.
Надеюсь, входное на ADC не превышает напряжение питания?
-----
P.S.
Если вы говорите про симулирование - тут я не советчик.
Протезом и пр. принципиально не пользуюсь.
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

так как только 8 бит я к бинарному результату прибавляю 2 нуля с права. 9 вольтовую батарейку делил 3 резисторами по 460 КОм каждый, прекрасно измеряет 3 вольта, а вот 4.5 не хочет, в сброс уходит, я тоже считаю что должен все лампочки зажечь.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Выложите фото вашей платы (или макета).
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

по фото трудно будет что разобрать ) куча всего не подключенного не убрано с платы. не понятно следующее - судя по включенным лампочкам при измерении 3 вольт загораются почти все, отсюда следует что чип сравнивает с 3.3 вольта. а применяя формулу получается что с 5 вольтами.??????
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Надеюсь, вы не про симуляцию?
Какое напряжение питания реального PIC18F14K50?
varella56
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 02, 2017 21:31:20

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

Сообщение varella56 »

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

Вернуться в «PIC»