Например TDA7294

Форум РадиоКот • Просмотр темы - MikroC и его баги
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 03:24:31

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: MikroC и его баги
СообщениеДобавлено: Сб авг 10, 2013 15:10:27 
Родился
Аватар пользователя

Зарегистрирован: Пн дек 08, 2008 12:28:52
Сообщений: 12
Откуда: барнаул
Рейтинг сообщения: 0
Вот кусочек кода от моей POV на p629

Код:
#define  sh_cp  GP0_bit
#define  st_cp  GP4_bit
#define  ds     GP1_bit

volatile char i, L1, L2, line_2, line_1;
volatile int T1;
volatile int period;


Воооот, так вот T1 и period у меня почему-то от -32767 до 32767, а должон быть от 0 до 65535. Кто сталкивался? Я 3 часа убил чтоб найти почему у меня не работает прога.

_________________
Вот до чего же было классно в "Медали За Отвагу" - бросаешь гранату в немецкий патруль с собакой... Немцы разбегаются, а собака хватает гранату и отностит хозяину....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Сб авг 10, 2013 15:37:44 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 143
Зарегистрирован: Пт дек 28, 2012 21:56:46
Сообщений: 1518
Откуда: St. Petersburg
Рейтинг сообщения: 0
Не знаком с microc, но, может, нужно как в обычном ANSI C объявить переменные с модификатором unsigned?

_________________
Изображение only pure true norwegian blackx Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Сб авг 10, 2013 15:51:34 
Родился
Аватар пользователя

Зарегистрирован: Пн дек 08, 2008 12:28:52
Сообщений: 12
Откуда: барнаул
Рейтинг сообщения: 0
пробовал и unsigned int та же хрень, но заменил T1 на cnt так все встало на свои места

Код:
unsigned  p, cnt;


И я честно говоря так и не понял что это за косяк в mikroc, а может я туплю?

А в этом примере уже не прокатывает unsigned vrem определяется как signed int vrem
Код:
#define  TSOP_pin  GP2_bit

volatile char command, inv_command;
volatile long  temp=0;
volatile char startusl=0, firstint=0;           
volatile char bitcount=0;                 //
unsigned  vrem;                        //

_________________
Вот до чего же было классно в "Медали За Отвагу" - бросаешь гранату в немецкий патруль с собакой... Немцы разбегаются, а собака хватает гранату и отностит хозяину....


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Сб авг 10, 2013 18:13:42 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 143
Зарегистрирован: Пт дек 28, 2012 21:56:46
Сообщений: 1518
Откуда: St. Petersburg
Рейтинг сообщения: 0
А как вы узнали, что ваша переменная определилась как знаковая? Ваш компилятор выдает предупреждение при занесении в переменную значения большего чем 32768?

Самый простой способ проверить - сравнением значения переменной с константой:

unsigned int vrem = 33000;

if( vrem > 32999 ) {
// тут зажигаем диодик
}

Если условие выполнится, значит переменная точно имеет беззнаковый тип.

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

_________________
Изображение only pure true norwegian blackx Изображение


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Сб авг 10, 2013 23:14:20 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: -1
Медали: 1
Получил миской по аватаре (1)
Цитата:
а должон быть от 0 до 65535
А кто Вам это сказал ? Ссылку дайте на это утверждение.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Вс авг 11, 2013 07:31:58 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
корявый перевод документации:
Модификаторы signed и unsigned может быть применен как char и int . В отсутствие unsigned префикс, signed автоматически предполагается, для целых типов. Единственным исключением является char , который unsigned по умолчанию. Ключевые слова signed и unsigned , если они используются сами по себе, означает signed int и unsigned int соответственно.
http://www.mikroe.com/download/eng/docu ... _types.htm
Неправильное использование беззнаковых целых может приводить к неочевидным ошибкам из-за возникающего переполнения. В приведённом ниже примере использование беззнаковых целых в цикле в C и C++ превращает этот цикл в бесконечный:

Код:
char ar[N];
for (unsigned int i = N-1; i >= 0; --i)
      ar[i] = i;

http://ru.wikipedia.org/wiki/%D0%A6%D0% ... B%D1%85%29


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Вт авг 13, 2013 06:49:36 
Мудрый кот

Карма: 10
Рейтинг сообщений: 272
Зарегистрирован: Пт мар 26, 2010 17:16:52
Сообщений: 1769
Откуда: Kazan
Рейтинг сообщения: 0
Есть справка по микроси на русском.
Чио-то не вкладывается, наверное великоват.
Но можно найти в инете.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Ср мар 22, 2017 14:42:37 
Родился
Аватар пользователя

Зарегистрирован: Пн дек 08, 2008 12:28:52
Сообщений: 12
Откуда: барнаул
Рейтинг сообщения: 0
Более менее ясно,а как тут быть?
long vrem;
char i = 2;

vrem = 65535*i;

Переменная vrem не становится равной 131070,но написав
vrem=65535*2 тогда становится.
Вот как это понимать?

_________________
Вот до чего же было классно в "Медали За Отвагу" - бросаешь гранату в немецкий патруль с собакой... Немцы разбегаются, а собака хватает гранату и отностит хозяину....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Ср мар 22, 2017 15:16:25 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
dens писал(а):
Вот как это понимать?
это понимать так: срочно скачивайте книжку по языку Си и читайте ее внимательно до полного просветления!

65535*i - здесь 65535 - это unsigned int, а i - char. по правилам Си оба операнда должны быть одного типа, причем наибольшего из них (а еще интересно, что два char всегда приводится к двум int). то есть i приводится к unsigned int. по тем же правилам результат будет равен типу операнда, т.е. unsigned int. в таком типе не может помещаться больше, чем 65535.

65535*2 - это произведение констант. такие произведения вычисляются препроцессором ДО начала компиляции. при вычислениях скорее всего используется разрядность компьютерных Int-ов, поэтому получается константа 131070, которая уже законно имеет тип long и отлично помещается в переменную.

чтобы не было проблем с вычислениями вроде вашего 65535*i, используйте принудительное указание типа операнда больше, чем вам надо, например так: 65535 * (long)i. в этом случае переменная i вашими усилиями превратится в long, а потом 65535 тоже превратится в long, а потом произведение их тоже будет long, все в строгом соответствии с правилами Си.

но проще указать тип константы при помощи суффикса UL: 65535UL * i - в этом случае все будет то же самое, т.к. UL обозначает unsigned long

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: MikroC и его баги
СообщениеДобавлено: Ср мар 22, 2017 15:32:46 
Родился
Аватар пользователя

Зарегистрирован: Пн дек 08, 2008 12:28:52
Сообщений: 12
Откуда: барнаул
Рейтинг сообщения: 0
Я догадывался, но вы расставили точки над i. Спасибо вам огромное. Век живи,век учись

_________________
Вот до чего же было классно в "Медали За Отвагу" - бросаешь гранату в немецкий патруль с собакой... Немцы разбегаются, а собака хватает гранату и отностит хозяину....


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y