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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-08-06T21:32:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1373&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-06T21:32:38+01:00</updated>
<published>2012-08-06T21:32:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11976#p11976</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11976#p11976"/>
<title type="html"><![CDATA[Re: Sterownik oświetlenia kabiny samochodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11976#p11976"><![CDATA[
<div class="quotetitle">...kuba... napisał(a):</div><div class="quotecontent"><br />Też byłem bardziej za hardware-owym PWM... A jak można zrealizować odliczanie czasu i równoczesne sprawdzanie czy dany warunek nie jest spełniony? Za pomocą przerwań zewnętrznych, czy tak jak ja to zrobilem w pętli while(), umieścić warunek i _delay_ms(...), tylko, że przy takim rozwiązaniu czasem występowało opóźnienie reakcji na spełniony warunek, jak program byl w miejscu odliczania delay;/ chyba, że w praktyce ta 1s opóźnienia nie będzie zauważalna??<br /></div><br /><br />No właśnie - książka prowadzi jak po sznurku do tego żeby zrezygnować z delayów bo sam widzisz co się dzieje. Tak więc nie warto poczytać ją dalej bo dokładnie jest o tym mowa - szczególnie w rozdziale<br /><br />&quot;Wstęp do systemów czasu rzeczywistego&quot;<br /><br />ale jeśli nie czytałeś poprzednich rozdziałów jeszcze to nie skacz do niego od razu bo się być może załamiesz - trzeba po kolei czytać i robić ćwiczenia ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sie 2012, o 21:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[...kuba...]]></name></author>
<updated>2012-08-06T21:15:58+01:00</updated>
<published>2012-08-06T21:15:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11974#p11974</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11974#p11974"/>
<title type="html"><![CDATA[Re: Sterownik oświetlenia kabiny samochodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11974#p11974"><![CDATA[
Też byłem bardziej za hardware-owym PWM... A jak można zrealizować odliczanie czasu i równoczesne sprawdzanie czy dany warunek nie jest spełniony? Za pomocą przerwań zewnętrznych, czy tak jak ja to zrobilem w pętli while(), umieścić warunek i _delay_ms(...), tylko, że przy takim rozwiązaniu czasem występowało opóźnienie reakcji na spełniony warunek, jak program byl w miejscu odliczania delay;/ chyba, że w praktyce ta 1s opóźnienia nie będzie zauważalna??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=408">...kuba...</a> — 6 sie 2012, o 21:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2012-08-06T15:31:38+01:00</updated>
<published>2012-08-06T15:31:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11941#p11941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11941#p11941"/>
<title type="html"><![CDATA[Re: Sterownik oświetlenia kabiny samochodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11941#p11941"><![CDATA[
Na tą chwilę nie mam za bardzo czasu, żeby analizować cały kod, ale odnośnie PWM, to chyba łatwiej hardware-owy no nie? tylko wpisujesz sobie wartość która zmienia się pod wpływem innego timera przy ściemnianiu / rozjaśnianiu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 6 sie 2012, o 15:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[...kuba...]]></name></author>
<updated>2012-08-05T10:21:53+01:00</updated>
<published>2012-08-05T10:21:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11821#p11821</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11821#p11821"/>
<title type="html"><![CDATA[Sterownik oświetlenia kabiny samochodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1373&amp;p=11821#p11821"><![CDATA[
Witam, już jakiś czas męczę się nad zrobieniem sterownika do oświetlenia kabiny samochodowej, jednak jak dotąd nic z tego nie wyszło;/ Dla ułatwienia ułożyłem sobie taki algorytm:  <br /><a href="http://www.fotosik.pl/showFullSize.php?id=df9466cc167254c0"  class="postlink"><img src="http://images37.fotosik.pl/1709/df9466cc167254c0m.jpg" alt="Obrazek" /></a><br />i postanowiłem wykorzystać do tego funkcję switch/case i otrzymałem coś takiego:<br /><br />[syntax=c]<br />// dolaczenie potrzebnych plikow naglowkowych<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />// definicja dla praprocesora<br />#define DOOR_PINC_PIN (1&lt;&lt;PC4)// definicja pinu do ktorego podlaczona jest krancowka (0)<br />#define DOOR_OPEN_PIN (1&lt;&lt;PC2)// definicja pinu do ktorego podlaczony jest sygnał &quot;otwórz&quot; (0)<br />#define DOOR_CLOSE_PIN (1&lt;&lt;PC3)// definicja pinu do ktorego podlaczony jest sygnał &quot;zamknij&quot; (0)<br />#define KEY_PIN (1&lt;&lt;PC0)// definicja pinu do ktorego podlaczony jest sygnał &quot;ACC&quot; ze stacyjki (1)<br />#define LIGHT_INSIDE_PIN (1&lt;&lt;PD0)// -||- podłączane jest oswietlenie wewnetrzne samochodu (0)<br />#define LIGHT_INSIDE_ON PORTD&amp;=~LIGHT_INSIDE_PIN// włącz oswietlenie<br />#define LIGHT_INSIDE_OFF PORTD|=LIGHT_INSIDE_PIN// wyłącz oświetlenie<br /><br /><br />/* deklaracja funkcji<br />uint8_t stacyjka_wlaczona(uint8_t stacyjka);// sprawdza czy na wejsciu ze stacyjki jest stan wysoki<br />uint8_t drzwi_stan(uint8_t wejscie);// sprawda czy na wejsciu jest stan niski. jesli tak to prawda<br />*/<br /><br /><br />int main(void)<br />{<br />DDRD |= LIGHT_INSIDE_PIN;       // kierunek pinu PD0 - wyjscie<br />PORTD |= LIGHT_INSIDE_PIN;// wylaczeni oswietlenia wewnatrz samochodu<br /><br />DDRC &amp;=~( DOOR_PINC_PIN | DOOR_OPEN_PIN | DOOR_CLOSE_PIN | KEY_PIN );// kierunek pinów PC - wejscia (0)<br />PORTC |= DOOR_PINC_PIN | DOOR_OPEN_PIN | DOOR_CLOSE_PIN;// podlaczenie poinow do VCC<br />PORTC |=KEY_PIN;<br /><br />uint8_t k;<br /><br />while(1)<br />{<br />k=0;<br />switch( ~PINC &amp; ( (DOOR_PINC_PIN ) | (KEY_PIN) ) )// sprawdzenie stanów wejść<br />{<br />case ( KEY_PIN | DOOR_PINC_PIN):// jesli stacyjka wlaczona i drzwi otwarte to zaswiec swiatło<br />LIGHT_INSIDE_ON;<br />break;<br /><br />case (KEY_PIN | (DOOR_PINC_PIN^DOOR_PINC_PIN) ):// jesli stacyjka wlaczona i drzwi sie zamknely to zgas światlo<br />LIGHT_INSIDE_OFF;<br />break;<br />case (DOOR_PINC_PIN):// jesli drzwi otwarte to zaswiec swiatlo na 15s<br />LIGHT_INSIDE_ON;<br />while(k&lt;15)// podtrzymanie oswietlenia przez ok. 15s  po zamknieciu drzwi<br />{<br />_delay_ms(1000);<br />if ( ! (PINC &amp; KEY_PIN) )// jesli w ciagu tych 15s zostanie wlaczona stacyjka to zgas swiatło<br />k=15;<br />if ( ! ( PINC &amp; DOOR_PINC_PIN ) )// warunek zapewniajacy ze czas 15s bedzie staly, nie zaleznie od dlugosci otwarcia drzwi<br />k=0;<br />else<br />k++;<br /><br />}<br />LIGHT_INSIDE_OFF;// wygaszenie oswietlenia<br />break;<br />}<br /><br />} [/syntax]<br />Jednak nie działa to do końca tak jak oczekiwałem;/ Mógłby mi ktoś podpowiedzieć jak mozna to zrobić? i czy do rozjaśniania i ściemniana światła wykorzystać wykorzystać PWM hardware-owy czy programow?<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=408">...kuba...</a> — 5 sie 2012, o 10:21</p><hr />
]]></content>
</entry>
</feed>