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

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

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

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

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

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

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

 
Опции темы

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

Непрочитано 26.07.2015, 21:22  
jump
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,009
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от baiderin Посмотреть сообщение
можно ?
в этом доме попрошу не выражаться! (С) да-с!
Реклама:
jump вне форума  
Непрочитано 26.07.2015, 21:26  
jump
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,009
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

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

Сообщение от jump Посмотреть сообщение
а мы - ищем клац и читаем
За ссылочку конечно спасибо. Но мне ассемблер не интересен. Я пока ,что СИ постигаю. Я не много писал под микрочип на асме. Поэтому принцип работы ассемблера я понимаю. С макросами в ассемблере дело не имел. Как то не доходило.
Начинать споры о том какой язык круче ,бессмысленно. У каждого языка как свои плюсы так и минусы.... Но пока ,что от си я в восторге. Много фишек этого языка я не знаю конечно, но для этого и есть этот форум ,что бы люди делились своими знаниями. Ибо,идущий осилит дорогу... по моему так говорится..
ARTEM277 вне форума  
Непрочитано 27.07.2015, 23:54  
jump
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,009
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
мне ассемблер не интересен. Я пока ,что СИ постигаю
тогда вы не постигнете дзен
Сообщение от ARTEM277 Посмотреть сообщение
Я не много писал под микрочип на асме. Поэтому принцип работы ассемблера я понимаю. С макросами в ассемблере дело не имел
тогда вы не понимаете принципов. кстати, погуглите "макросы в С"
jump вне форума  
Непрочитано 28.07.2015, 06:51  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от jump Посмотреть сообщение
кстати, погуглите "макросы в С"
Конечно я посмотрел. #define это макрос. Я ПРАВИЛЬНО ПОНЯЛ ? Через него я пытался решить проблему описанную мной в 55 посте. Не знаю на сколько правильно я его использовал.
Есть у меня такая ячейка. button_pressed называется .Она 16 битовая. Каждый бит этой ячейки соответствует состоянию кнопки.
То есть операция выглядит как
button_pressed =button_pressed &~(1‹‹0); //кнопка 1 не нажата. Занимает 20 байт
button_pressed =button_pressed |(1‹‹0);//кнопка 1 нажата. Занимает 20 байт.

через define сделал так
#define clr(x) button_pressed =button_pressed &~(1‹‹(x));
#define set(x) button_pressed =button_pressed|(1‹‹(x));

Да удобно оказалось. На будущее буду пользоваться. Но проблему с памятью не решило. Я думал получится некий шаблон. Куда я только подставляю номер бита .Но нет,каждая такая операция занимает set(x) или clr(x) так же 20 байт.
ARTEM277 вне форума  
Непрочитано 28.07.2015, 12:38  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
.Но нет,каждая такая операция занимает set(x) или clr(x) так же 20 байт.
Оптимизация включена или нет?
_Артём_ вне форума  
Непрочитано 28.07.2015, 12:51  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
каждая такая операция занимает set(x) или clr(x) так же 20 байт.
Так и должно быть. Этот дефайн просто тупо заменяет все set(x) на то, что описано в нём.
Для экономии памяти надо объявить функцию
Код:
void set(int x)
{
     button_pressed =button_pressed|(1‹‹(x));
}
Тогда каждый вызов set(x) будет занимать меньше 20 байтов в памяти. При большом количестве вызовов это позволит существенно сэкономить памяти по сравнению с #define.
Yurkin2014 вне форума  
Сказали "Спасибо" Yurkin2014
ARTEM277 (05.08.2015)
Непрочитано 03.08.2015, 12:07  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от _Артём_ Посмотреть сообщение
Оптимизация включена или нет?

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

Сообщение от Yurkin2014 Посмотреть сообщение
Для экономии памяти надо объявить функцию
Код:
void set(int x)
А вот это я попробую. Я делал ,что то подобное... Но вариантов у меня было уже столько перебрано ,что я и забыл,делал я так или нет....
ARTEM277 вне форума  
Непрочитано 05.08.2015, 11:21  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от Yurkin2014 Посмотреть сообщение
Код:
void set(int x)
{
button_pressed =button_pressed|(1‹‹(x));
}
Попробовал. И вспомнил ,что я так уже делал. Отказался от этого ,потому ,что
при применение этого метода программа (на данном этапе ) становится на 92 байта больше, но при этом больше не увеличивается,что радует . Метод очень хорош ,но не в моем случае наверное уже. На будущее возьму его на вооружение ...
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, время: 22:03.


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