<?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=8&amp;t=17489&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-01-30T11:59:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=17489&amp;mode</id>
<entry>
<author><name><![CDATA[elektronik666]]></name></author>
<updated>2017-01-30T11:59:06+01:00</updated>
<published>2017-01-30T11:59:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17489&amp;p=181251#p181251</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17489&amp;p=181251#p181251"/>
<title type="html"><![CDATA[MAX5156 DAC Programowe SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17489&amp;p=181251#p181251"><![CDATA[
Witam, <br />Posiadam kilka układów DAC MAX5156 i chciałem zrobić z nich sterownik zasilacza.<br />Starałem się wykonać transmisję po SPI programowo. Na początku wykorzystywałem kod z Bluebooka, lecz potem doczytałem że transmisja musi iść w odwrotną stronę. Wszystkie połączenia na płytce sprawdziłem multimetrem wykluczając niepoprawne połączenia, proszę o pomoc co mogłem tu źle zrobić.<br /><br />Procesor ATMEGA8<br />Taktowanie wbudowane(pomimo że na schemacie jest wstawiony kwarc)<br /><br />[syntax=c]//----------BIBLIOTEKI<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &quot;HD44780.h&quot;<br /><br /><br />//-----------DEFINICJE<br />#define VREF 2.56<br />#define REF_256 (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0)<br />#define REF_VCC (1&lt;&lt;REFS0)<br /><br />//---------------DEFINICJE KLAWISZY<br />#define KEY1 PD5//KLAWISZ PLUS<br />#define KEY2 PD6//KLAWISZ MINUS<br />#define KEY3 PD7//KLAWISZ OK<br /><br />/* software SPI */<br />#define MOSI PC2 //   &lt;---- SERIAL IN<br />#define SCK PB1//   &lt;---- SHIFT CLOCK<br />#define CS PD0// &lt;---- CHIP SELECT<br />#define SCK_0 PORTB &amp;= ~(1&lt;&lt;SCK)<br />#define SCK_1 PORTB |= (1&lt;&lt;SCK)<br />#define MOSI_0 PORTC &amp;= ~(1&lt;&lt;MOSI)<br />#define MOSI_1 PORTC |= (1&lt;&lt;MOSI)<br />#define CS_1 PORTD |= (1&lt;&lt;CS)<br />#define CS_0 PORTD &amp;= ~(1&lt;&lt;CS)<br /><br />//-----------DEKLARACJE FUNKCJI<br />//int pobierzADC(char number);<br />void InitSoftSpi(void);/* inicjalizacja programowego SPI */<br />void SendSoftSpi( uint16_t bajt );/* wysłanie bajtu - programowe SPI */<br /><br />int main()<br />{<br />    char bufor&#91;&#93;=&quot;                &quot;;//bufor tekstowy, wyczyszczenie bufora<br /><br />    uint16_t bajt=0x3ffe;<br /><br /><br />   LCD_Initalize();      //inicjalizacja LCD<br />_delay_ms(500);<br /><br /><br />//--------------------SPI INICJALIZACJA<br /><br />InitSoftSpi();<br />SendSoftSpi( 0 );<br /><br />//--------------------POWITANIE<br />  LCD_GoTo(0, 0);<br />  LCD_WriteText(&quot;Sterownik&quot;);<br />  LCD_GoTo(0, 1);<br />  LCD_WriteText(&quot;Zasilacza&quot;);<br />  _delay_ms(1000);<br />  LCD_GoTo(0, 0);<br />  LCD_WriteText(bufor);<br />  LCD_GoTo(0, 1);<br />  LCD_WriteText(bufor);<br /><br />//---------------------WYSŁANIE DO SPI<br />  SendSoftSpi(0);<br /><br />  bajt=0b0010111111111111;<br />while(1)<br />{<br />bajt=0b0011000000000000;<br /><br />  LCD_GoTo(0, 0);<br />  LCD_WriteText(&quot;A Wysylam &gt;&gt;&gt;&quot;);<br />  _delay_ms(500);<br /><br />  SendSoftSpi(bajt);<br /><br />    LCD_GoTo(0, 0);<br />    LCD_WriteText(&quot;AWyslalem ---&quot;);<br />  _delay_ms(1000);<br /><br /><br />bajt=0b1011000000000000;<br /><br />  LCD_GoTo(0, 0);<br />  LCD_WriteText(&quot;B Wysylam &gt;&gt;&gt;&quot;);<br />  _delay_ms(500);<br /><br />  SendSoftSpi(bajt);<br /><br />    LCD_GoTo(0, 0);<br />    LCD_WriteText(&quot;BWyslalem ---&quot;);<br />  _delay_ms(1000);<br /><br /><br />bajt=0b0101000000000000;<br /><br />  LCD_GoTo(0, 0);<br />  LCD_WriteText(&quot;A Wysylam &gt;&gt;&gt;&quot;);<br />  _delay_ms(500);<br /><br />  SendSoftSpi(bajt);<br /><br />    LCD_GoTo(0, 0);<br />    LCD_WriteText(&quot;AWyslalem ---&quot;);<br />  _delay_ms(1000);<br /><br /><br />bajt=0b1101000000000000;<br /><br />  LCD_GoTo(0, 0);<br />  LCD_WriteText(&quot;B Wysylam &gt;&gt;&gt;&quot;);<br />  _delay_ms(500);<br /><br />  SendSoftSpi(bajt);<br /><br />    LCD_GoTo(0, 0);<br />    LCD_WriteText(&quot;BWyslalem ---&quot;);<br />  _delay_ms(1000);<br />}<br /><br />//-----------------------------------<br /><br /><br />}<br /><br /><br />void InitSoftSpi(void) {<br />/* ustawienie kierunku wyjściowego dla linii MOSI, SCK i CS */<br />DDRB |= (1&lt;&lt;SCK);<br />DDRC |= (1&lt;&lt;MOSI);<br />DDRD |= (1&lt;&lt;CS);<br />}<br /><br />/* definicja  funkcji wysyłającej bajt */<br />void SendSoftSpi( uint16_t bajt )<br />{<br />uint16_t cnt=0x1;<br />uint16_t n=0;<br /><br />CS_1;<br />CS_0;<br /><br />SCK_1;<br /><br />while( n&lt;16 )<br />{<br />if( bajt &amp; cnt )<br />{<br />MOSI_1;<br />}<br />else<br />{<br />MOSI_0;<br />}<br /><br />SCK_1;<br />SCK_0;<br /><br />cnt&lt;&lt;=1;<br />n++;<br />}<br />CS_1;<br />}[/syntax]<br /><br /><br />Datasheet:<br /><a href="https://datasheets.maximintegrated.com/en/ds/MAX5156-MAX5157.pdf"  class="postlink">https://datasheets.maximintegrated.com/en/ds/MAX5156-MAX5157.pdf</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11820">elektronik666</a> — 30 sty 2017, o 11:59</p><hr />
]]></content>
</entry>
</feed>