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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-29T16:52:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11532&amp;mode</id>
<entry>
<author><name><![CDATA[crasio]]></name></author>
<updated>2015-04-29T16:52:19+01:00</updated>
<published>2015-04-29T16:52:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127763#p127763</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127763#p127763"/>
<title type="html"><![CDATA[Re: 74HC595 + PWM- problem z mruganiem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127763#p127763"><![CDATA[
[syntax=c]#ifndef  _SoftSpi_h // zabezpieczenie przed wielokrotnym dołączeniem<br />#define _SoftSpi_h<br /><br />/* software SPI */<br /><br />#define SMOSI PB2 //   &lt;---- A (SER IN)<br />#define SSCK PB3//   &lt;---- SHIFT CLOCK (SC)<br />#define SCS PB1// &lt;---- LATCH CLOCK (LC)<br /><br />// ustawienia portów<br />#define SCK_0 PORTB &amp;= ~(1&lt;&lt;SSCK)<br />#define SCK_1 PORTB |= (1&lt;&lt;SSCK)<br />#define MOSI_0 PORTB &amp;= ~(1&lt;&lt;SMOSI)<br />#define MOSI_1 PORTB |= (1&lt;&lt;SMOSI)<br /><br /><br />// deklaracje funkcji<br /><br />void InitSoftSpi(void);/* inicjalizacja programowego SPI */<br />void SendSoftSpi( uint8_t bajt );/* wysłanie bajtu - programowe SPI */<br /><br />#endif[/syntax]<br /><br />[syntax=c]/*<br /> * SoftSpi.c<br /> *<br /> *  Created on: 19-01-2015<br /> *      Author: Maciej<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &quot;SoftSpi.h&quot;<br /><br /><br />void InitSoftSpi(void)<br />{<br />/* ustawienie kierunku wyjściowego dla linii MOSI, SCK i CS */<br />DDRB |= (1&lt;&lt;SMOSI)|(1&lt;&lt;SSCK)|(1&lt;&lt;SCS);<br />}<br /><br /><br />/* definicja  funkcji wysyłającej bajt */<br />void SendSoftSpi( uint8_t bajt )<br />{<br />uint8_t cnt=0x80;<br /><br />SCK_0;<br />/* wysyłamy bajt do układu Slave */<br />while( cnt ) {<br />if( bajt &amp; cnt ) MOSI_1;<br />else MOSI_0;<br />SCK_1;<br />SCK_0;<br />cnt&gt;&gt;=1;<br />}<br />/* czekamy aż zostanie wysłany ostatni bit */<br /><br />/* zbocze narastające sygnału „Latch Clock” powoduje<br /> * przepisanie wartości rejestru do wyjść Qa - Qh */<br />PORTB |= (1&lt;&lt;SCS);<br /><br />/* przywracamy stan niski na linii LE dzięki czemu<br /> * podczas wysyłania następnego bajtu nie będą widoczne zmiany<br /> * na wyjściach Qa-Qh podczas przesuwania się rejestru do czasu<br /> * ponownego zatrzaśnięcia całego bajtu */<br />PORTB &amp;= ~(1&lt;&lt;SCS);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4387">crasio</a> — 29 kwi 2015, o 16:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-29T16:50:47+01:00</updated>
<published>2015-04-29T16:50:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127762#p127762</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127762#p127762"/>
<title type="html"><![CDATA[Re: 74HC595 + PWM- problem z mruganiem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127762#p127762"><![CDATA[
pokaż no swoją funkcję<br /><br />SendSoftSpi()<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 kwi 2015, o 16:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[crasio]]></name></author>
<updated>2015-04-29T16:48:29+01:00</updated>
<published>2015-04-29T16:48:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127761#p127761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127761#p127761"/>
<title type="html"><![CDATA[74HC595 + PWM- problem z mruganiem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11532&amp;p=127761#p127761"><![CDATA[
Witam. Zmagam się z pewnym problemem dotyczącym generowania pwm na 74hc595. Chcę wykonać sterownik kilku taśm ledowych typu rgb. Do tego chciałem użyć 74hc595, ponieważ chciałbym w przyszłości dorzucić kilka innych &quot;bajerów&quot; . Rejestr sterowany jest przez programowe spi (funkcje z bluebook'a). Póki co testuję program na atmedze16 (taktowanie 12MHz). Problem polega na tym, że gdy generuję pwm i np. podłączę taśmę do pinu nr.1 portu D to wszystko działa jak trzeba. Natomiast gdy taśma jest podłączona przez tranzystor do wyjścia 74hc595 to przy małym wypełnieniu ( od 0 do 10) widać jak diody mrugają. Niestety nie wiem czemu się tak dzieje ( na zwykłej diodzie led tego nie widać) i tu zwracam się do was o pomoc.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 26-04-2015<br /> *      Author: Maciej<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;SPI/SoftSpi.h&quot;<br /><br /><br /><br />volatile uint8_t Timer1, Timer2;<br /><br />volatile uint8_t channel1, dane;<br /><br /><br />#define LED1_PORT PORTD<br />#define LED1_PIN (1&lt;&lt;PD0)<br />#define LED1_ON (LED1_PORT |= LED1_PIN)<br />#define LED1_OFF (LED1_PORT &amp;= ~LED1_PIN)<br />#define LED1_TOG (LED1_PORT ^= LED1_PIN)<br /><br />#define LED2_PORT PORTD<br />#define LED2_PIN (1&lt;&lt;PD1)<br />#define LED2_ON (LED2_PORT |= LED2_PIN)<br />#define LED2_OFF (LED2_PORT &amp;= ~LED2_PIN)<br />#define LED2_TOG (LED2_PORT ^= LED2_PIN)<br /><br /><br />#define BZR (0x01) // buzzer<br />#define LCDL (0x02) // podswietlenie lcd<br />#define RGBR (0x04) // dioda rgb czerwony<br />#define RGBG (0x08) // zielony<br />#define RGBB (0x10) // niebieski<br />#define CLED (0x20) // dodatkowa dioda<br />#define IPIN1 (0x40) // wolny pin1<br />#define IPIN2 (0x80) // wolny pin2<br /><br /><br /><br />int main(void)<br />{<br /><br />InitSoftSpi(); /* inicjalizacja programowego SPI */<br /><br />SendSoftSpi(0); // programowy reset rejestru<br /><br />DDRD |= LED1_PIN | LED2_PIN; // ustawienie kierunku na wyjscie dla diody 1 i 2<br /><br /> // ustawienie timera0<br /><br /> TCCR0 |= (1&lt;&lt;WGM01); // tryb CTC<br /> TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); // ustawienie preskalera na 1024<br /> OCR0 = 116; // podział przez 117<br /> TIMSK |= (1&lt;&lt;OCIE0); // uruchomienie przerwania od timera 0<br /><br /><br /> // ustawienia dla timer2<br /><br /> TCCR2 |= (1&lt;&lt;WGM21); //tryb ctc<br /> TCCR2 |= (1&lt;&lt;CS20); // preskaler ustawiony na 1<br /> OCR2 = 100; // dodatkowy podział<br />     TIMSK |= (1&lt;&lt;OCIE2); //Uruchomienie przerwań Compare Match<br /><br /><br />sei(); // zezwolenie na globalne przerwania<br /><br />while(1)<br />{<br /><br /><br />SendSoftSpi(dane); // wysyłanie danych do rejestru 74hc595<br /><br /><br />if(!Timer1)<br />{<br /><br />Timer1 = 50;<br />LED2_TOG; // miganie diodą co 500 ms<br /><br />}<br /><br />if(!Timer2)<br />{<br /><br />Timer2 = 1;<br />//channel1 = 0; // wypełnienie pwm / mruga<br />channel1 = 10; // wypełnienie pwm   / nie mruga<br /><br />}<br /><br /><br />}<br />}<br /><br />ISR(TIMER0_COMP_vect)<br />{<br />/* Timer programowy<br /> * 8bit<br /> */<br /><br /> uint8_t x;<br /> x= Timer1;<br /> if(x) Timer1 = --x;<br /><br /> x= Timer2;<br /> if(x) Timer2 = --x;<br /><br />}<br /><br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t cnt;<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if( cnt &lt;= channel1) LED1_ON , dane |= IPIN1;<br />else LED1_OFF, dane &amp;= ~IPIN1;<br /><br />cnt ++; // zwiększanie licznika o 1<br />}[/syntax]<br /><br />Na początku myślałem, że to wina zbyt małej częstotliwości ale moja wynosi ok. 468 Hz. Dodatkowo nasuwa mi się pytanie. Dlaczego gdy do OCR2 wpiszę wartość mniejszą niż 70 to układ po zaprogramowaniu zawiesza się ( dioda kontrolna z timera1 nie świeci). Czy to wina zbyt wysokiej częstotliwości ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4387">crasio</a> — 29 kwi 2015, o 16:48</p><hr />
]]></content>
</entry>
</feed>