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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ммплаб и пик №2
Евгений Германов...
сообщение Jul 18 2008, 13:58
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



А здесь все гораздо хуже.
80+ 79=159
если складывать эти числа на pic16f452
то все нормально-80н +79н дальше DAW в регистре WREG число 59 и флаг С в статусе =1
но если складывать числа больше 79 то получается следующее
80н + 80н далее DAW регистре WREG число 60 и флаг С в статусе =0 !!!!
ХОТЯ В МПЛАБЕ С=1
Это похоже на глюк контроллера.
Go to the top of the page
 
+Quote Post
dac
сообщение Jul 18 2008, 20:57
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(Евгений Германович @ Jul 18 2008, 17:58) *
Это похоже на глюк контроллера.

имхо ошибка днк.
уж что-что, а с арифметикой у ПИК проблем не было. приведите исходники хотя бы.
и если уж пишите в хексе одни цифры, то и для других указывайте в каком формате.
а вообще все правильно - читайте даташит.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 19 2008, 06:01
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(dac @ Jul 18 2008, 23:57) *
имхо ошибка днк.
уж что-что, а с арифметикой у ПИК проблем не было. приведите исходники хотя бы.
и если уж пишите в хексе одни цифры, то и для других указывайте в каком формате.
а вообще все правильно - читайте даташит.

Да нет не правильно.И в даташите по этому поводу полная тишина.
Если хотите текст,то пожалуйста ;пп перевода HEX в DEC
;вход BBNDEC-число в HEX формате
;выход CHBD-старший,CLBD-младший байты десятичного числа
BINDEC:
GLOBAL BINDEC
MOVLB 0
CLRF CHBD,BANKED
CLRF CLBD,BANKED
MOVLW 08H
MOVWF RBINDEC,BANKED ;счетчик
;
MET: RLCF BBNDEC,F,BANKED
MOVF CLBD,W,BANKED
ADDWFC CLBD,W,BANKED
DAW ;здесь сбросится флаг переноса.
MOVWF CLBD,BANKED
MOVF CHBD,W,BANKED
ADDWFC CHBD,W,BANKED
; DAW
MOVWF CHBD,BANKED
;
DECFSZ RBINDEC,F,BANKED
GOTO MET
RETURN

При прогоне в мплабе все хорошо и прекрасно,на реальном железе начиная со 160 и заканчивая 199 будет не совсем хорошо,вместо 1 в сотнях будет 0.
Go to the top of the page
 
+Quote Post
MicroDiP
сообщение Jul 19 2008, 07:45
Сообщение #4


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

Группа: Свой
Сообщений: 104
Регистрация: 31-07-05
Из: Shenzhen, China (深圳市, 中国)
Пользователь №: 7 233



Я тоже ни разу не сталкивался с подобными проблемами в Пиках: не на 16-й серии, не на 18-й таких проблем с арифметикой не было. Тем более с целочисленной. sad.gif Так что ищите грабли у себя.
P.S. Я предпочитаю всегда вести отладку на живом железе, а не в программных симуляторах и иже с ними.


--------------------
Все языки несут в себе черты своих обладателей. И идиомы каждого языка повторяются снова и снова: "Он чужеземец, а значит - варвар". (Роберт Хайнлайн)
Go to the top of the page
 
+Quote Post
dac
сообщение Jul 19 2008, 08:51
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



в асме давно не писал, но по памяти - был такой глючек - если в предыдущих операциях флаг С был установлен, то при сложении, даже если не происходит переполнения, флаг остается установленным. лечил ручным сбросом флага. кажется так, но в деталях могу ошибаться (возможно это было вычитание, а флаг надо было наоборот устанавливать.. давно уже было). проверьте
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 19 2008, 11:07
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(dac @ Jul 19 2008, 11:51) *
в асме давно не писал, но по памяти - был такой глючек - если в предыдущих операциях флаг С был установлен, то при сложении, даже если не происходит переполнения, флаг остается установленным. лечил ручным сбросом флага. кажется так, но в деталях могу ошибаться (возможно это было вычитание, а флаг надо было наоборот устанавливать.. давно уже было). проверьте

Это не глючок,а глючара smile.gif
Все не так просто.Если при сложении чисел в старшем полубайте образуется число <9 (и С устанавливается в 1)то при десятичной коррекции флаг сбрасывается -а это иначе как бл......м не назовеш.
А если там более 9 то все нормально.

Я тоже ни разу не сталкивался с подобными проблемами в Пиках: не на 16-й серии, не на 18-й таких проблем с арифметикой не было. Тем более с целочисленной. sad.gif Так что ищите грабли у себя.
Проверьте- просуммируйте 80 и 80 и произведите десятичную коррекцию.
Дб 60 и С=1 ,а для вышеупомянутого пика будет 60 и С=0
Если складывать 80 и 79 то р-тат будет 59 и С=1.
Но мплаб всегда показывает С=1 для всех примеров.
Go to the top of the page
 
+Quote Post
MicroDiP
сообщение Jul 19 2008, 18:15
Сообщение #7


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

Группа: Свой
Сообщений: 104
Регистрация: 31-07-05
Из: Shenzhen, China (深圳市, 中国)
Пользователь №: 7 233



