Поиск
Показаны результаты для тегов 'делюсь'.
-
здравствуйте! после очередного долгого отлаживания крайне простого куска программы решил поделиться, вдруг кому поможет чем то за время работы с пиками выявил 3 особенности их работы 1 работа с еепром, бит EECON1|WR WR: Write Control bit 1 = Initiates a write cycle (The bit is cleared by hardware once write is complete. The WR bit can only be set, not cleared, in software.) 0 = Write cycle to the data EEPROM is complete описано предельно ясно, но по факту если использовать контроль этого бита для начала записи следующего байта данных, то они не запишутся проверено на разных пиках, результат одинаков при контроле аналогичного бита прерывания в INTCON всё работает корректно 2 обработка прерывания по внешнему сигналу на RB0/INT если при выполнении программы присутствует участок кода с запретом прерываний, ограниченный командами "bcf INTCON|GIE .......... bsf INTCON|GIE", то событие возникшее в этом месте будет пропущено, хотя в даташите указано, что оно запоминается и флаг прерывания надо будет сбрасывать программно, по факту флаг либо не устанавливается, либо сам сбрасывается (именно с этим копался на днях, обработчик прерывания вычислял и заносил в память 2 переменных, поэтому при их считывании для рассчетов приходилось на всего 3 команды запрещать прерывание, но этого хватало для хаотичных пропусков и кипения мозга откуда идёт ошибка в данных, решилось введением доп. программного флага в обработчик) 3 выполнение перехода по таблице, типа ADDWF PCL,F GOTO m1 GOTOm2 ... команда сложения в этом случае занимает 2 такта, а не 1 описание данной особенности может где то и есть, специально не искал, всё логично и возникает из-за сбоя конвеера, но в даташите это не отмечено (тоже довольно долго искалась ошибка в куске кода, точно рассчитанному по времени) вот как-то так ...