реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Загрузчик для PIC18 /16
skyv
сообщение Apr 3 2012, 06:43
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Kolia
сообщение Apr 3 2012, 09:41
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



http://www.zorc.breitbandkatze.de/crc.html

Final XOR value = 12BB
Go to the top of the page
 
+Quote Post
skyv
сообщение Apr 3 2012, 11:59
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Цитата(Kolia @ Apr 3 2012, 12:41) *


Этим калькулятором я пользовался.
Его результаты не совпадают с результатами вычисления
CRC функцией в коде загрузчика для PIC.
Об этом я выше и написал.
Что означает Ваше Final XOR value = 12BB
и при каких условиях оно получено я не понял.
Go to the top of the page
 
+Quote Post
Kolia
сообщение Apr 4 2012, 10:18
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



Цитата(skyv @ Apr 3 2012, 14:59) *
Этим калькулятором я пользовался.
Его результаты не совпадают с результатами вычисления
CRC функцией в коде загрузчика для PIC.
Об этом я выше и написал.
Что означает Ваше Final XOR value = 12BB
и при каких условиях оно получено я не понял.


Так в этом калькулятор этот пункт есть, а значит это что после вычисление crc с результатом проводят операцию XOR, кода я не видел но чисто эмпирически похоже на это wink.gif
Go to the top of the page
 
+Quote Post
fox2trot
сообщение Apr 7 2012, 19:09
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 22-09-07
Из: Орел
Пользователь №: 30 754



При подсчете CRC не забывайте про бит переноса. Встречал, такое что в некоторых аппноутах об этом не упоминается, но используется. Сам напоролся, когда первый раз писал подсчет по описанию алгоритма. Так что читайте предельно внимательно и проверяйте.
Go to the top of the page
 
+Quote Post
skyv
сообщение Apr 9 2012, 12:09
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



В asm коде загрузчика увидел интересный для себя ход в том месте алгоритма,
где принят фрейм команды и надо переходить к вычислению CRC.

movff POSTDEC0, PRODH.

Этой командой мы записываем последний принятый байт фрейма (это байт CRCH) в
старший байт регистра результата умножителя для временного хранения. В документе PIC18F2682/2685/4682/4685 я нигде не увидел
обозначение доступа (r, w) к этому регистру. Только на рисунке fig1.1 к нему подходят двунаправленные стрелки.
Мы имеем право писать в этот регистр?
Go to the top of the page
 
+Quote Post
Kolia
сообщение Apr 10 2012, 22:20
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



Цитата(skyv @ Apr 9 2012, 15:09) *


Если в описании ничего не написано и есть под рукой контроллер - можно и самому проверить sm.gif
Go to the top of the page
 
+Quote Post
fox2trot
сообщение Apr 12 2012, 16:27
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 22-09-07
Из: Орел
Пользователь №: 30 754



Плохо искали значит:
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.
С обеими регистрами можно производить операции чтение\модификация\запись.
ГМ, как же вы пишете программы, если толком не знаете структуру контроллера ???
Go to the top of the page
 
+Quote Post
skyv
сообщение Apr 13 2012, 10:01
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Цитата(fox2trot @ Apr 12 2012, 19:27) *
...
С обеими регистрами можно производить операции чтение\модификация\запись.
...

Это Вы сами придумали? Где в приведенном Вами тексте об этом написано?
Go to the top of the page
 
+Quote Post
Ildar Belkin
сообщение Jun 4 2012, 08:31
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 134
Регистрация: 12-08-11
Пользователь №: 66 701



Цитата(skyv @ Apr 9 2012, 16:09) *
В asm коде загрузчика увидел интересный для себя ход в том месте алгоритма,
где принят фрейм команды и надо переходить к вычислению CRC.

movff POSTDEC0, PRODH.

Этой командой мы записываем последний принятый байт фрейма (это байт CRCH) в
старший байт регистра результата умножителя для временного хранения. В документе PIC18F2682/2685/4682/4685 я нигде не увидел
обозначение доступа (r, w) к этому регистру. Только на рисунке fig1.1 к нему подходят двунаправленные стрелки.
Мы имеем право писать в этот регистр?


100% можно использовать. Мой код для PIC18F46K22 изобилует вариациями на чтение/модификации с PRODH:PRODL, в том числе movff POSTDEC0,PRODH. Как минимум в разделе 8.0 Hardware 8x8 multiplier есть пример, где используется subwf PRODH,F - что не двусмысленно намекает на возможность записи в регистр.
Согласен что явного указания о возможности записи в регистр не указано
Go to the top of the page
 
+Quote Post
skyv
сообщение Jun 5 2012, 10:21
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Цитата(Ildar Belkin @ Jun 4 2012, 11:31) *
100% можно использовать. Мой код для PIC18F46K22 изобилует вариациями на чтение/модификации с PRODH:PRODL, в том числе movff POSTDEC0,PRODH. Как минимум в разделе 8.0 Hardware 8x8 multiplier есть пример, где используется subwf PRODH,F - что не двусмысленно намекает на возможность записи в регистр.
Согласен что явного указания о возможности записи в регистр не указано


Полностью со всем согласен.
Код загрузчика применил со своими небольшими доработками.
Пока все работает без проблем.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016