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

Re: Перезагрузка микроконтроллера

Вт май 28, 2019 02:41:15

... в любом случае, даже 10MHz и PIC16 c PLL хватает на то, чтобы просто управлять адресуемыми светодиодами.

Re: Перезагрузка микроконтроллера

Чт янв 07, 2021 17:15:28

[uquote="abc",url="/forum/viewtopic.php?p=3640846#p3640846"]... в любом случае, даже 10MHz и PIC16 c PLL хватает на то, чтобы просто управлять адресуемыми светодиодами.

У меня и есть 10 Мгц с PLL, токо pic18f2620, на халяву достался).

Re: Перезагрузка микроконтроллера

Сб фев 27, 2021 19:30:19

Здравствуйте Радиокоты!
В очередной раз прошу помощи.
Контроллер идет в перезагрузку, почему идет не могу понять.
Прога простенькая( для показа), что она у меня доходит до выделенной строчки (в дебаггере mplabx)
и выскакивает лист дизассемблера, правда если дальше по шагам в дебаггере движешься все ок. И в железе
вижу, что перезагружается контроллер. Понимаю, что прога летит куда то в память программы с последующей
перезагрузкой контроллера.

Код:
 #include "p18f452.inc"
;----------
; CONFIG1H
  CONFIG  OSC = HSPLL          ; Oscillator Selection bits (HS oscillator with PLL enabled/Clock frequency = (4 x FOSC))
  CONFIG  OSCS = OFF            ; Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source))

; CONFIG2L
  CONFIG  PWRT = ON            ; Power-up Timer Enable bit (PWRT disabled)
  CONFIG  BOR = OFF             ; Brown-out Reset Enable bit (Brown-out Reset enabled)
  CONFIG  BORV = 20             ; Brown-out Reset Voltage bits (VBOR set to 2.0V)

; CONFIG2H
  CONFIG  WDT = OFF            ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
  CONFIG  WDTPS = 128           ; Watchdog Timer Postscale Select bits (1:128)

; CONFIG3H
  CONFIG  CCP2MUX = OFF         ; CCP2 Mux bit (CCP2 input/output is multiplexed with RB3)

; CONFIG4L
  CONFIG  STVR = OFF            ; Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will not cause RESET)
  CONFIG  LVP = ON              ; Low Voltage ICSP Enable bit (Low Voltage ICSP enabled)

; CONFIG5L
  CONFIG  CP0 = OFF             ; Code Protection bit (Block 0 (000200-001FFFh) not code protected)
  CONFIG  CP1 = OFF             ; Code Protection bit (Block 1 (002000-003FFFh) not code protected)
  CONFIG  CP2 = OFF             ; Code Protection bit (Block 2 (004000-005FFFh) not code protected)
  CONFIG  CP3 = OFF             ; Code Protection bit (Block 3 (006000-007FFFh) not code protected)

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

; CONFIG6L
  CONFIG  WRT0 = OFF            ; Write Protection bit (Block 0 (000200-001FFFh) not write protected)
  CONFIG  WRT1 = OFF            ; Write Protection bit (Block 1 (002000-003FFFh) not write protected)
  CONFIG  WRT2 = OFF            ; Write Protection bit (Block 2 (004000-005FFFh) not write protected)
  CONFIG  WRT3 = OFF            ; Write Protection bit (Block 3 (006000-007FFFh) not write protected)

; CONFIG6H
  CONFIG  WRTC = OFF            ; Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected)
  CONFIG  WRTB = OFF            ; Boot Block Write Protection bit (Boot Block (000000-0001FFh) 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 (000200-001FFFh) not protected from Table Reads executed in other blocks)
  CONFIG  EBTR1 = OFF           ; Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks)
  CONFIG  EBTR2 = OFF           ; Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks)
  CONFIG  EBTR3 = OFF           ; Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks)

; CONFIG7H
  CONFIG  EBTRB = OFF           ; Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks)

;=========================
;   ПЕРЕМЕННЫЕ
;=========================
    CBLOCK   H'10'       
    n       ;ДЛЯ ВСЯКОЙ ЕРУНДЫ
    Reg_1
    Reg_2
    Reg_3 ;РЕГИСТРЫ ДЛЯ РАЗНЫХ ЦЕЛЕЙ 
    data_USART
     ENDC
   
    CBLOCK   H'80'   
    W_TEMP   ;variable used for context saving
    STATUS_TEMP   ;variable used for context saving
    BSR_TEMP   ;variable used for context saving
    ENDC
 
