Ako zdebugovat interupt v C ?

Vláďa Anděl vaelektronik na vaelektronik.cz
Pátek Září 8 22:19:54 CEST 2023


Pro různé testování, kam program občas zabloudí, kolega používá 
testovací ledku, která blikne při průchodu tou či onou větví programu. 
Když mu kreslím tišťák s nějakým MCU, nesmím na ní zapomenout. Já zase, 
protože se mi na stole válí osciloskop, se obejdu i bez té ledky a těch 
testovacích výstupů si tam nadělám i víc. Zvlášť vhodné i k sledování, 
jestli se provádění programu (a s jakou rezervou) vejde do časového 
okna, pokud je program spouštěný časovačem. I tohle dokáže nadělat 
chyby, které se jinak blbě hledají.

Anděl

Dne 08.09.2023 v 15:23 Petr Labaj napsal(a):
> Omlouvám se, že jsem to nestudoval celé.
> Ale pokud se občas vypisuje něco co nemá, tak bych udělal:
> - v té přerušovací rutině, která má vypisovat DP,  bych otestoval, 
> jestli posílám na port opravdu kód pro DP
> - pokud ne, tak bych vzal ze stacku adresu, na které bylo vyvoláno 
> přerušení, a napsal bych ji do nějakého pomocného bufferu
>
> Pak bych to po chvíli zastavil v debugeru (poté, co se několikrát 
> zobrazil ten špatný segment) a zkontroloval ten seznam adres, kde se 
> program nacházel v době přerušení.
> Pokud by to byly stále stejné oblasti, zaměřil bych se na hledání tam.
> Je to jednoduchý pokus na pár řádků a pár minut.
>
> PL
>
> *******************
>
> Dne 8.9.2023 v 15:14 Jan Waclawek napsal(a):
>> [preposielam]
>>
>>
>> Ahoj,
>>
>> pouzivaju sa dva buffre MUX_RawData a RawData. Raw_Data sluzi na 
>> nastavenie
>> bitovych masiek cislic a znakov. MUX-RawData je samotny buffer, z 
>> ktoreho
>> bezi multiplexovanie dat na porty, kopiruju sa jednotlive bity.
>> Umyselne pisem porty, lebo ovladanie anod a zobrazenie znakov a 
>> cislic nie
>> je konzistentne na piny portov, ale su rozhadzane, tak aby bol pekny
>> plosny spoj. Chyba sa prejavi tak, ze na prazdnej segmentovke, na 
>> ktorej ma
>> svietit "DP" svieti "Seg_A".  Akoby sa vykonala rotacia z 8 bitu do 1 
>> bitu.
>> Neprejavuje sa to vzdy, ale z casu na cas sa to objavi a rusi to 
>> esteticky
>> dojem. Este ma napadlo, ci to nie je typicka chyba read-modify-write
>> bitovych instrukcii PIC16, ktorymi ten displej ovladam. Chybu sa mi
>> podarilo nasimulovat, ale pokazde pri inom zobrazovanom 3-cifernom 
>> cisle.
>> Chyba nie je staticka ale dynamicka. Ten kod, co som sem dal, funguje na
>> 99,9%, takze to nie je tak, ze to nefunguje vobec. Jedina tazkost pri
>> ozivovani bola synchronizacia pri kopirovani RawData do MUX_RawData. A
>> mozno je to aj tym 20 rocnym mcu, ktory uz pomaly dosluhuje. Ale 
>> prist na
>> to, co tomu je, ma dost motivuje, ale zial matam v tme.
>>
>> A.
>>
>> Skus prosim este popisat, co presne chces zobrazovat (t.j aky je obsah
>>
>> jednotlivych relevantnych premennych), a co tam vidis zobrazene (t.j. ze
>> ako sa chyba prejavuje).
>>
>> wek
>>
>> _______________________________________________
>> 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