Например TDA7294

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





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

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


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



Начать новую тему Ответить на тему  [ Сообщений: 51 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Чт ноя 03, 2016 19:47:15 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
smacorp писал(а):
Как и Энштейн с его теорией вероятностей. :)

Ну да, а Блез Паскаль занимался теорией относительности. Думаю, оба они удивились бы, что их пере-специализировали. Особенно Энштейн :)

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Чт ноя 03, 2016 20:11:09 
Собутыльник Кота
Аватар пользователя

Карма: 61
Рейтинг сообщений: 1371
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 2812
Откуда: Казань
Рейтинг сообщения: 0
Jack_A писал(а):
Особенно Энштейн
Это да, это я в спешке сильно оговорился. :oops: Но сути заблуждений товарища ozonn это не меняет. :)

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 340 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня !
Паяльная маска XV501T-4 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Чт ноя 03, 2016 20:21:23 
Встал на лапы

Зарегистрирован: Вс май 08, 2016 22:45:48
Сообщений: 131
Рейтинг сообщения: 0
Действительно - убираешь функции random -памяти сразу хватает. Вывод, нужно найти генератор ПСЧ на асе. Ни у кого случаем такого не завалялось? :oops: :roll:


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Чт ноя 03, 2016 20:45:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
sTRog писал(а):
Действительно - убираешь функции random -памяти сразу хватает. Вывод, нужно найти генератор ПСЧ на асе. Ни у кого случаем такого не завалялось? :oops: :roll:

вывод только один: думать 7 раз, а потом делать 1 раз. вот смотрите, что из вашего кода сделал я:
Спойлер
Код:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>

#define T_POLL 136
#define TRANS   _BV(2)
#define LED_G   _BV(3)
#define LED_R   _BV(4)
#define BTN      _BV(1)

char mod = 0;
volatile uint8_t i;
volatile uint16_t Sec;
int rantime;

ISR(TIM0_OVF_vect){
   TCNT0 = T_POLL;
   i++;

   if (i>=10) //period 1s
   {
      Sec++;
     i=0;
   }
}

static void pulce(void){
      PORTB |= TRANS;
      _delay_ms(1);
      PORTB &= ~TRANS;
}

static void pulce_led(void){
    PORTB |= LED_G;
    _delay_ms(10);
    PORTB &= ~LED_G;
}

static void sequence(void){
   pulce();
   _delay_ms(10);
   pulce();
   _delay_ms(500);
   pulce();
   _delay_ms(10);
   pulce();
   Sec = 0;
}

int main(void){

   PRR = (1<<PRADC); // shut down ADC

   TIMSK0 = (1<<TOIE0);  // timer0 overflow interrupt enable
   TCCR0B = (1<<CS02) | (1<<CS00); // prescaler 1/1024

   sei();


   DDRB = TRANS | LED_G | LED_R; //транзистор

   rantime = 3600 + random() % 3600;

   while (1){
      if (mod==0){
         if (Sec>=5400){
            sequence();
         }
      }

      if (mod==1){
         if (Sec>=rantime){
            sequence();
            rantime = 3600 + random()%3600;
         }
      }

      if (PINB & BTN){
         cli();
         Sec = 0;
         if (mod==0){
            mod = 1;
            pulce_led();
        } else {
           mod = 0;
           pulce_led();
           _delay_ms(100);
           pulce_led();
        }
         _delay_ms(1000);
         sei();
      }
   }
}
по-моему, функционал сохранен на 100%, но объем памяти код при этом всего 930 байт занимает против вашего варианта в 1060 байт или сколько там было... при этом не потребовалось заменять random()

всех делов-то - подумать над ОПТИМИЗАЦИЕЙ кода. кстати, все, что я сделал, вам советовали ранее, просто я не поленился этим советам последовать...

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

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


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Чт ноя 03, 2016 21:13:25 
Встал на лапы