М-да, похоже что это действительно косяк кристалла. Я был не прав, прошу прощения.

Цитата
Да нет не правильно.И в даташите по этому поводу полная тишина.
Если хотите текст,то пожалуйста ;пп перевода HEX в DEC

А вот тут вы совершенно не правы. Небольшой поиск - и результат на лицо. Смотрите любую из еррат по ссылке. Там их пять штук (не считая ерраты по Таймеру_1). И во всех пяти упоминается этот косяк и как его победить. Удачи.


--------------------
Все языки несут в себе черты своих обладателей. И идиомы каждого языка повторяются снова и снова: "Он чужеземец, а значит - варвар". (Роберт Хайнлайн)
Go to the top of the page
 
+Quote Post
dac
сообщение Jul 19 2008, 18:18
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



и все таки, с чего взяли, что неправильно? вот симулятор запросто может быть некорректен..

79h+80h = 255d -> при дополнении полубайтов(+6 для daw) просиходит переполнение обоих полубайтов, С=1
80h+80h = 256d = 0 -> при дополнении переполнения нет для обоих полубайтов, С=0

кажется это вполне корректное поведение для флага С - показвывать переполнение (т.е. при >9 в полубайте и добавлении 6 в соответсвии с командой происходит переполнение)

и еще раз повторюсь, если уж в тектсе смешиваете числа в разных форматах, ПОДПИСЫВАЙТЕ ФОРМАТ, имейте уважение к людям

ЗЫ: Микродип собственно написал все, эрраты читать надо, их для того и пишут
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 20 2008, 03:28
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(МикроДИП @ Jul 19 2008, 21:15) *
М-да, похоже что это действительно косяк кристалла. Я был не прав, прошу прощения.
А вот тут вы совершенно не правы. Небольшой поиск - и результат на лицо. Смотрите любую из еррат по ссылке. Там их пять штук (не считая ерраты по Таймеру_1). И во всех пяти упоминается этот косяк и как его победить. Удачи.

Согласен,как говориться, факт на лице biggrin.gif Однако ,всё равно ,создатели этого кристалла-нехорошие люди( и это ещё мягко сказано).




79h+80h = 255d -> при дополнении полубайтов(+6 для daw) просиходит переполнение обоих полубайтов, С=1
80h+80h = 256d = 0 -> при дополнении переполнения нет для обоих полубайтов, С=0
Неправда ваша 0х79 + 0х80 =0хF9 DAW 0х59 С=1
а 0х80 +0х80=0х100 DAW 0х60 С=0!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Go to the top of the page
 
+Quote Post
dac
сообщение Jul 20 2008, 08:05
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(Евгений Германович @ Jul 20 2008, 07:28) *
Неправда ваша 0х79 + 0х80 =0хF9 DAW 0х59 С=1
а 0х80 +0х80=0х100 DAW 0х60 С=0!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

вообще то процессор 8-битный, поэтому числа 0х100 для него не существует (в регистре остается 0х00 + 1 в С) и логика о которой я писал есть, другое дело, что это мешает использованию команды, за что разработчиков можно попинать ногами по голове smile.gif
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 20 2008, 08:51
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(dac @ Jul 20 2008, 11:05) *
вообще то процессор 8-битный, поэтому числа 0х100 для него не существует (в регистре остается 0х00 + 1 в С) и логика о которой я писал есть, другое дело, что это мешает использованию команды, за что разработчиков можно попинать ногами по голове smile.gif

Лучше в другое место smile.gif
Go to the top of the page
 
+Quote Post
dac
сообщение Jul 20 2008, 15:09
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



может не совсем в тему, но почему древность 452?
есть уже поновее - 4520 - гораздо удобнее, встр. генератор - до 32мгц с плл, и другие вкусности, ECCP опять же
или например 4523 - с 12 битным АЦП...
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jul 21 2008, 12:20
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(dac @ Jul 20 2008, 18:09) *
может не совсем в тему, но почему древность 452?
есть уже поновее - 4520 - гораздо удобнее, встр. генератор - до 32мгц с плл, и другие вкусности, ECCP опять же
или например 4523 - с 12 битным АЦП...

Причин несколько:
1 на него есть русский текст
2 у меня он есть
3 он есть в продаже
4 у 4520 ошибок не меньше smile.gif
5 мне не надо АЦП
6 частота нужна кварцованная beer.gif
Go to the top of the page
 
+Quote Post
Smen
сообщение Jul 3 2013, 12:14
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081



Установил тут версию MPLab 8.90 заместо 8.40.
Теперь, в старых проектах, невозможно отобразить регистр WREG?
Это как-то можно побороть?
Go to the top of the page
 
+Quote Post
Dmitry Dubrovenk...
сообщение Jul 3 2013, 17:44
Сообщение #15


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

Группа: Участник
Сообщений: 174
Регистрация: 3-11-06
Из: Санкт-Ленинград
Пользователь №: 21 949



Цитата(Smen @ Jul 3 2013, 16:14) *
Это как-то можно побороть?
Попробуйте установить версию 8.91 отсюда.


--------------------
Obligatus servus.
Go to the top of the page
 
+Quote Post

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

 


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


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