Мастер Ломастер писал(а):мда... как все запущено.
ir - это переменная типа структура ir_t, а через точку пишутся ее поля при доступе к ним.
Любителям можно обходиться и без этого, "ООП понты" не более, для МК точно.
Мастер Ломастер писал(а):мда... как все запущено.
ir - это переменная типа структура ir_t, а через точку пишутся ее поля при доступе к ним.
Avarges писал(а):Любителям можно обходиться и без этого, "ООП понты" не более, для МК точно.
Avarges писал(а):Любителям можно обходиться и без этого, "ООП понты" не более, для МК точно.
обойтись можно без всего, в том числе и без МК. но если уж начинаешь использовать МК - неплохо научиться использовать его с легкостью, воспользовавшись возможностями, предоставляемыми языком Си. структуры не экономят абсолютно ни одного байта - это лишь способ УПОРЯДОЧИВАНИЯ ПЕРЕМЕННЫХ. а, как известно, порядок в программе - следствие порядка в голове. наводите порядок в программе, наводите его в голове - от этого только польза будет, и ни капли вреда. но можно жить и в беспорядке - кто спорит...Avarges писал(а):Если уж любителю на что-то напирать, то лучше уж на ассемблер. Вот он даёт на мк заметные преимущества. А структуры так себе 2 байта сэкономить, адресацию чуть подмазать, ерунда одним словом. Сравнил я конечно слона с мышью
Память данных нет, а вот сэкономить память программ поможет.Мастер Ломастер писал(а):структуры не экономят абсолютно ни одного байта - это лишь способ УПОРЯДОЧИВАНИЯ ПЕРЕМЕННЫХ
Мне даже интересно, вы в своей практике уже сталкивались с проблемой, когда задачу нельзя было реализовать на Си? или когда асм дал "заметное преимущество"?Avarges писал(а):Если уж любителю на что-то напирать, то лучше уж на ассемблер. Вот он даёт на мк заметные преимущества.
с моей точки зрения утверждение об экономии памяти программ - спорное, требующее определенных исследований. пока что я не замечал экономии, а в случае структур с битовыми полями следует ожидать скорее увеличения объема кода.BerZerK-ku писал(а):Память данных нет, а вот сэкономить память программ поможет.Мастер Ломастер писал(а):структуры не экономят абсолютно ни одного байта - это лишь способ УПОРЯДОЧИВАНИЯ ПЕРЕМЕННЫХ
BerZerK-ku писал(а):Мне даже интересно, вы в своей практике уже сталкивались с проблемой, когда задачу нельзя было реализовать на Си? или когда асм дал "заметное преимущество"?
Мастер Ломастер писал(а):это лишь способ УПОРЯДОЧИВАНИЯ ПЕРЕМЕННЫХ. а, как известно, порядок в программе - следствие порядка в голове. наводите порядок в программе, наводите его в голове - от этого только польза будет, и ни капли вреда. но можно жить и в беспорядке - кто спорит...
Тут не требуется ваше мнение и спорить не надо, достаточно написать простейший пример или заглянуть в AVR035 о котором я упоминал чуть выше.Мастер Ломастер писал(а):с моей точки зрения утверждение об экономии памяти программ - спорное
Изивинте за назойливость, а пример привести можете? Какую задачу выполнял МК?Avarges писал(а):Сталкивался
с преогромным интересом погляжу на ваши примеры, доказывающие или опровергающие утверждение, что использование структур с битовыми полями позволяет экономить память программ.BerZerK-ku писал(а):Тут не требуется ваше мнение и спорить не надо, достаточно написать простейший пример или заглянуть в AVR035 о котором я упоминал чуть выше.Мастер Ломастер писал(а):с моей точки зрения утверждение об экономии памяти программ - спорное

