Отговори на тема  [ 46 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща
пулсиране на светоиод 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2582
Местоположение: Велико Търново / София
Мнение Re: пулсиране на светоиод
Направих го със 256 степени. Приложих един трик, разделям голямото число което се получава на 64. Не мисля обаче, че има много голяма разлика все пак.
Код:
    while(1){
       
        pwm = ((unsigned long)(duty*duty)) / 64;
        LED0 = ON;
        Delay(pwm);
       
        LED0 = OFF;
        pwm = ((unsigned long)65536-(duty*duty)) / 64;
        Delay(pwm);
       
        cnt++;
        if(cnt == 3){
            cnt = 0;
            if(!nazad)
                duty++;
            else
                duty--;
           
            if(duty == 256){
                nazad = TRUE;
            }
            if(duty == 0){
                nazad = FALSE;
            }
        }
    }

_________________
https://github.com/slav4ocom/


Вто Мар 26, 2019 3:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: пулсиране на светоиод
Код:
void test()
{
   uint16_t pwm;
   uint8_t duty, dir, cnt;
   
   duty = 1;
   dir = 1; // +1 or -1
   cnt = 3;
   
   while (1)
   {
      if (cnt++ >= 3)
      {
         duty += dir;
         if (duty == 0)
            dir = -dir;
         
         cnt = 0;
         pwm =  (duty * duty) / 64;   //max 1016
      }

      LED0 = ON;
      Delay (pwm);

      LED0 = OFF;
      Delay(1016-pwm);

      cnt++;
   }
}


Вто Мар 26, 2019 4:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 5:20 pm
Мнения: 3212
Мнение Re: пулсиране на светоиод
Похвални са напъните, но както вече няколко пъти споменаха, може би най-ефективно е с таблица със стойности (пести се процесорно време, което също е ресурс).

Иначе може и с умножение по 2 (или пък по 1.414)...

x = x * 1.414;


Вто Мар 26, 2019 4:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: пулсиране на светоиод
velio написа:
може би най-ефективно е с таблица със стойности (пести се процесорно време, което също е ресурс)


Не свиквайте с подобни "оптимизации"... Това може да важи за малък PIC, но някой ден ще минете на PIC32 или друг 32-битов RISC и там нещата са по малко по-различен начин.
В случая наистина ако проца няма хардуерно умножение, може да се помисли за таблица или друга оптимизация. Въпросът е да не става навик това, понеже ми се е налагало да махам таблиците от десетки алгоритми и парен каша духа ;-)


Вто Мар 26, 2019 5:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 1:21 am
Мнения: 10574
Местоположение: София
Мнение Re: пулсиране на светоиод
miro_atc написа:
Не свиквайте с подобни "оптимизации"... Това може да важи за малък PIC, но някой ден ще минете на PIC32 или друг 32-битов RISC и там нещата са по малко по-различен начин.
В случая наистина ако проца няма хардуерно умножение, може да се помисли за таблица или друга оптимизация. Въпросът е да не става навик това, понеже ми се е налагало да махам таблиците от десетки алгоритми и парен каша духа ;-)

Сподели какви са негативите от използване на таблици?


Вто Мар 26, 2019 5:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: пулсиране на светоиод
itso.t написа:
Сподели какви са негативите от използване на таблици?


Поради x86 наследството или покрай малките контролерчета много хора си мислят, че е по-добре да извлечеш резултата от паметта, отколкото да си го сметнеш. Типичен пример са множеството хаш алгоритми (начело с CRC), много криптирания и т.н.

Проблемът е, че всичко "ново" отдавана е RISC, демек ядрото прави поне 1 инструкция/клок. По-големите ядра стигат до 6-7 инструкции. Първоначално инструкциите са били "простички", но отдавна вече не са толкова простички. Примерно де-факто е стандарт хардуерното умножение. Шифтването (т.е. деление/умножение със степени на 2) даже не се брои като инструкция, примерно при ARM е опция към повечето операнди. Също събиране/изваждане с константа.
Демек за един клок, всеки съвремен RISC прави повече от една операция. От там DMIPS e по-голям от MIPS-вете на ядрото.

Не така стои въпроса с паметта обаче. Колкото по-голямо е прасето и колкото по-голяма е паметта, достъпът до даден адрес (особено ако не е в кеша) може да отнеме десетки и стотици клокове. Дори когато няма кеш е повече от един клок. При PIC32/MIPS 4k има оптимизация, докато при АРМ умишлено (за да може да работи с всякакви памети) достъпът е поне 2-3 клока.

