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

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

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

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

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

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


 
Опции темы
Непрочитано 03.03.2013, 11:06  
Freerider
Частый гость
 
Аватар для Freerider
 
Регистрация: 01.12.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 34 раз(а) в 10 сообщении(ях)
Freerider на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Ошибка проявляется когда я использую CHAR_WIDTH(c)
например
попробуйте x=CHAR_WIDTH(c);
тогда компилятор выдает ошибку что ему не понятен символ с
Реклама:
Freerider вне форума  
Непрочитано 03.03.2013, 11:39  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

А что такое "с" у Вас и где оно определено ?.

В дефайне "с" - формальный параметр, который заменяется на Ваш реалный при использованиэтого дефайна.

Нескромный вопрос - Вы что нить программировали на СИ?
Boba_spb вне форума  
Непрочитано 03.03.2013, 12:26  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от Boba_spb Посмотреть сообщение
А что такое "с" у Вас и где оно определено ?.

В дефайне "с" - формальный параметр, который заменяется на Ваш реалный при использованиэтого дефайна.

Нескромный вопрос - Вы что нить программировали на СИ?

А зачем? Столько форумов! Глядишь - напишут ... Гдето поиском найдёт ... Программирование - это просто.... Любой сейчас может, это не туалет чистить, не траву косить ... Здесь думать и читать уже напрочь не надо ...
SasaVitebsk вне форума  
Непрочитано 03.03.2013, 12:40  
Freerider
Частый гость
 
Аватар для Freerider
 
Регистрация: 01.12.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 34 раз(а) в 10 сообщении(ях)
Freerider на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

На си програмировал только не с такими вывертами вернемся к строчке
#define CHAR_WIDTH(c) (font-›u8Flags & FONT_FIXEDWIDTH ? ((int)font-›asFontCharInfo)&0x0FF : font-›asFontCharInfo[(c) - font-›u8FirstChar].width)

Здесь мне непонятно как выполняется строчка asFontCharInfo[(c) - font-›u8FirstChar].width

в своей програмке если я подставлю вместо с -1 то без ошибок все идет
например
x=font-›u8Flags & FONT_FIXEDWIDTH ? ((int)font-›asFontCharInfo)&0x0FF : font-›asFontCharInfo[1 - font-›u8FirstChar].width;

немного инфы
#define FONT_FIXEDWIDTH 0x01
#define FONT_PACKEDDATA 0x02

typedef struct __tagFONT_CHAR_INFO {
uint16_t width;
uint16_t start;
} FONT_CHAR_INFO;

typedef struct __tagFONT_INFO
{
uint8_t u8Height; ///‹ Высота символов
uint8_t u8FirstChar; ///‹ индекс первого символа
uint8_t u8LastChar; ///‹ Индекс последнего символа
uint8_t u8Flags; ///‹ Флаги шрифта
const FONT_CHAR_INFO *asFontCharInfo; ///‹ таблица информации о символах
const uint8_t *au8FontTable; ///‹ Массив данных шрифта
} FONT_INFO;
Freerider вне форума  
Непрочитано 03.03.2013, 12:50  
Freerider
Частый гость
 
Аватар для Freerider
 
Регистрация: 01.12.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 34 раз(а) в 10 сообщении(ях)
Freerider на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Ну догнал короче сам понимаю что для вас это все детский сад короче действительно надо писать в проге CHAR_WIDTH(1) 1 или другое значение это так для примера тогда прога подменяет с на 1
Freerider вне форума  
Непрочитано 03.03.2013, 13:04  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от Freerider Посмотреть сообщение
Ну догнал короче сам ...
Уже польза от форума. И самому приятно.
SasaVitebsk вне форума  
Непрочитано 03.03.2013, 18:08  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от Freerider Посмотреть сообщение
Ну догнал ... надо писать в проге CHAR_WIDTH(1) 1 или другое значение ...
Не, еще не догнал. Какой смысл писать "CHAR_WIDTH(1) 1 или другое значение", если можно сразу подставить ширину символа с номером "значение" и не париться с непонятными дефайнами? И, кстати, необходимость в структурах тоже отпала бы!
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 03.03.2013, 18:43  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Все это для опеределения ширины растра символа.
Если ширина всех символов одинаковая, то можно и не пользовать эту конструкцию.

А если ширина символов разная, то , например,
int width=CHAR_WIDTH('A');
width будет равно ширине символа 'A'

С фонтами есть чем поразвлекаться - интервал, кернинг .. и т.д.и т.п !!!

А если исчо в векторные шрифты занырнуть ...
Boba_spb вне форума  
Непрочитано 13.03.2013, 12:54  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

А если я еще не все книги прочитал, меня тут не запинают?

Вопрос такого плана:
Есть 20-ти битное число 11111111111111111111=1 048 575 т.е максимум 7 знаков. Мне нужно вывести его на LED семисегментный индикатор, и только старшие 4 цифры, но при этом еще и округлить.
Для приведенного примера должно высветить 1049.
Чтобы не изобретать велосипед какие есть функции или эффективный алгоритм чтобы это реализовать?

Я делаю так: делю исходное на 10 без остатка, затем отнимаю от него-же результат умноженный на 10 и т.д. - получается не очень быстро по тактам и длинно. И это еще без округления!

ps
МК 8-ми битный
__________________
Мелочи не решают главного. Они решают всё!

Последний раз редактировалось gary2007; 13.03.2013 в 12:59.
gary2007 вне форума  
Непрочитано 13.03.2013, 13:10  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сдвигай последовательно вправо, параллельно в памяти считай степени двойки в десятичном виде (тупо прибавляя число само к себе), и если в результате сдвига выдвигается единица - прибавляй текущую степень двойки к результату. Алгоритм сложнее, но зато без делений и по идее самый быстрый для АВР
niXto вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06


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


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