BerZerK-ku писал(а):Вы вообще суть разговора помните? Структура дает преимущество в пп по сравнению с кучей разрозненных переменных. При чем тут битовое поле? Толк от его применения, только если проблема с ОЗУ
На этой же странице я уже упоминал рекомендации производителя AVR035, не уж-то там мало написано?Мастер Ломастер писал(а):с битовыми полями я как-то не в тему влез, извиняюсь, это мысли свои бродят и перемешиваются с реальностью... но по поводу заявления о том, что СТРУКТУРЫ ЭКОНОМЯТ ПАМЯТЬ ПРОГРАММ - хотел бы увидеть упомянутые опровержения или подтверждения.
slavokhire5 писал(а):Всем доброго времени суток:) мне нужно реализовать программно регулируемую задержку от 100 до 8100мкс. использую _delay_us(time), где time - результат вычислений. функция эта работает, но занимает 1кб в памяти при включенной оптимизации! как бы по-другому решить мою задачу, подскажите пожалуйста. в голову приходит только while (i < time) i++;
забодай вас комар! то вы требуете чуть ли не с ножом у горла ссылки от меня, то суете ссылки мне... а ведь я просил не ссылок, а реальных примеров. производитель - производителем, а ваши примеры - вашими примерами. то, что верно в теории далеко не всегда легко подтверждается практикой и наоборот.BerZerK-ku писал(а):На этой же странице я уже упоминал рекомендации производителя AVR035, не уж-то там мало написано?
очень странный у вас код или очень странный у вас WinAVR. я не замечал такогоAvarges писал(а):всё равно winavr при каждом вызове уже моей процедуры пихает весь код задержки целиком в место вызова.
Avarges писал(а):Пока ничего не придумал, чтоб отбить несколько байт места занятое кусками одинакового кода.
slavokhire5 писал(а):использую _delay_us(time), где time - результат вычислений. функция эта работает, но занимает 1кб в памяти
slavokhire5 писал(а):в голову приходит только while (i < time) i++;
Код: Выделить всё
// функция, способная создать задержку до 65535 секунд
void mega_delay(uint16_t delay_in_seconds){
for(; delay_in_seconds; delay_in_seconds--)
_delay_ms(1000);
}Мастер Ломастер писал(а):1. WinAVR качественно реализует задержки встроенными функциями только при включенной оптимизации
LCP|=1<<LCD_RS;
690: c1 9a sbi 0x18, 1 ; 24
LCP|=1<<LCD_E;
692: c0 9a sbi 0x18, 0 ; 24
694: c9 01 movw r24, r18
696: 01 97 sbiw r24, 0x01 ; 1
698: f1 f7 brne .-4 ; 0x696 <LCDsendChar+0x3e>
_delay_us(200);
LCP&=~(1<<LCD_E);
69a: c0 98 cbi 0x18, 0 ; 24
LCP&=~(1<<LCD_RS);
69c: c1 98 cbi 0x18, 1 ; 24
69e: c9 01 movw r24, r18
6a0: 01 97 sbiw r24, 0x01 ; 1
6a2: f1 f7 brne .-4 ; 0x6a0 <LCDsendChar+0x48>
_delay_us(200);
А чем пример из appnote вам не угодил?! Не уж-то инкремент глобальной переменной / элемента структуры для вас что-то из разряда невероятного? НУ раз так, вот пример попроще:Мастер Ломастер писал(а):забодай вас комар! то вы требуете чуть ли не с ножом у горла ссылки от меня, то суете ссылки мне... а ведь я просил не ссылок, а реальных примеров. производитель - производителем, а ваши примеры - вашими примерами. то, что верно в теории далеко не всегда легко подтверждается практикой и наоборот.
Код: Выделить всё
char b, c ,d;
struct var
{
char b;
char c;
char d;
} str;
void fs(char v)
{
var *st = &str;
//st->b = 3;
st->c += v;
st->d -= v;
}
void f(char v)
{
//b = 4;
c += v;
d -= v;
}
__C_task void main(void)
{
while(1)
{
//fs(3);
f(3);
}
}А почему пример абстрактный? Для требуемой задачи можете подобное выложить?Мастер Ломастер писал(а):что касается последних жалоб, то я просто удивляюсь, как человек, пишуший на Си за еду до сих пор не умер от голода, так и не придумав самый тупой, но весьма эффективный способ получать задержки приемлемой точности ЛЮБОЙ длительности:
Не стоит грешить на разработчиков, они не виноваты. У вас есть по крайней мере 2 выхода для решения проблемы:Avarges писал(а):Пусть подавится winavr парой десятков байт Вот так мы оптимизируем код, када дядя шеф не при делах
юноша, напоминаю: речь шла про то, что структуры позволяют экономить ПАМЯТЬ ПРОГРАММ. поэтому мне ваши примеры попроще до лампочки, меня убедят результаты компиляции двух программ, в одной из которой данные СТРУКТУРИРОВАНЫ, а в другой - лежат в виде неструктурированных переменных. теперь понятно, почему ТЕКСТЫ, даже из апноутов, никому не нужны? назвался груздем - полезай в пузо: ляпнули про экономию - подтвердите реальным примером.BerZerK-ku писал(а):Не уж-то инкремент глобальной переменной / элемента структуры для вас что-то из разряда невероятного? НУ раз так, вот пример попроще:
я могу все - кто за это заплатит? пример, который я привел - это именно пример, толчок мыслям в нужном направлении. а решение реальной задачи - милости прошу в личку, обсудим.BerZerK-ku писал(а):А почему пример абстрактный? Для требуемой задачи можете подобное выложить?