Ako zdebugovat interupt v C ?

Jan Waclawek konfera na efton.sk
Čtvrtek Září 7 20:57:46 CEST 2023


[preposielam]

Ahojte,

mam posledne dni taky trochu zapleklity problem s interuptom v C. Pri
zobrazeni na multiplexovanom displaji mi namiesto desatinnej bodky
zobrazuje segment_A. Teda z casu na cas sa zmrsi zobrazenie na displaji.
Zaujimave na tom je to, ze pri dalsom prechode zobrazovacou rutinou sa ten
zmrseny displaj zase opravi...

V programe sa pouziva interupt od timera 250us. Kazdy 4 interupt sa vykona
obsluha multiplexu 7segmentoveho displeja. V RAM su dva bitove buffre na
zobrazovanie na displaji. Jeden sa pouziva na pripavu dat na zobrazenie,
druhy potom na live zobrazenie v interupte. Synchronizacia prebehne v
interupte, ked sa prvy buffer skopiruje do druheho, ked sa nastavi
synchronizacny flag.

Cely kod je napisany v xc8 v2.43, a bezi na 16f874 z cvicnych dovodov. Kod
obsluhy displeja je preportovany z displeja s MM5450. Nejaka bota v tom
porte displeja je, ale netusim aka a kde. A chcel by som sa spytat vazeneho
koloqia na nejake tipy na to ako oddebugovat rutinu interruptu v C resp.
kde by mohla byt zakopana logicka bota v obsluhe displeja.

Kod do konfery posielat nebudem, pretoze to je jeden dlhy file, v ktorom je
vsetko. Bola to rychlovka a chcel som co najskor testovat a vyuzit teple
letne dni. S GitHub-om moc pracovat neviem, ale mohla by to byt cesta na
zdielanie kodu.

A.



Další informace o konferenci Hw-list