<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><font face="Arial">Naprosto stejně jsem to kdysi udělal na
        AT89C4051. I ten reagoval zásluhou použití přerušení bez
        problému. Tam sice nejrychlejší přerušení bylo od průchodu sítě
        nulo, čili po 10mS, jenže v tom přerušení bylo potřeba </font></p>
    <p><font face="Arial">nahodit bit portu,</font></p>
    <p><font face="Arial">výsledek výoočtu PWM uložit do časovače a ten
        spustit a zjistit stisknuté tlačítko (procesor neměl hw pwm)<br>
      </font></p>
    <p><font face="Arial">jakmile doběhl, vyvolal další přerušení, které
        ten bit shodilo (to už bylo snadné) <br>
      </font></p>
    <p><font face="Arial">No a pak tam byla obsluha multiplexu displeje,
        byl třímístný a trošku blikal, protože přepínal po těch 10mS,
        tedy s frekvencí 33Hz.</font></p>
    <p><font face="Arial">Hlavní smyčka obsluhovala výpočty a zobrazení.</font></p>
    <p><font face="Arial">Největší obklička byla vejít se s daty do
        256byte RAM <br>
      </font></p>
    <pre class="moz-signature" cols="72">Martin Záruba</pre>
    <div class="moz-cite-prefix">Dne 24.4.2024 v 20:50 Pavel Hudeček
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:df137300-0c67-4230-b05a-1e8728ea3397@seznam.cz">No to
      bylo vlastně podobné, jako dnes s těmi floaty:
      <br>
      Tehdy byl v módě strach z použití přerušení:-)
      <br>
      <br>
      On tam měl dokonale optimalizovanou smyčku, která dělala všechno.
      Jenže tenhle způsob je prostě hrozně omezující a asi měl smysl
      někdy kdysi, kdy režije spojená s častým přerušením byla vysoká.
      <br>
      <br>
      Přitom byl stejná věková kategorie. Asi je to tak učili ve škole
      od starého profesora. Mě naopak přišlo samozřejmý, že už dávno na
      ZX Spectru, se Z80, instrukčním cyklem 3,5 MHz/12 a 50% halt na
      zobrazování, se normálně používalo přerušení Vsync 50 Hz a
      nevypadalo, že by vadilo mít řádově rychlejší.
      <br>
      <br>
      Tak mi tam skákaly 4 přerušení, 1 kHz na multiplex a čekání + dvě
      od obou hran obou IRC signálů a myslím 8 Hz od RTC timeru. Hlavní
      smyčka už jen čekala na stisk tlačítka a mezitím převáděla
      přerušením spočítané pulzy na stupně, desetiny a setiny, nebo
      minuty. A když se dlouho nic nedělo, začala zobrazovat kolik je
      hodin. Případně sleep, když vypadne napájení ze zdroje. Nebo, když
      se někdy dočkala stisku tlačítka, tak přepínání setiny/minuty,
      12/24 hod, seřízení hodin, kalibrace úhlů.
      <br>
      <br>
      Pak byla ještě ta vtipná věc, kdy jsem si řek, že malinkej krystal
      32,768 kHz je určitě horší než velkej 16 MHz a že teda v zaplým
      stavu se bude čas přičítat v tom kHz přerušení ... nenastalo
      zlepšení, ale zhoršení ... aha ono to neběží na krystal, ale na RC
      ... aha nastavení timeru jsem pochopil správně a nesoulad
      vypočítané hodnoty s realitou měl poněkud jinej původ:-)
      <br>
      <br>
      Nakonec se prý ještě někdo ptal, co že je tam teď za čidlo, když
      to původní mělo 500 kroků na otáčku a on ze 4x větší kalibrační
      konstanty vydedukoval, že teď je 2000 a jestli se to kvůli němu
      nezdraží:-)
      <br>
      <br>
      PH
      <br>
      <br>
      Dne 24.04.2024 v 16:20 Petr Labaj napsal(a):
      <br>
      <blockquote type="cite">Jen pro zajímavost: nepřišel jste pak na
        to, kde byla chyba v tom původním algoritmu?
        <br>
        <br>
        PL
        <br>
        <br>
        *****************
        <br>
        <br>
        Dne 24.4.2024 v 15:42 Pavel Hudeček napsal(a):
        <br>
        <blockquote type="cite">Tohle mi vždycky připomene můj první
          komerční projekt v C:
          <br>
          Předělat zlobící elektronický úhloměr. Deska plná součástek, v
          ní MCU s programem v asm.
          <br>
          <br>
          Při pohledu do zdrojáků jasná kategorie "klobouk dolů".
          Všechno dokonale optimalizované, líp to nejde. Byl tam nějakej
          dost frajerskej zp;sob, jak zároveň měřit inkrementálními
          čidly i zobrazovat na displeji s multiplexem. Jenže celkovej
          výsledek byl, že při trochu rychlejším otáčení rukou
          poblikával displej, při neopatrném cuknutí ztracené impulzy. V
          elektronice dokonale ošetřené zákmity a další věci.
          <br>
          <br>
          Napsal jsem to v C, ve kterém jsem ještě moc neuměl. Ale
          protože jsem vymyslel jak má správně fungovat celek, dopadlo
          to tak, že se v baráku nenašla vrtačka, která by byla tak
          rychlá, aby zp;sobila jakýkoli problém. Jsem si jist, že jsem
          za ktratší dobu dosáhnul nesrovnatelně lepšího výsledku než
          předchůdce. A bylo to proto, že jsem nevymýšlel kolo, šroubek,
          ... ale vymýšlel auto, ve kterém jsou kola, šroubky, ...
          <br>
          <br>
          A z původní elektroniky zbyl ptrakticky jen procesor, protože
          můj program není citlivej na zákmity a ještě přitom zastane
          funkci RTC. Vlastně až v téhle fázi jsem zjistil, že můj
          program běží na 1 MHz a připojený 16 MHz krystal nepoužívá.
          <br>
          <br>
          PH
          <br>
          <br>
          Dne 24.04.2024 v 13:46 Petr Labaj napsal(a):
          <br>
          <blockquote type="cite">Tak určitě je možné nemuset tolik
            přemýšlet a chytrý algoritmus nahradit hrubou silou.
            <br>
            Když se dívám na nějaký cizí projekt, tak si interně dělím
            autory do škatulek:
            <br>
            <br>
            - vidím optimalizovaný program, s nápaditými řešeními, které
            člověka jen tak na první dobrou nenapadnou
            <br>
              Kategorie "klobouk dolů"
            <br>
            <br>
            - program s optimalizovanými algoritmy a datovými typy
            <br>
              Kategorie "dobrý programátor"
            <br>
            <br>
            - program napsaný bez velkého rozmyslu, např. se zbytečným
            použitím float/double kde být nemusí, nepromyšlené algoritmy
            <br>
              Kategorie "programátorský dělník, produkt moderního
            školství"
            <br>
            <br>
            - program, využívající na kdejakou blbost externí knihovny,
            nejlépe ještě nějaké obskurní a vyžadující kýbl závislostí
            <br>
              Kategorie "..bil"
            <br>
            <br>
            Je to ale jen mé soukromé a subjektivní dělení, se kterým
            jistě nemusí spousta lidí souznít.
            <br>
            Asi je to tím, že jsem začínal na slabých strojích a mám rád
            rychlou odezvu techniky.
            <br>
            <br>
            PL
            <br>
            <br>
            ******************
            <br>
            <br>
            Dne 24.4.2024 v 7:57 Jaroslav Buchta napsal(a):
            <br>
            <blockquote type="cite">Jo, taky mi prijdou obavy z float
              prehnane, ono to v principu tak slozite neni, navic jsou
              jen bitove posuvy mantisy pred a po operaci a nejaka
              logika se znamenkem a exponentem. Komfort prace s cisly je
              pak o level jinde.
              <br>
              A pokud uz je nutny double, tak narocnost zakladnich
              operaci bych si tipnul roste spis linearne nez rychleji,
              cili na cca dvojnasobek , jine to bude u funkci typu sin,
              cos, log... ale zase asi jen vyssi pocet iteraci.
              <br>
            </blockquote>
            <br>
          </blockquote>
        </blockquote>
        <br>
        _______________________________________________
        <br>
        HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
        <br>
        <a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
        <br>
        <a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
        <br>
      </blockquote>
      <br>
      _______________________________________________
      <br>
      HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
      <br>
      <a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
      <br>
    </blockquote>
  </body>
</html>