Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606
Привет. В Ap.Note AN1310 описан загрузчик для PIC18 /16. В исходном коде загрузчика для пика есть реализация 16-bit CCIT CRC. Значение полинома в статье не приводится, но судя по наименованию CRC он должен быть равен 0x1021. В отладчике MPLAB решил проверить работу этой функции. Подсчитал CRC для стандартной последовательности – 123456789 и получил значение 0x2378 (при исходном 0) и 0x3B0A (при исходном 0xFFFF) . В калькуляторах по расчету CRC получаю 0x31C3 (при исходном 0) и 0x29B1 (при исходном 0xFFFF). В чем проблема не могу понять. Эту вставку я дописал для проверки. movlw .1 rcall AddCrc movlw .2 rcall AddCrc movlw .3 rcall AddCrc movlw .4 rcall AddCrc movlw .5 rcall AddCrc movlw .6 rcall AddCrc movlw .7 rcall AddCrc movlw .8 rcall AddCrc movlw .9 rcall AddCrc
Плохо искали значит: All PIC18 devices include an 8 x 8 hardware multiplier as part of the ALU. The multiplier performs an unsigned operation and yields a 16-bit result that is stored in the product register pair, PRODH:PRODL. The multiplier’s operation does not affect any flags in the Status register. POSTDEC0 - NOTE: 4: This is not a physical register. С обеими регистрами можно производить операции чтение\модификация\запись. ГМ, как же вы пишете программы, если толком не знаете структуру контроллера ???