
Много странен проблем с SSP модула на PIC16f8X
Проблема наистина е много странен и вече направо откачих

а пак не мога да го отстраня почвам да се съмнявам за хардуерен бъг в SSP модула но като си мисля това е доста малко вероятно.
Да опиша нещата :
Програмата ми измерва едно аналогово напрежение няколко пъти чрез 10bit ADC на PIC намира средно аритметичното от измерванията. Изпраща резултата като два байта по I2C.
След което отново се стартира измерване и всичко си повтаря в цикъл.
PIC е slave устройство в моя случаи. Проблема се състои в това че установих че не винаги получаваните байтове по I2C са коректни.Набеждавах за това всичко аналоговата си част, програмата си дето изчислява, но след идалго блъскане чрез симулация с proteus видях че всичко си работи по същия начин както и на реалната схема и че грешката се появява при определени стойности на изпращаните байтове. Проследих нещата и установих че грешките които се появяват са винаги в първият(най-старшия) бит на байта които се изпраща но се проявяват само при някои стойности на байта а при други не. По конкретно:
при изпращане па 00 66 по магистралата реално се изпраша не това а 00 Е6
при 00 СС всичко е наред и се получава 00 СС
при 01 33 пак си е ОК и се получава 01 33
при 01 98 обаче пак изцепка 01 18
Веднага си казах дъни се когото първият бит които се изпраща от байта е 1 но не е така
при 01 FF всичко пак си е ОК получава се 01 FF
при 02 66 издънка 02 Е6
при 02 СС ОК 02 СС
при 03 30 ОК 03 30
при 03 98 пак грешка 03 18
при 03 FE ОК 03
Пробвах да разменя първо да изпращам младшия после старшия байт нищо не се промени просто се размениха.Грешки си останаха на същите стойности на байтовете.Като гледам на симулацията на proteus още щом се запише байта които ще се изпраща в SSPBUF , още преди да се разреши такта чрез CKP извода SDA се актуализира със стойността на най- старшия бит на байта от SSPBUF.Интересното и най-странното е че при стойностите на байтовите при които стават грешките състоянието на SDA не отговаря на 7 бит от SSPBUF.
Това не е от това че примерно магистралата не е свободна проверих.
Направо не знам какво става

. Някой има ли идеи?