<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>