[elektro] 18f6722 szeret megszakadni, még megszakadás közben is, C18
elight
elight at gmail.hu
Mon Jan 21 13:19:59 CET 2019
Ha esetleg segítene tisztázni a részleteket,
itt is valami hasonlóról értekeznek:
https://www.microchip.com/forums/m159379.aspx
És ott a commentben:
"
DO NOT disable and reenable interrupts here. It is taken care of
automaticly.
"
Egyébként ahogy néztem nem emelik ki konkrétan
csak ezt a típust, mert az egész 18F családra
vonatkozik ez a globális kétszintű kezelési lehetőség.
Nekem még 6-8 INT szintig nem igazán
volt szükségem a kétszintű kezelésre
(meg ASM betére sem )
ezért is 16F módban szoktam hagyni.
És saját magam priorizálok és osztom
ki a time managmentet. Tapasztalatom
így sokkal könnyebb (simább ) az élet.
Üdv István
2019-01-21 13:02 keltezéssel, Gabor Jordan írta:
> Hello,
>
> Ez van előtte :
>
> #pragma code InterruptVectorHigh = 0x08
> void InterruptVectorHigh (void)
> {
> _asm
> goto InterruptHandlerHigh //jump to interrupt routine
> _endasm
> }
>
> #pragma code
> #pragma interrupt InterruptHandlerHigh
>
> ...... és innen amit bemásoltam .....
> void InterruptHandlerHigh ()
> {
> INTCONbits.GIE = 0 ;
>
> Valahonnan ezt vettem x éve, de működött mindig. Amikor visszatér,
> szépen folytatnia kell amit csinált, észrevenném ha nem tenné.
>
> Viszont akkor kiveszem a GIE tiltását, persze elvileg nem csinál
> semmit, nem ez a gond, de legyen tisztább. Azt tudtam, hogy nem kell a
> W stb. mentésével és visszaállításával foglalkozzak mint assemblerben,
> de azt nem tudtam, hogy a GIE tiltását is automatikusan belefordítja.
>
> Köszönöm,
>
> JG
>
>
> 1/21/2019 12:55 PM keltezéssel, Kiss Gabor írta:
>> On 1/21/19 10:46 AM, Gabor Jordan wrote:
>>> Üdvözletem,
>>>
>>> Kérdésem lenne, biztosan nem látok valami nagyon alap dolgot, de
>>> tegnap este már (ill. az már bőven ma volt amikor feladtam) az alig
>>> létező hajam akartam kitépni, mert hiába a megszakítás kezelés első
>>> sora, hogy GIE=0 (én nincsenek szintek, RCONbits.IPEN = 0;), akkor
>>> is, tekerem az
>>
>> Felesleges, mert a hardware ezt megteszi helyetted. Pont azért, hogy
>> ne lehessen ellenőrizetlenül beleszakítani a futó ISR-be.
>> Ez minden processzoron így van.
>> A szoftveres tiltás néha már elkésett lenne. Nehezen debugolható
>> versenyhelyzet forogna fenn.
>>
>>> Van ötletetek, ha egyszer a GIE 0, hogy a túróba tud mégis
>>> újraindulni a megszakítás?
>>
>> Még mielőtt ötletem lenne, egy megjegyzés: Nem kellene ebben a C
>> compilerben (nem ismerem ugyanis) jelezni, hogy ez egy a függvény egy
>> ISR, azaz ne sima RET utasítást fordítson a végére, hanem RETFIE-t.
>>
>> kissg
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list