Зарегистрирован: Вс май 08, 2016 22:45:48
Сообщений: 131
Рейтинг сообщения: 0
Спасибо дядя AVR. Буду разбираться, что и как можно было сделать лучше.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 09:25:43 
Вымогатель припоя

Карма: 6
Рейтинг сообщений: 7
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 522
Рейтинг сообщения: -3
ARV писал(а):
ozonn писал(а):
именно в непредсказуемые моменты
для работающей программы в МК непредсказуемые моменты могут возникать ТОЛЬКО по внешним событиям - я писал про прерывания. любые ВНУТРЕННИЕ события будут однозначно предсказуемыми.

то есть ваш подход сработает для "электронного кубика" или "однорукого бандита". но устройство, генерирующее текст, выбирая слова из массива по "случайному" индексу, будет генерировать всегда одинаковую последовательность фраз, т.е. однозначно предсказуемо.

разумеется событие внешнее. это само собой разумеется

Добавлено after 4 minutes 28 seconds:
smacorp писал(а):
Jack_A писал(а):
Особенно Энштейн
Это да, это я в спешке сильно оговорился. :oops: Но сути заблуждений товарища ozonn это не меняет. :)

товарищь smacorp, я не могу понять, в чем вы меня пытаетесь убедить? В том, что выборка чисел из монотонного ряда чисел, основанная на случайном событии будет не случайной? :))

ну так докажите обратное, размажте меня по стене :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 09:56:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 10:03:32 
Вымогатель припоя

Карма: 6
Рейтинг сообщений: 7
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 522
Рейтинг сообщения: 0
ARV писал(а):
ozonn писал(а):
разумеется событие внешнее. это само собой разумеется
это не разумеется само собой, т.к. речь в теме идет о программной генерации случайных чисел, а у вас фактически используется внешний генератор случайных чисел, а не внутренний.

внутренних генераторов случайных чисел в природе не существует. Вы в этой теме ведете речь о том чего нет. За сим откланиваюсь :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 11:09:49 
Встал на лапы

Зарегистрирован: Вс май 08, 2016 22:45:48
Сообщений: 131
Рейтинг сообщения: 0
Возник вроде только один вопрос, AVR

Как одной и той же командой ножки присваиваются значения - работать на выход и на вход?
#define LED_R _BV(4)
#define BTN _BV(1)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 11:55:38 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
Никак. Это только макроомрпделение номера ножки, само по себе оно ничего не далает.
Запишете DDRB |= LED_R; будет выход, запишете DDRB &=~ BTN; будет вход


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 18:49:49 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

COKPOWEHEU писал(а):
запишете DDRB &=~ BTN; будет вход
только в случае, если вывод всегда сохраняет свою функцию входа, делать вот этого DDRB &=~ BTN; вообще не надо (как я и поступил в своем варианте кода) - DDRВ и так обнулен полностью после сброса.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 19:46:09 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
На состояние после сброса по умолчанию я бы не стал полагаться, имею печальный опыт. Но если состояние пинов в процессе работы не собирается меняться, то DDRB можно прописать прямым присваиванием, как в моем варианте кода.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 20:58:26 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Пт ноя 04, 2016 23:20:06 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
ARV писал(а):
только в случае, если вывод всегда сохраняет свою функцию входа, делать вот этого DDRB &=~ BTN; вообще не надо (как я и поступил в своем варианте кода) - DDRВ и так обнулен полностью после сброса.
Я это приводил в качестве иллюстрации перевода вывода из произвольного состояния в состояние входа. Для абстрактного куска кода. Например, если этот вывод используется иногда для входа, иногда для выхода.
Jack_A писал(а):
если состояние пинов в процессе работы не собирается меняться, то DDRB можно прописать прямым присваиванием, как в моем варианте кода.
Вот это ИМХО самое простое и правильное решение. Одной командой за 2-3 такта настроить все выводы порта вместо побитной настройки. В редких случаях, правда, это может ухудшить читаемость кода


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Сб ноя 05, 2016 09:22:22 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Jack_A писал(а):
На состояние после сброса по умолчанию я бы не стал полагаться, имею печальный опыт.
Я тоже не понимаю. Вы предлагаете все регистры инициализировать или какие-то выборочно? И почему следует, например, верить что некая команда выполнит заявленное в ДШ , но не следует верить, что регистр будет инициализирован указанным значением? Что за печальный опыт?

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Сб ноя 05, 2016 10:33:01 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 3
ARV писал(а):
если не верить в аппаратную часть, надо идти в дворники...

