( tovis | 2020. 11. 10., k – 11:57 )

Mindenképpen meglepett, hogy a (nm épp a legfrissebb) sdcc milyen jó kis kódot generál.
Persze, ez csak akkor látszik ha megpróbálod assembly -ben megírni. Én fordítva ültem fel a lóra, először assembly aztán nézegettem a C fordítást. Nagyon sokat fejlődtek a C compilerek, érdemes rájuk támaszkodni. Viszont ellenőriuzni sosem árt, különösen egy interrupt -on belül.

OFF: Régen csináltam olyan "trükköt", hogy az interrupt routinon belül be pushj -oltam a hosszabb routin címét, és az iret először azt hívta meg (persze akkor gondoskodni kell a regiszterek mentéséről ami plusz idő). Cserébe érvényre jutottak az alacsonyabb prioritású interrupt -ok is. Feltéve hogy mind kellő gondossággal van kivitelezve, ez a minimális hibát okozott.
Miért is jöttem ezzel elő? Még nem piszkáltam az interrupt prioritásokat. Az ina226 i2c -ről megy és az STM hibajegyzékeibe elég sok hiba van az i2c interrupt kezelésével (már az is fura hogy az i2c mindössze egy interruptot kap amit aztán ott kell eldönteni miért is kaptad). Egyelőre az i2c kezelés polling -al működik (>30 év alatt először kezelek i2c -t, ez valahogy kimaradt) így valami egyszerű működő verziót kerestem és implementáltam. A következő lépés talán ennek az újra gondolása lesz, most már elérem azt a tudás szintet amivel meg tudom írni és ellenőrizni.