<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=58&amp;t=12965&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-09-16T21:08:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=12965&amp;mode</id>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2015-09-16T21:08:51+01:00</updated>
<published>2015-09-16T21:08:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12965&amp;p=140006#p140006</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12965&amp;p=140006#p140006"/>
<title type="html"><![CDATA[Pomoc przy uruchomeniu sterownika wyswietlacza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12965&amp;p=140006#p140006"><![CDATA[
Witam.<br /><br />Walczę z sterownikiem wyświetlacza 7seg TM1637. Niestety cieżko znalezc cos na ten temat, jak juz jest to albo w j. chinskim albo dla arduino. Znalazlem PDF ktory pokazuje jak mozna go uzyc w C, niestety moje starcie okazało się porażką i nic sie nie dzieje na wyswietlaczu. <br /><br />Moj kod wygląda tak: <br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 15-09-2015<br /> *      Author: SFTW<br /> */<br /><br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#defineCLK_DDRDDRC<br />#define CLK_PORTPORTC<br />#define CLK_PINPINC<br />#define CLK_IOPC0<br /><br />#defineDIO_DDRDDRC<br />#defineDIO_PORTPORTC<br />#defineDIO_PINPINC<br />#define DIO_IOPC1<br /><br />//DEKLARACJE FUNKCJI<br />void I2CStart (void);<br />void I2Cask (void);<br />void I2CStop (void);<br />void I2CWrByte (uint8_t oneByte);<br />void SmgDisplay(void);<br /><br /><br />int main(void)<br />{<br />SmgDisplay();<br /><br />while(1)<br />{<br /><br />}<br />}<br /><br /><br /><br />void I2CStart (void)<br />{<br />CLK_DDR|=(1&lt;&lt;CLK_IO);//ustaw jako wyjscie CLK<br />CLK_PORT|=(1&lt;&lt;CLK_IO);//ustaw stan wysoki CLK<br />DIO_DDR|=(1&lt;&lt;DIO_IO);//ustaw jako wyjscie DIO<br />DIO_PORT|=(1&lt;&lt;DIO_PIN);//ustaw stan wysoki DIO<br /><br />_delay_us(2);<br />DIO_PORT&amp;=~(1&lt;&lt;DIO_PIN);//wyzeruj DIO<br /><br />}<br /><br />void I2Cask (void)<br />{<br />CLK_PORT&amp;=~(1&lt;&lt;CLK_IO);//ustaw stan niski na CLK<br />_delay_us(5);<br /><br />DIO_DDR&amp;=~(1&lt;&lt;DIO_IO);//ustaw DIO jako wejscie<br />DIO_PORT|=(1&lt;&lt;DIO_IO);//PULL-UP dla lini DIO<br /><br />while(!(DIO_PIN &amp; 1&lt;&lt;DIO_IO) );<br /><br />CLK_PORT|= (1&lt;&lt;CLK_IO);<br />_delay_us(2);<br />CLK_PORT&amp;=~(1&lt;&lt;CLK_IO);<br /><br />}<br /><br />void I2CStop (void)<br />{<br />CLK_PORT&amp;=~(1&lt;&lt;CLK_IO);//skasuj CLK<br />_delay_us(2);<br />DIO_DDR|=(1&lt;&lt;DIO_IO);<br />DIO_PORT|=(1&lt;&lt;DIO_IO);<br />_delay_us(2);<br />CLK_PORT|=(1&lt;&lt;CLK_IO);<br />_delay_us(2);<br />DIO_PORT|=(1&lt;&lt;DIO_IO);<br /><br />}<br /><br />void I2CWrByte (uint8_t oneByte)<br />{<br />uint8_t i;<br />for(i=0 ; i&lt;8 ; i++)<br />{<br />CLK_PORT&amp;=~(1&lt;&lt;CLK_IO);<br />if(oneByte &amp; 0x01)<br />{<br />DIO_DDR|=(1&lt;&lt;DIO_IO);<br />DIO_PORT|=(1&lt;&lt;DIO_IO);<br />}<br />else<br />{<br />DIO_DDR|=(1&lt;&lt;DIO_IO);<br />DIO_PORT&amp;=~(1&lt;&lt;DIO_IO);<br />}<br />_delay_us(3);<br />oneByte = oneByte &gt;&gt; 1;<br />CLK_PORT|=(1&lt;&lt;CLK_IO);<br />_delay_us(3);<br />}<br />}<br /><br />void SmgDisplay(void)<br />{<br />uint8_t i;<br />I2CStart();<br />I2CWrByte(0x40);<br />I2Cask();<br />I2CStop();<br />I2CStart();<br />I2CWrByte(0xC0);<br />I2Cask();<br /><br />for(i=0 ; i&lt;6 ;i++)<br />{<br />I2CWrByte(0xFF);<br />I2Cask();<br />}<br /><br />I2CStop();<br />I2CStart();<br />I2CWrByte(0x8F);<br />I2Cask();<br />I2CStop();<br />}[/syntax]<br /><br />w sumie nic nowego troszke tak przerobiony by uwzgledniał porty jako wejscie lub wyjscie, blok init() to pominolem bo poprostu sie pogubilem i jak w przykladzie pusty. Oczywiscie nic nowego jak na mnie poprostu nie działa.  Probowalem z roznymi wartosciami wysylanymi do wyswietlacza, jednak bez skutku, on milczy a wszystkie segmenty zgaszone. Nie moge tez rozgryzc jaka to jest funkcja ktora wysyla do sterownika dane jakie maja sie poajwic na wyswietlaczu. Przyklad z zalacznika pokazuje jak odczytac stan klawiszy, ale ja ich nie mam, tylko 4x7seg. Jesli chodzi o sam moduł wygląda identycznie jak ten <!-- m --><a class="postlink" href="https://herouk.co.uk/wp-content/uploads/2015/07/TM1637-Red-Digital-Tube-LED-Display-Module-Clock.jpg" >https://herouk.co.uk/wp-content/uploads ... -Clock.jpg</a><!-- m --> co do pinu co do sciezki taki sam.<br /><br />Prosze wszystkich o pomoc w uruchomieniu tego ukladu i stworzeniu wlasnej a raczej naszej biblioteki.<br /><br />Za wszelką pomoc, wskazówki i wykrycie błędów bede bardzo wdzieczny.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=499">k_mirek</a> — 16 wrz 2015, o 21:08</p><hr />
]]></content>
</entry>
</feed>