Верить - это к церковникам. А единожды упершись в МК, который работал через опу, в то время как полсотни остальных с той же прогой работали как надо, анализом установил, что один бит в регистре ( подробности не помню за давностью) становится не в ту позицию по умолчанию. Разбирать что с ним случилось - на эксперименты времени не было - заказчики, график поставки . Прописал ему что надо в регистр - песня! С тех пор взял себе за правило - всю инициализацию прописывать. Речь шла о потоке в солидной фирме, и мое "верю - не верю" шеф просто не понял бы. Конечно, если речь идет о кухонном таймере любимой теще - можно и "по вере" написать, но на произваодстве главное - надежность, а не твое "верю - не верю".
В дворники не собираюсь, в своем ремесле достиг достаточно приличных результатов. Сейчас, увы, на пенсии :(
А насчет почему - можно, перелистывая бесчисленные Errata Sheet, доискиваться, что "в партиях с XXXX по YYYY имеется вот такая за$бень, потому будьте бдительны", я предпочел решение в лоб.
СпойлерНесмотря на разногласия в вопросах веры :) , Вас из friend-list'а не убираю :))

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Сб ноя 05, 2016 10:41:54 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Правильно ли я понял, что Вы из-за неисправного МК инициализируете ВСЕ регистры?

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Сб ноя 05, 2016 10:54:33 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Z_h_e писал(а):
Я тоже не понимаю. Вы предлагаете все регистры инициализировать или какие-то выборочно? И почему следует, например, верить что некая команда выполнит заявленное в ДШ , но не следует верить, что регистр будет инициализирован указанным значением? Что за печальный опыт?

Произошел сбой, некая команда не выполнила заявленной в ДШ, прыгнула на свободное место, мк дошагал до конца и запустился с нулевого адреса, но со значениями регистров которые были на момент сбоя...

ps. Давно авр-ми не занимался, сейчас ради интереса скомпилировал вариант от ARV(gcc -Os), получил 804 байта.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Сб ноя 05, 2016 11:05:58 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Reflector писал(а):
Произошел сбой, некая команда не выполнила заявленной в ДШ, прыгнула на свободное место, мк дошагал до конца и запустился с нулевого адреса, но со значениями регистров которые были на момент сбоя...
Если опасаться такого сбоя, который мог бы просто завесить МК, то проще определить причину выполнения начального кода и сделать соответствующие шаги. АВР это умеет.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Оптимизация Кода
СообщениеДобавлено: Сб ноя 05, 2016 11:09:46 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
Z_h_e писал(а):
Правильно ли я понял, что Вы из-за неисправного МК инициализируете ВСЕ регистры?

Нет, неправильно поняли. В исправном МК ( но с каким-то bug, позднее описанном в errata list и исправленном ) и во всех остальных я инициализирую все используемые регистры . Поверьте, памяти на пол десятка дополнительных команд хватало, а если не хватало - криво написан неоптимальный код или МК неправильно выбран, вот тогда действительно - в дворники.
Впрочем, свое видение я не навязываю. Вольному - воля, пьяному - рай . ©

_________________
Изображение


Последний раз редактировалось Jack_A Сб ноя 05, 2016 11:18:48, всего редактировалось 1 раз.

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

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


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

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


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

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


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