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