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

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

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

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

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

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

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

 
Опции темы
Непрочитано 25.07.2011, 12:49  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Hi-Tech Picc не хочет считать

PHP код:
#include ‹pic.h›

unsigned char K=0;
unsigned int C,C1=0;

C=C1*((1024+K-127)/1024); // при ((1024+K-127)/1024) ‹ 1 совсем виснет. 

Как преобразовать типы чисел?
Реклама:
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 25.07.2011, 13:36  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Ну правильно. Вместо деления на 1024 примените сдвиг вправо на 10 разрядов. И пемененная С у вас должна быть float (4 байта с точкой) - не знаю, как будет на С.
Easyrider83 вне форума  
Эти 2 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
Slava-martyn (26.07.2011), warel (28.06.2019)
Непрочитано 25.07.2011, 13:49  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Переменная C - unsigned int (0..65535), по другому не пойдёт.
Вот это: C1*((1024+K-127)/1024) надо округлить до целого и преобразовать к unsigned int.
С1 там тоже unsigned int, возможно его вначале придётся к float привести, а потом перемножить, а потом округлить и в переменной C сохранить.
Сообщение от Easyrider83 Посмотреть сообщение
не знаю, как будет на С
И я тоже!
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 25.07.2011, 14:29  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Если в действии C1*((1024+K-127) вы не выходите за пределы 0...65535 (DEC), то ничего страшного. При условии, что С1 - целая положительная переменная.
Тогда пишем так:
C1*((1024+K-127)››10
Должно работать.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
warel (28.06.2019)
Непрочитано 25.07.2011, 14:51  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Ну вот написал вот так:
#include ‹math.h›
float L=0.0;
L=ceil(3.343);
Говорит вроде как места нету.
PHP код:
Build F:\PICprog\1\for device 12F675
Using driver C
:\Program Files\HI-TECH Software\PICC\9.70\bin\picc.exe
Make
The target "F:\PICprog\1\1.p1" is out of date.
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode)  V9.70
Error   
[1358F:\PICprog\AKB1\1.c47. no space for _tajm temps (2)

********** 
Build failed! ********** 
Потом так попробовал:
C=(C1*(1024+K-127))››10; - что-то не так
кстати C1 принимает значения от 0 до 1024.
С1 нужен большего размера.

Последний раз редактировалось Slava-martyn; 25.07.2011 в 15:27.
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 25.07.2011, 15:25  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

#include ‹pic.h›

unsigned long int C,C1,C2=0;

C=(C1*(1024+K-127))››10;

Заработало!

Ещё вопрос.
МК PIC12F675 - 70 % Program space занято, 30 % хватит для подключения кнопки (для увеличения К на +1 при нажатии и сохранении в памяти)?
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 25.07.2011, 15:28  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

На опрос кнопки - две инструкции. Инкременировать переменную - одна. Конечно хватит.
Вот за что я не люблю С - совершенно не понятно, на что ушла память. А асм потом перекапывать лениво.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
warel (28.06.2019)
Непрочитано 25.07.2011, 15:30  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Сообщение от Slava-martyn Посмотреть сообщение
PHP код:
#include ‹pic.h›

unsigned char K=0;
unsigned int C,C1=0;

C=C1*((1024+K-127)/1024); // при ((1024+K-127)/1024) ‹ 1 совсем виснет. 

Как преобразовать типы чисел?
Обычно типы переменных приводят так: C= (unsigned int)(C1*((1024+K-127)/1024)); Хотя например Keil автоматически приводит типы.
heady69 вне форума  
Сказали "Спасибо" heady69
warel (28.06.2019)
Непрочитано 25.07.2011, 18:44  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

Удивительно, но
PHP код:
unsigned int C,C1,C2=0;
C= (unsigned int)(C1*((1024+K-127)/1024)); 
не работает при K!=127 (при K›127 =› C=C1*1, а при K‹127 =› C=C1*0).

PHP код:
unsigned long int C,C1,C2=0;
C= (unsigned int)(C1*((1024+K-127)/1024)); 
Аналогично не работает.

PHP код:
unsigned int C,C1,C2=0;
C=(C1*(1024+K-127))››10
Тоже не идёт.

PHP код:
unsigned long int C,C1,C2=0;
C=(C1*(1024+K-127))››10
Вот эта комбинация нормально считает.

PHP код:
unsigned long int C1,C2=0;
unsigned int C=0;
C=(C1*(1024+K-127))››10
Во! Это даже лучше, откуда ни возьмись освободилось 25 % памяти программ.

PHP код:
unsigned long int C1=0;
unsigned int C,C2=0;
C=(C1*(1024+K-127))››10
А эта занимает на 0,5 % больше чем предыдущая дурдом! И что там происходит внутри? Где нить описание есть какие типы когда применять, как с ними математические операции происходят?

Последний раз редактировалось Slava-martyn; 25.07.2011 в 19:03.
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 25.07.2011, 20:51  
ish0
Прописка
 
Регистрация: 09.08.2006
Сообщений: 198
Сказал спасибо: 14
Сказали Спасибо 27 раз(а) в 20 сообщении(ях)
ish0 на пути к лучшему
По умолчанию Re: Hi-Tech Picc не хочет считать

В целочисленной арифметике выражение:

(1024+K-127)/1024 при K ‹ 127 равно 0, и равно 1 при K ›= 127.

при 0‹=K‹=255. Непонятна идея аглоритма.
ish0 вне форума  
Сказали "Спасибо" ish0
warel (28.06.2019)
 

Закладки

Метки
hi-tech picc, математика
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си, IAR AVR & Hi Tech PICC picavr Микроконтроллеры, АЦП, память и т.д 47 25.02.2014 12:20
PIC16C57 как считать прошивку avs2009 Микроконтроллеры, АЦП, память и т.д 5 17.01.2011 21:30
не хочет долго считать быстроменяющиеся сигналы alek-epapu Proteus, KiCAD и другие ECAD 0 07.12.2009 08:39
[Решено] Компилятор PICC и Proteus Кот Баюн Proteus, KiCAD и другие ECAD 7 30.11.2009 01:47
PICC как будет выглядеть код в CVAVR rv6yi Микроконтроллеры, АЦП, память и т.д 15 22.10.2009 23:22


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


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