Обсуждаем цифровые устройства...
Ответить

Некорректная симуляция

Вт ноя 28, 2023 02:10:46

Всем доброго времени суток.
Написал код на асме для PIC18F2520 и протестировал его на отладке. Всё работало прекрасно (переключались светодиоды, подвязанные к RB2-RB5, через каждые 0.4мс). Отладка не всегда под рукой, поэтому решил найти иной способ. PIC18 SIMULATOR IDE работал не правильно да и в принципе вызывал вопросы. Решил поставить Proteus Professional v8.13 SP0 Build 31525. И тут возникли проблемы. Собрал схему (скрин прикладываю) и залил код (его тоже прикладывают. В итоге в протеусе мигал только светодиод на выходе RB2 и с гораздо большим периодом чем 0.4.

Всем заранее спасибо.
Изображение
Код:
Спойлер
Код:
LIST P=18F2520, F=INHX32
#include <P18F2520.INC>
CONFIG   OSC = INTIO67, WDT = off, pbaden=off, LVP=OFF, XINST= OFF   

      UDATA

WREG_TEMP   RES   1
STATUS_TEMP   RES   1
BSR_TEMP   RES   1

      UDATA_ACS

EXAMPLE      RES   1
LED_REPIT   RES   1

DATA_EEPROM   CODE   0xf00000

      DE   "Test Data",0,1,2,3,4,5

RESET_VECTOR   CODE   0x0000

      goto   Main   

HI_INT_VECTOR   CODE   0x0008

      bra   HighInt

LOW_INT_VECTOR   CODE   0x0018

      bra   LowInt

      CODE
HighInt:
   BCF INTCON, TMR0IF
   
   MOVLW HIGH .25535
   MOVWF TMR0H
   MOVLW LOW .25535
   MOVWF TMR0L
   
   INCF LED_REPIT
   MOVLW .10
   CPFSEQ LED_REPIT
   BRA ext   
   
   BTFSC LATB, RB5
   BRA TurnOn1
   
   BTFSC LATB, RB2
   BRA TurnOn2
   
   BTFSC LATB, RB3
   BRA TurnOn3
   
   BTFSC LATB, RB4
   BRA TurnOn4
      
TurnOn1:
   BSF LATB, RB2
   BCF LATB, RB3
   BCF LATB, RB4
   BCF LATB, RB5
   MOVLW .0
   MOVWF LED_REPIT
   BRA ext

TurnOn2:
   BCF LATB, RB2
   BSF LATB, RB3
   BCF LATB, RB4
   BCF LATB, RB5
   MOVLW .0
   MOVWF LED_REPIT
   BRA ext

TurnOn3:
   BCF LATB, RB2
   BCF LATB, RB3
   BSF LATB, RB4
   BCF LATB, RB5
   MOVLW .0
   MOVWF LED_REPIT
   BRA ext
         
TurnOn4:
   BCF LATB, RB2
   BCF LATB, RB3
   BCF LATB, RB4
   BSF LATB, RB5
   MOVLW .0
   MOVWF LED_REPIT
   BRA ext
   
ext:
   retfie   FAST   

LowInt:
   movff STATUS,STATUS_TEMP ;save STATUS register
   movff WREG,WREG_TEMP ;save working register
   movff BSR,BSR_TEMP ;save BSR register

   ; * low priority interrupt code goes here *

   movff BSR_TEMP,BSR ;restore BSR register
   movff WREG_TEMP,WREG ;restore working register
   movff STATUS_TEMP,STATUS ;restore STATUS register
   retfie
      
Main:
   
   BCF OSCCON,IRCF0
   BSF OSCCON,IRCF1
   BSF OSCCON,IRCF2 ;110 - ???? 4???
   BCF OSCTUNE,PLLEN ;?????????? ??????? ? ???? ????????

   BCF TRISB, RB2
   BCF TRISB, RB3
   BCF TRISB, RB4
   BCF TRISB, RB5 ;????? ??????????? ??? ??????

   BCF LATB, RB2
   BCF LATB, RB3
   BCF LATB, RB4
   BCF LATB, RB5 ;???? ?????? ??????? ?? ?????
   
   BSF RCON, IPEN ;???????????? ?????????? ?????????
   BSF INTCON, GIEH;?????????? ??????? ??????????
   BSF INTCON, TMR0IE;??????? ??????????
   BCF INTCON, TMR0IF;???? ?????????? ???????????? TMR0
   BSF INTCON, TMR0IP;???? ???????? ??????????
   
   MOVLW b'00001000' ;3 ??? - ?? ??????????? ????????????
   MOVWF T0CON
   
   MOVLW HIGH .25535 ;65536-25535=50? ????????
   MOVWF TMR0H
   MOVLW LOW .25535
   MOVWF TMR0L
   
   BSF T0CON, TMR0ON
   
   MOVLW .0
   MOVWF LED_REPIT
   CycleMain:
      BRA CycleMain

end

Re: Некорректная симуляция

Вт ноя 28, 2023 06:15:23

Я бы на месте этого PIC не то что симулироваться не стал бы, а просто удалил бы такую схему.

Re: Некорректная симуляция

Вт ноя 28, 2023 06:43:15

Я не специалист в PIC-ах, но=
для протеуса просто подать питание от батарейки- МАЛО, вам нужно было ещё катоды светодиодов соединить с "ЗЕМЛЁЙ" (это в разделе "TERMINALS" элемент "GROUND"), и зачем 12 вольт вы прицепили к выводу 1 МК? Туда нужно, либо подключить элемент "POWER", либо, если нужен "сброс" - кнопку сброса или "LOGICSTATE" из "Debugging Tools"
Изображение
Светодиоды через резисторы подключать не обязательно, но, если этот сигнал, кроме светодиода, идёт ещё куда-то, то желательно, я ставлю 100 Ом, этого достаточно..
Вложения
Схема с PIC18F.JPG
(75.59 KiB) Скачиваний: 79

Re: Некорректная симуляция

Вт ноя 28, 2023 06:57:17

можно просто светодиод сделать цифровым (в его свойствах) тогда и резистор не надо и проц при симуляции нагружает меньше

Re: Некорректная симуляция

Вт ноя 28, 2023 22:43:07

Я не специалист в PIC-ах, но=
для протеуса просто подать питание от батарейки- МАЛО, вам нужно было ещё катоды светодиодов соединить с "ЗЕМЛЁЙ" (это в разделе "TERMINALS" элемент "GROUND"), и зачем 12 вольт вы прицепили к выводу 1 МК? Туда нужно, либо подключить элемент "POWER", либо, если нужен "сброс" - кнопку сброса или "LOGICSTATE" из "Debugging Tools"
Изображение
Светодиоды через резисторы подключать не обязательно, но, если этот сигнал, кроме светодиода, идёт ещё куда-то, то желательно, я ставлю 100 Ом, этого достаточно..

За ответ спасибо.
Собирал схему на скорую руку по примеру зарубежных друзей с ютуба.
Только вот проблему это никак не решило. PORTB выводит только RB2, хотя отладка в MPLAB показывает что задействуются RB2-RB5, что собственно и планировалось.
Ответить