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

Обсуждаем цифровые устройства...
Ответить
dav1
Родился
Сообщения: 2
Зарегистрирован: Вт ноя 28, 2023 02:00:03

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

Сообщение dav1 »

Всем доброго времени суток.
Написал код на асме для 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
Реклама
tonyk
Это не хвост, это антенна
Сообщения: 1324
Зарегистрирован: Вт ноя 19, 2019 06:10:18

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

Сообщение tonyk »

Я бы на месте этого PIC не то что симулироваться не стал бы, а просто удалил бы такую схему.
Реклама
Аватара пользователя
АлександрЛ
Друг Кота
Сообщения: 43937
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

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

Сообщение АлександрЛ »

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

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

Сообщение Ivanoff-iv »

можно просто светодиод сделать цифровым (в его свойствах) тогда и резистор не надо и проц при симуляции нагружает меньше
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Эиком - электронные компоненты и радиодетали
dav1
Родился
Сообщения: 2
Зарегистрирован: Вт ноя 28, 2023 02:00:03

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

Сообщение dav1 »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4509236#p4509236"]Я не специалист в PIC-ах, но=
для протеуса просто подать питание от батарейки- МАЛО, вам нужно было ещё катоды светодиодов соединить с "ЗЕМЛЁЙ" (это в разделе "TERMINALS" элемент "GROUND"), и зачем 12 вольт вы прицепили к выводу 1 МК? Туда нужно, либо подключить элемент "POWER", либо, если нужен "сброс" - кнопку сброса или "LOGICSTATE" из "Debugging Tools"
Изображение
Светодиоды через резисторы подключать не обязательно, но, если этот сигнал, кроме светодиода, идёт ещё куда-то, то желательно, я ставлю 100 Ом, этого достаточно..[/uquote]
За ответ спасибо.
Собирал схему на скорую руку по примеру зарубежных друзей с ютуба.
Только вот проблему это никак не решило. PORTB выводит только RB2, хотя отладка в MPLAB показывает что задействуются RB2-RB5, что собственно и планировалось.
Реклама
Ответить

Вернуться в «Цифровая техника»