Re: defektní PIC16F18015

Jindrich Fucik fulda na seznam.cz
Pondělí Duben 1 17:22:56 CEST 2024


To není můj případ, start přerušení trvá tuším 3 instrukční cykly, 
procesor jede 8MHz, takže 1,5μs nebo tak něco. Program je velmi 
primitivní, je napsaný v assembleru, abych vyloučil nějakou botu z jazyka.
Nakopíruji sem podstatnou část programu. Nepodstatná nastavuje config: 
vypnutý watchdog, interní oscilátor 8MHz a tak.

Program nedělá nic, než že v mainu bliká jedním výstupem a v přerušení 
druhým. přerušení je od časovače (v příkladu Timer 0, ale stejně se 
chová i Timer 2) a je nastaveno na 60 μs.

Na analyzátoru je pak velice zřetelné, že proběhne 25 bliknutí RA1, pak 
je těch 350μs mezera a pak jedno bliknutí RA0 a pak hned zase 25x RA1 
(jasně, ten kód není optimální, je to poslední troska, než jsem to 
zabalil). Podstatné je, že ta díra je větší, než vlastní běh, takže je 
to velmi zřetelné a nemá cenu zjišťovat, jestli je něco ± jednotky 
instrukčních cyklů. Zábavné je, že stejný čas dostanu i při přepnutí 
rychlosti procesoru na 4MHz (tedy díra je asi 350μs, běh se 2x prodlouží).

-------

; Timer0 management		; used for software serial Tx time ticks - 60 micro 
sec per tick
T0CON1_INI	equ 0x51	; T0CS FOSC/4; T0CKPS 1:2; T0ASYNC not_synchronised;
T0CON0_INI	equ 0x80	; T0OUTPS 1:1; T0EN enabled; T016BIT 8-bit;
TMR0H_INI	equ 0x3B	; in 8 bit mode the TMR0H is compared same as timer2 
0x3B = 59 = LN baud rate

PIE0_INI	equ 0x20	; Enable TMR0 interrupt.
PIE1_INI	equ 0x00	; none used
PIE2_INI	equ 0x00	; none used
PIE3_INI	equ 0x00	; none used
PIE4_INI	equ 0x00	; none used

INTC_INI	equ 0xC0	; GIE enable, PIE enable


PSECT resetVec,class=CODE,delta=2,abs
resetVec:
PowerUp:

	clrf	INTCON			; Disable all interrupts
	clrf	PCLATH			; Tables on page 0
	;clrf	STATUS			; reset flags
	goto	START

PSECT isrVec,class=CODE,delta=2
isr:
Interrupt:

	movlb	0			; BANK 0
	bsf LATA,0
	nop
	bcf LATA,0
	nop
	bsf LATA,0
	BANKSEL		PIR4	; BANK 14
	bcf TMR0IF	; clear timer overflow
	retfie

START:
(...tady je miliarda přiřazení *_INI do správných registrů ...)

	movlw	INTC_INI			; GIE enable, PEIE enable
	movwf	INTCON

	movlb	0			; BANK 0

testloop:
     bsf LATA,1
     nop
     bcf LATA,1
     goto testloop
	

Dne 01.04.2024 v 13:46 Miroslav Draxal napsal(a):
> Dobrý den,
> Pozor na to, PICi si při přerušení ukládají registry soft, ne hw. Kolikrát ta obsluha toho uložení registrů je docela časově náročná.
> Standardně se ukládá
> STATUS
> WREG
> BSR
> Pokud se někde v používájí FSRx registry, a v přerušení Se používají také, potom se i ty ukládají
> FSR1
> FSR1H
> FSR2
> FSR2H
> 
> A můžou se ukládat i další. Při ukončení přerušení se zase registry obnovují. Tudíž je tam nějaká režie a prodleva, než se přerušení dostane na příslušnou obsluhu. Takže pokud by docházelo k velmi častému přerušení, může se i občas nějaké ztratit.
> 
> A ještě jedna věc, na kterou se zapomíná.
> Novější procesory umí ukládat STATUS, WREG, BSR v režimu FAST. Nebudu vypisovat podrobnosti, nakoukněte do *-.pdf konkrétního PICu, jestli umí. Ovšem pozor, pokud odlaďujete program třeba s ICDx, potom tyto FAST rutiny využívá ICDx. Pokud pak natvrdo pustíte program v samotném PICu, tyto rutiny většinou potom používá přerušení s vysokou prioritou. Takže časování je následně o něco rychlejší než při ladění HW prostředky.
> 
> Nahoďte při jaké příležitosti se seká, jestli je to při periodickém přerušení (např. od TMRx), nebo něčeho externího. Třeba nás něco napadne.
> 
> Míra
> 
> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jindrich Fucik
> Sent: Monday, April 1, 2024 12:09 PM
> To: HW-news
> Subject: defektní PIC16F18015
> 
> Ahoj,
> 
> občas si tu někdo hraje s těmito typy procesorů. Narazil jsem na jeden
> defektní kus. Bohužel to byl ten, kterej jsem si odvezl na velikonoce a
> nemám tu náhradu.
> Projevuje se tak, že při vyvolání přerušení se procesor na cca 350 μs
> zasekne. jak to tak bývá, tak mi trvalo dva dny zjistit, co se děje a
> proč se nemohu dopočítat času nějaké události.
> 
> Tak třeba se někomu tato informace bude hodit. Nebo možná někdo ví o
> něčem, co jsem špatně nastavil a může mi to říci.
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list