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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Помогите советом ATmega8535

Непрочитано 25.07.2015, 10:42  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от omercury Посмотреть сообщение
Если в UTF-8, а в UNICODE?

Сейчас модно пользоваться uint-ами.
UTF сравнивать с char что запорожец с помидором
Реклама:
Boba_spb вне форума  
Непрочитано 25.07.2015, 13:25  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,458
Сказал спасибо: 3,227
Сказали Спасибо 3,512 раз(а) в 2,393 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Если это ГЦЦ, то там где-то в мануалах было, что 8-и битные операции всё равно выполняются как 16-и битные. Вероятно, что-то вроде temp &= [uint8]~(1‹‹1) поможет. Кстати, вторую единицу я-бы назвал как-то символьно, что-бы не думать потом "что-же это там второй бит делает".
ForcePoint вне форума  
Непрочитано 26.07.2015, 12:02  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ForcePoint Посмотреть сообщение
Кстати, вторую единицу я-бы назвал как-то символьно, что-бы не думать потом "что-же это там второй бит делает".
У меня с короткими и понятными названиями тяжело. Поэтому я помечаю в отдельном текстовом файле ,что у меня каждый флаг(бит) делает. Мне так проще оказалось.

Попробовал temp &= [uint8]~(1‹‹1) .Ругается. Говорит не знаю что это.
ARTEM277 вне форума  
Непрочитано 26.07.2015, 12:38  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,458
Сказал спасибо: 3,227
Сказали Спасибо 3,512 раз(а) в 2,393 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Тогда, круглые скобки и скобки вокруг выражения (не помню точно) - (uint8 )(~(1‹‹1)).
Поищите в руководствах. Это, вроде, "модификатор типа" называется. Т.е. компилятор должен часть выражения посчитать используя другой тип данных.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
ARTEM277 (26.07.2015)
Непрочитано 26.07.2015, 14:55  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Провел кое какие исследования. И получил вот что.

На уровне ассемблера эта команда PORTA&=~(1‹‹1) выглядит как
CBI 0x18,1. Эта команда PORTA|=(1‹‹1) выглядит как SBI 0x18,1.
Эти команды обращаются на прямую к регистру PORTA (так же и к другим физическим регистрам).
То есть в системе команд atmeg-и команды сделаны прямо для этого.
http://www.gaw.ru/html.cgi/txt/doc/m.../asm/start.htm
CBI 0x18,1 это 2 байта
SBI 0x18,1 это тоже 2 байта

Теперь рассмотрим эту операцию
это в си;
unsigned char temp=4;

temp&=~(1‹‹1);

в ассемблере ;

LDS R24,0x0060;занимает 4 байта. Загружаем содержимое по адресу 0x0060 в R24. То есть число 4.
ANDI R24,0xFD ;занимает 2 байта. Делаем логическое and
STS 0x0060,R24 ;занимает 4 байта. Выгружаем обратно.

То есть получается все верно. Эта операция занимает temp&=~(1‹‹1); занимает 10 байт. Все по честному.
И по другому ни как я не могу в своей переменной очистить бит.
Если конечно представить ,что R26(например) будет моя переменная temp и сделать вставку ассемблера
,то я могу делать так
ORI R26,0x01 ; то это займет 2 байта.
но кто знает как компилятор распорядится этим регистром

Команд,которые могут работать с битами ячеек ОЗУ на прямую я не нашёл.
Значит если нужен очень компактный код, то шлепать надо на асме. И работать только с регистровым файлом. Не создавая ни каких переменных в озу.
Человек который писал на ассемблере похожую программу работал только с регистровым файлом. Вся программа заняла 2490 байт. На си моя программа должна будет занять примерно 5 кБайт. Но она будет гибче и понятнее. За удобство надо платить.

У Microchip такая возможность как изменить один бит в ОЗУ есть.
Это взято с реально работающей программы.
Контроллер PIC12F629
begin:
mask1 EQU 21h ; называем ячейку в ОЗУ по адресу 21h как mask1

инициализация

start:
bsf GPIO,1 ;команда занимает 1 байт. Установить в 1 "ногу порта"
bsf mask1,1;команда занимает 1 байт. Установить бит 1 в mask1

То есть команда bsf может работать как с регистрами так и с ОЗУ
Почему ATMEL так не сделал.

Комментируйте и исправляйте если я ,что то не так сообразил...
Хочу выслушать Ваше мнение уважаемые форумчане.
ARTEM277 вне форума  
Непрочитано 26.07.2015, 14:58  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ForcePoint Посмотреть сообщение
Тогда, круглые скобки и скобки вокруг выражения (не помню точно) - (uint8 )(~(1‹‹1)).
Ругается.
Я обязательно почитаю руководства. Более подробно.
ARTEM277 вне форума  
Непрочитано 26.07.2015, 18:38  
jump
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,011
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
она будет гибче и понятнее. За удобство надо платить
не верю! (с)
проблема будет с кроссплатформенностью, не более. насчет понятности - макросы спасут, вплоть до отсутствующих в списке команд или формул. а уж имена давать можно любые, только воздерживайтесь от типа - ДАЗДРАПЕРМА, ДЕЛЕЖ, КУКУЦАПОЛЬ
jump вне форума  
Непрочитано 26.07.2015, 19:22  
baiderin
Почётный гражданин KAZUS.RUN
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,739
Сказал спасибо: 2,487
Сказали Спасибо 897 раз(а) в 584 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

А ЛАПАНАЛЬДА можно ?
baiderin вне форума  
Непрочитано 26.07.2015, 21:08  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от jump Посмотреть сообщение
насчет понятности - макросы спасут
Хочу пример. Если не сложно . Напиши о каких макросах идет речь ?
Может я что то не знаю.Я ведь только учусь.
ARTEM277 вне форума  
Непрочитано 26.07.2015, 21:10  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от baiderin Посмотреть сообщение
А ЛАПАНАЛЬДА можно ?
Можно. Это же не попало в список санкций.
ARTEM277 вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Re-0505S помогите советом Superki Источники питания и свет 2 08.10.2008 20:14
Помогите советом начинающему eler Делимся опытом 100 11.09.2008 17:28
Товарищи помогите советом!!! Mrak Микроконтроллеры, АЦП, память и т.д 13 17.11.2005 18:46
[Решено] Помогите советом Madison Видеотехника 9 06.08.2005 04:17
[Решено] помогите советом pioneer KEH-P7450 sreg kr Информация по радиокомпонентам 2 20.07.2005 18:57


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.