Re: defektní PIC16F18015

Jindrich Fucik fulda na seznam.cz
Pondělí Duben 1 19:13:59 CEST 2024


Tak to jsem z toho jelen. Vzal jsem nový procesor a chová se stejně.
V příloze je obrázek z analyzátoru.
pochopitelně když program krokuji, tak se chová normálně. Nic takového, 
že by přerušení skočilo někam jinam a běžel kus jiného programu.

Dne 01.04.2024 v 17:22 Jindrich Fucik napsal(a):
> 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
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
A non-text attachment was scrubbed...
Name: zaznam_kodu.png
Type: image/png
Size: 10992 bytes
Desc: [žádný popis není k dispozici]
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240401/8d54d761/attachment-0001.png>


Další informace o konferenci Hw-list