RISC архитектурата има и още една особеност - не можеш да адресираш произволна памет. Имаш load-store механизъм, което ще рече че за да ползваш таблица, трябва първо да заредиш адреса на таблицата. Единственото хубаво нещо е че това зареждане е PC-релатив, демек трябва да е в кеша... Но крайният резултат е, че вместо едно четене от таблица има два БАВНИ достъпа до паметта. И на всичкото отгоре губиш и един регистър, а като накараш компилатора да освободи един регистър той се принуждава да го спаси някъде из паметта, демек БАВНИТЕ достъпи може и да станат повече от 2.

И така... в добрия случай произволно четене от таблица в кеша излиза поне 5-10 клока. В лошия просто излиза меко казано "солено". Но и 5-10 клока хич не са малко, защото както казах ядрото на клок обикновено прави повече от 1 математическа операция. С две думи, таблицата има смисъл само ако пести повече от 10 мат. операции. Ако е само едно умножение както е в случая е меко казано неразумно ;-)


Вто Мар 26, 2019 5:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 1:21 am
Мнения: 10574
Местоположение: София
Мнение Re: пулсиране на светоиод
Полезна информация. Благодаря за което.


Вто Мар 26, 2019 7:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 10:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение Re: пулсиране на светоиод
Ай ся, оптималното решение обикновено е само едно, в случая ми се види доста тъпо да мориш добичето с непосилни сметки и то всеки период наново. Ако има икономия - тя е от напъна на невроните на програмиста, а всички ежедневно "благославяме" резултатите от подобна дейност.


Вто Мар 26, 2019 7:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: пулсиране на светоиод
за тва:
палиш диоада и мигаш с очи :)

_________________
main[-1u]={1};


Вто Мар 26, 2019 8:01 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: пулсиране на светоиод
TheWizard написа:
за тва:
палиш диоада и мигаш с очи :)

тц, той не иска да мина а да пулсира, ще трбява якак да примижва ли що ли ... :)


Вто Мар 26, 2019 10:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 1:21 am
Мнения: 10574
Местоположение: София
Мнение Re: пулсиране на светоиод
Ще мигаш плавно де...


Сря Мар 27, 2019 12:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2582
Местоположение: Велико Търново / София
Мнение Re: пулсиране на светоиод
Абе аз и шим мога да си направя с бързо мигане, обаче мислех да са 8 светодиода, а това значи трябва да търся още 3ма човека

_________________
https://github.com/slav4ocom/


Сря Мар 27, 2019 12:23 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 8:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: пулсиране на светоиод
ToHu написа:
ограничавам всички подсветки по машините на 70%, пести доста ток, а визуално не се усеща.

Прав си, че между 70% и 100% почти не се усеща разлика, обаче повечето устройства намаляват яркостта с PWM на сравнително ниска честота и това създава напрежение в очите и в главата, без да разбираш от къде идва. За това е важно да проверите мониторите които ползвате всеки ден с часове, дали мигат като им се намаля яркостта и ако мигат ги заковете на 100%.

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Мар 30, 2019 2:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2582
Местоположение: Велико Търново / София
Мнение Re: пулсиране на светоиод
Ike моя монитор точно така съм го направил :) Едвам му намалих яркостта софтуерно и от PC, но не трепка. На телевизорите не е така, но там или е висока честотата или е линейно регулиране.

_________________
https://github.com/slav4ocom/


Последна промяна slav4o.com на Съб Мар 30, 2019 3:55 pm, променена общо 1 път



Съб Мар 30, 2019 3:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 9:16 am
Мнения: 1705
Мнение Re: пулсиране на светоиод
ike написа:
ToHu написа:
ограничавам всички подсветки по машините на 70%, пести доста ток, а визуално не се усеща.

Прав си, че между 70% и 100% почти не се усеща разлика, обаче повечето устройства намаляват яркостта с PWM на сравнително ниска честота и това създава напрежение в очите и в главата, без да разбираш от къде идва. За това е важно да проверите мониторите които ползвате всеки ден с часове, дали мигат като им се намаля яркостта и ако мигат ги заковете на 100%.

А най-добре у коша(мазата) и към магазина за нов. Здравето и дискомфорта не струват 250лв..


Съб Мар 30, 2019 3:40 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 46 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни