PIC16F15323 / ADC / sleep

Miroslav Draxal evik na volny.cz
Úterý Srpen 13 21:17:50 CEST 2019


Osobní zkušenost. Já honím přes přerušení pokud možno všechno. Ale pokud u PIC klidně i řada 18f provádím operace s double v přerušení, nastaveno na 32bit aritmetiku, tak se klidně může stát, že ten procesor bude ještě v přerušení a přijde nějaká "událost" a přijdu o ni. Samozřejmě, pokud to provedu takhle (právě tady v přerušení provádím nějaké statistické výpočty)

__interrupt(high_priority) void interrupt_high(void) {

    if (TMR3IE && TMR3IF) {// DS18B20
        do {
            TMR3IF = 0; // POZOR, NEJPRVE VYNULOVAT PŘÍZNAK PŘERUŠENÍ, OBSLUHA MŮŽE BÝT DELŠÍ, NEŽ OBNOVENÍ UDÁLOSTI
            TMR3_interrupt();
        } while (TMR3IF);
    } else {
        //        __debug_break(); //Unhandled Interrupt
        NOP();
    }
}

Tak mám jednu událost "buferovanou" protože jakmile vyskočím z TMR3_interrupt(); tak okamžitě znovu zpracuji událost, která se stala v přerušení. ALE POZOR, UŽ NEVÍM, JESTLI ONA UDÁLOST BYLA JEDNA NEBO X UDÁLOSTÍ.

Někde jsem četl doporučení Microchipu, v přerušení nastavovat pokud možno jenom příznaky, max něco jednoduchého a pokud možno z něj rychle pryč. 

Míra 

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Admin HWnews
Sent: Monday, August 12, 2019 9:29 PM
To: hw-list na list.hw.cz
Subject: Re: PIC16F15323 / ADC / sleep

Mimochodem premyslim o tom, co jste napsal....muzete nejak vysvetlit 
proc by to tak melo byt? Tedy kde je psano, ze vetsina kodu by mela byt 
resena v main smycce...

RV

Dne 12.08.2019 v 20:09 Jaroslav Buchta napsal(a):
> Ja jo. Obsluha preruseni ma byt maximalne rychla a neblokujici - 
> nastavit nejake flagy, v OS odblokovat eventy, semafory..., neco 
> jednoducheho zorganizovat v bufferech a pryc.
_______________________________________________
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