;    CBLOCK   H'100'
;    pix_RGB : 162      ;ПЕРЕМЕННЫЕ ПИКСЕЛЕЙ (ПО ТРИ БАЙТА RBG) ОЧЕРЕДНОСТЬ G-R-B
;    ENDC               ;54*3=162
;=========================
;       КОНСТАНТЫ
;=========================
;      ВЫХОДЫ
;----------   
#DEFINE      LED_RED    LATD,6   ;КРАСНЫЙ СВЕТОДИОД НА ПЛАТЕ
#DEFINE      LED_GREEN   LATD,7   ;ЗЕЛЁНЫЙ СВЕТОДИОД НА ПЛАТЕ
#DEFINE      LED_BLUE   LATB,4   ;СИНИЙ СВЕТОДИОД НА ПЛАТЕ
;----------
;      ВХОДЫ
;----------
#DEFINE   ENCODER1      PORTC,1   ;ЭНКОДЕР
#DEFINE   ENCODER2      PORTC,2   ;ЭНКОДЕР
;----------
BSR_SFR      EQU      .1        ;ВЫБОР БАНКА SFR
;=========================
;   ДАННЫЕ EEPROM
;=========================
DATAEE    ORG       0XF00000
    DE       "CubikRubik"
    DE      "titr"        ; Place 't' 'i' 't' 'r'
    DE   H'2B',H'BB',H'BB',H'00',H'55',H'88',H'00',H'11'   
    DE   .255,.255,.128,.0,.49,.99,.52,.126
;=========================
    ORG    H'0'            ; processor reset vector
    NOP
    GOTO    START                   ; go to beginning of program
;----------   
;   ПРЕРЫВАНИЕ
    ORG   H'8'
    MOVFF   STATUS,STATUS_TEMP   ;SAVE STATUS REGISTER
    MOVFF   WREG,W_TEMP         ;SAVE WORKING REGISTER
    MOVFF   BSR,BSR_TEMP      ;SAVE BSR REGISTER
   
   MOVF    RCREG,W
    MOVWF   data_USART
   
    MOVFF   BSR_TEMP,BSR      ;RESTORE BSR REGISTER
    MOVFF   W_TEMP,WREG         ;RESTORE WORKING REGISTER
    MOVFF   STATUS_TEMP,STATUS   ;RESTORE STATUS REGISTER
    RETFIE
;=======
 ;        ИНИЦИАЛИЗАЦИЯ
;=========================
    ORG      H'26'
START
    CLRF             PORTA      ;7 БИТ
    CLRF             LATA
    MOVLW      B'00000000'
    MOVWF      ADCON1      ;ЦИФРОВЫЕ I/O
    MOVLW      B'00000000'   ;1,2,3,4,6,7-ВХОДЫ, 0,5-ВЫХОДЫ
    MOVWF      TRISA      ;
    CLRF              PORTB      ; 8 БИТ
    CLRF              MOVLW      B'00000000'   ;ПРОВЕРИТЬ SS=1
    MOVWF      TRISB      ;ВЫХОДЫ 0,5,6,7; ВХОДЫ 1,2,3,4 КНОПКИ УПРАВЛЕНИЯ
    CLRF              PORTC      ; 8 БИТ
    CLRF              LATC
    MOVLW      B'10000110'   ;
    MOVWF      TRISC      ;1,2 - ЭНКОДЕР-ВХОДЫ,6-TX-ВЫХОД, 7-RX-ВХОД, ОСТАЛЬНЫЕ ВЫХОДЫ
    CLRF              PORTD      ; 8 БИТ
    CLRF              LATD
    MOVLW      B'00000000'   ;
    MOVWF      TRISD      ;ПОКА ВСЕ ВЫХОДЫ
    CLRF              PORTE      ;3 БИТA
    CLRF      LATE
    MOVLW      B'00000111'
    MOVWF      ADCON1      ;ЦИФРОВЫЕ I/O
    MOVLW      B'00000000'   ;1,2,3,4,6,7-ВХОДЫ, 0,5-ВЫХОДЫ
    MOVWF      TRISE      ;
    MOVLW      B'00000000'   ;12 mhz
    MOVWF      OSCCON      ;ВНЕШНИЙ КВАРЦ, 12 МГЦ (PLL*4=48 МГЦ)
    CLRF      LATA
    CLRF      LATB
    CLRF      LATC
    CLRF      LATD
    CLRF      LATE    
    BCF      INTCON,GIE_GIEH,ACCESS   ;ПРЕРЫВ.   ЗАПРЕЩЕНЫ
;----------
 ; ПОМОРГАЕМ
;----------
   BSF          LED_RED
  CALL         DELAY_300ms; ТУТ СПОТЫКАЕТСЯ ПРОГРАММА И ВЫСКАКИВАЕТ ЛИСТ ДИЗАССЕМБЛЕРА!
   BCF          LED_RED
   BCF          LED_GREEN
   BCF          LED_BLUE
   MOVLW        .80
   MOVWF        n
NNN   
   BSF          LED_GREEN
  CALL         DELAY_300ms
   BCF          LED_GREEN
   MOVLW        .55
   MOVWF        data_USART
   BSF          LED_BLUE
   CALL         DELAY_300ms
   BCF          LED_BLUE
   INCF         n,F
   RLNCF        data_USART,F
   BRA          NNN
   
   
DELAY_300ms   
   movlw       .68
   movwf       Reg_1
   movlw       .68
   movwf       Reg_2
   movlw       .19
   movwf       Reg_3
   decfsz      Reg_1
   bra         $-2
   decfsz      Reg_2
   bra         $-6
   decfsz      Reg_3
   bra         $-.10
   RETURN   
;========
 
    END
Ответить