<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-2">
  </head>
  <body>
    <p>Zdravím,</p>
    <p>udělal jsem chybu v C zápise - zapomněl jsem jedno většítko:</p>
    <p>  DDRB |=(1<CLK_UP);</p>
    <p>takže se ze zápisu jedničky do patřičného bitu stalo cosi.</p>
    <p>Nastavení portu proběhne jen jednou na začátku programu, směr
      pinu už pak nikde neměním.</p>
    <p>IO používám takto:</p>
    <p>void shift_out_up(uint8_t data){<br>
        for (uint8_t i=0; i<8; i++){<br>
          if ((0b10000000>>i)& data){ PORTB
      |=(1<<MOSI_UP);} else {PORTB &=~(1<<MOSI_UP);}<br>
          pause_us(1);<br>
          PORTB |=(1<<CLK_UP);<br>
          pause_us(1);<br>
          PORTB &=~(1<<CLK_UP);<br>
        }<br>
      }</p>
    <p>tj čistě jako výstupní.</p>
    <p>A teď záhada - čekal bych, že pokud nastavení v DDRB neproběhne
      dobře, tak pin bude buď vstupní a nebo výstupní. A pokud bude
      výstupní, tak to bude fungovat. (Po opravě výrazu to začalo
      fungovat).</p>
    <p>Pokud vstupní, tak na něm neuvidím nic - ale ve finále to vypadá
      takto:</p>
    <p><img src="cid:part1.CC1060D7.E952318D@email.cz" alt=""></p>
    <p>Když je sousední pin na 0, tak hodiny na výstup jdou, když je
      vedlejší pin na 1, tak to zmizí, ale ne vždy - v reálu se to
      chovalo tak, že se občas "ztratil" nějaký tik hodin.<br>
    </p>
    <p>Jak může pin takto "plavat"? <br>
    </p>
    <p>Jen doplňuji, je to Attiny84.</p>
    <p>Pěkně zákeřná chyba.</p>
    <p>Petr<br>
    </p>
    <p><br>
    </p>
  </body>
</html>