Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 22.11.2006, 23:03  
Ilya
Частый гость
 
Регистрация: 25.01.2005
Сообщений: 39
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Ilya на пути к лучшему
По умолчанию Помогите со знаковыми вычислениями

Имеем PIC18F8621
Делаем контроллер управления тех-процессом.
применяется энкодер инкрементальный.
проблема - вывод отрицательного значения на дисплей.
примерно производятся следущие операции:
1. вращение энкодера в "положительную" сторону приводит к увеличению счетчика (3-х байтового)
2. Дальше данные счетчика умножаются на фиксированный коэффициент (получаем 32 бита)
3. Полученное значение делится (подпрограмма знакового деления) на изменяемый коэффициент (32/16) получаем результат 32 бита + остаток
4. Производим BIN2BCD (подпрограмма знакового преобразования)конвертацию и выводим данные на дисплей
По такой схеме все работает.

Однако при вращении в "отрицательную" сторону, при переходе через ноль на экране вижу максимальное значение, которое постепенно уменьшается, а хотелось бы увидеть -1 и постепенное увеличение значения.

Подскажите на какой стадии необходимо в данном алгоритме применять знаковые операции (деления, умножения), или может подскажите место, где можно по доходчивому почитать на эту тему...
Спасибо.
Реклама:
Ilya вне форума  
Непрочитано 23.11.2006, 02:44  
Laksus
Частый гость
 
Регистрация: 14.09.2005
Сообщений: 34
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Laksus на пути к лучшему
По умолчанию Re: Помогите со знаковыми вычислениями

Сообщение от Ilya
... на экране вижу максимальное значение...
А какое?
Хотелось бы уточнить, какие значения Вы получаете на этапах 1, 2, 3, 4?
А также, что хотели бы получить в результате.
__________
Александр
2006 11 23
Laksus вне форума  
Непрочитано 23.11.2006, 09:26  
EVGENIY1962
Гражданин KAZUS.RU
 
Регистрация: 27.07.2006
Сообщений: 659
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
EVGENIY1962 на пути к лучшему
По умолчанию

В счетчике,который считает приращения придется пожертвовать старшим битом,и объявить его знаковым.
Если примете что + это 1 тогда 0 у вас будет 0x800000
тогда если вы получите 0x7fffff то можете проинвертировать и прибавить1.это и будет -1.
EVGENIY1962 вне форума  
Непрочитано 23.11.2006, 15:07  
Ilya
Частый гость
 
Регистрация: 25.01.2005
Сообщений: 39
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Ilya на пути к лучшему
По умолчанию

с толку меня сбил PLC митсубишевский с панелью...
там тип (знаковая, беззнаковая) переменной указывается только на выводе данных, уже в панели, т.е. после всех вычислений.
Сразу необратил внимания, но теперь понимаю, что все вычисления, и сам счетчик должны быть знаковыми.

Чтобы не париться с 24 битной знаковой подпрограммой умножения (в наличии 32 битная) увеличу разрядность счетчика до 32 бит... посмотрим что получится...
Ilya вне форума  
Непрочитано 23.11.2006, 15:34  
Ilya
Частый гость
 
Регистрация: 25.01.2005
Сообщений: 39
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Ilya на пути к лучшему
По умолчанию

все заработало
спасибо за помощь
Ilya вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:15.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot