Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2021-янв-27 22:23

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 3 сообщения ] 
Автор Сообщение
 Заголовок сообщения: RLNCF
СообщениеДобавлено: 2020-авг-21 22:46 
Не в сети

Зарегистрирован: 2012-апр-19 08:47
Сообщения: 10
Организация: АО "НПП "Салют"
Добрый вечер.
Подскажите по поводу команды RLNCF, контроллер 1886ВЕ61У (1525). Сдвиг любого числа кроме "FF" проходит ожидаемо. При сдвиге "FF" программа зависает, спасает только сброс МК. При замене команды RLNCF на RLCF "FF" отрабатывается ожидаемо с учетом бита переноса.
	MOVFP	DataRX2,WREG	; WREG <- DataRX2                
	XORWF 	DataRX3,W	; исключающее «ИЛИ» DataRX2 и DataRX3, результат в WREG
	MOVPF	WREG,AdrC	; перенос результата "DataRX2 XOR DataRX3" в AdrC
	INCFSZ	Order3,W		; WREG = Order3 + 1
	MOVPF	WREG,Count2	; загрузить счетчик количества сдвигов            
ComC2:	
	DECFSZ	Count2,f		; уменьшение на 1, пока не равно 0
	GOTO	ComC3		; выполнить сдвиг              
	GOTO	ComC4		; сдвиг завершен   
ComC3:
	RLNCF	AdrC,F		; циклический сдвиг влево
	GOTO	ComC2		; если количество сдвигов не выполнено 
ComC4:    
	MOVFP	AdrC,WREG	; перенос из DataRXb в DataRX0 через WREG  
	CALLR	DataC
	MOVPF	WREG,DataC    
В программе задействован UART, зависание наблюдаю по отсутствию пакетов, кроме случая "AdrC = FF" все работает стабильно.


Вернуться к началу
 Заголовок сообщения: Re: RLNCF
СообщениеДобавлено: 2020-авг-26 14:32 
Не в сети
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 99
Организация: АО «ПКК Миландр»
Andre писал(а): *
Добрый вечер.
Подскажите по поводу команды RLNCF, контроллер 1886ВЕ61У (1525). Сдвиг любого числа кроме "FF" проходит ожидаемо. При сдвиге "FF" программа зависает, спасает только сброс МК. При замене команды RLNCF на RLCF "FF" отрабатывается ожидаемо с учетом бита переноса.
	MOVFP	DataRX2,WREG	; WREG <- DataRX2                
	XORWF 	DataRX3,W	; исключающее «ИЛИ» DataRX2 и DataRX3, результат в WREG
	MOVPF	WREG,AdrC	; перенос результата "DataRX2 XOR DataRX3" в AdrC
	INCFSZ	Order3,W		; WREG = Order3 + 1
	MOVPF	WREG,Count2	; загрузить счетчик количества сдвигов            
ComC2:	
	DECFSZ	Count2,f		; уменьшение на 1, пока не равно 0
	GOTO	ComC3		; выполнить сдвиг              
	GOTO	ComC4		; сдвиг завершен   
ComC3:
	RLNCF	AdrC,F		; циклический сдвиг влево
	GOTO	ComC2		; если количество сдвигов не выполнено 
ComC4:    
	MOVFP	AdrC,WREG	; перенос из DataRXb в DataRX0 через WREG  
	CALLR	DataC
	MOVPF	WREG,DataC    
В программе задействован UART, зависание наблюдаю по отсутствию пакетов, кроме случая "AdrC = FF" все работает стабильно.
Здравствуйте!

При работе с отладочной платой на базе микроконтроллера 1886ВЕ61У был написан код на ассемблере, который максимально приближенным образом работает с командой RLNCF (за исключением использования UART) - проблем найдено не было. Команда работала со значением 0xFF в регистре, над которым производился циклический сдвиг, корректно, при всем при этом всё продолжало работать и с сохранением результата сдвига в регистр WREG. Несмотря на то, что при задании параметра F, как у Вас, для команды RLNCF (фактически это единица, что указывает на сохранение результата сдвига в тот же регистр, над которым проводилась операция), всё работает также без ошибок, попробуйте указать просто единичку вместо значения F, что фактически одно и то же.

Вероятнее всего, основная причина зависания не в отработке данной команды. Рекомендуем воспользоваться одним из стандартных приемов при отладке: сделать так, чтобы в программе остался минимально возможный код, который реализует работу блока в том виде, в котором задумывалось, чтобы также отследить или нет рассматриваемую ошибку. В противном случае использовать команду RLCF с её особенностями.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: RLNCF
СообщениеДобавлено: 2020-авг-26 16:52 
Не в сети

Зарегистрирован: 2012-апр-19 08:47
Сообщения: 10
Организация: АО "НПП "Салют"
Спасибо! Уперся в этот фрагмент, а накосячил дальше со счетчиком команд.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 3 сообщения ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB