Ako zdebugovat interupt v C ?

Jan Waclawek konfera na efton.sk
Pátek Září 8 15:14:31 CEST 2023


[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



Další informace o konferenci Hw-list