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