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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-07-08T20:22:22+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1239&amp;mode</id>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-08T20:22:22+01:00</updated>
<published>2012-07-08T20:22:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9361#p9361</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9361#p9361"/>
<title type="html"><![CDATA[Re: Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9361#p9361"><![CDATA[
SunRiver jak zwykle wymiata:)<br />Co do przerwań chłopaki to jeszcze przede mną. Na razie to jeszcze troszkę magiczne dla mnie. ale wszystko po kolei.<br /><br />Pozdrawiam<br />Arek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 8 lip 2012, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-07T12:04:55+01:00</updated>
<published>2012-07-07T12:04:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9235#p9235</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9235#p9235"/>
<title type="html"><![CDATA[Re: Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9235#p9235"><![CDATA[
hmmm... ostatnio robiłem taką zabawkę tyle że na MSP430 bo chodziło o coś prostego celem sprawdzenia komunikacji UART z LCD i przycisków <br />...<br /><br />[syntax=c]<br /><br />#include &quot;msp430g2231.h&quot;<br /><br />// Piny użyte w programie<br />#define     TXD                   BIT1     // TXD -- P1.1<br />#define     BUTTON                BIT3     // Przycisk -- P1.3<br /><br />//   Transmisja RS 9600bps, SMCLK = 1MHz<br />#define     Bitime                13       // 1,000,000 / 8 / 9600 = ~13<br /><br />// Zmienne do transmisji danych<br />unsigned char BitCnt;<br />unsigned int  TXByte;<br /><br />// Ile razy nacisnieto przycisk S2<br />unsigned int  buttonPresses = 0;<br /><br />// Funkcje<br />void TXString(char *string);<br />void ConfigureTimerUart(void);<br />void Transmit();<br />void brag(void);<br />void itoa(unsigned int val, char *str, unsigned int limit);<br /><br />void main( void )<br />{<br />  // Zatrzymanie Wathdoga<br />  WDTCTL = WDTPW + WDTHOLD;<br /><br />  // Ustawienie zegara na  1MHz, SMCLK na 125kHz<br />  BCSCTL1 = CALBC1_1MHZ;<br />  DCOCTL = CALDCO_1MHZ;<br />  BCSCTL2 &amp;= ~(DIVS_3);         //SMCLK = DCO/8<br /><br />  // Ustawienie Timera dla UART-a<br />  ConfigureTimerUart();<br /><br />  // Ustawienie przycisku S2 (P1.3)<br />  P1DIR &amp;= ~BUTTON;<br />  P1OUT |= BUTTON;<br />  P1REN |= BUTTON;<br />  P1IES |= BUTTON;<br />  P1IFG &amp;= ~BUTTON;<br />  P1IE |= BUTTON;<br /><br />  // Zaświecimy diodki<br />  P1DIR |= (BIT0|BIT6);<br />  P1OUT |= BIT0;<br />  P1OUT &amp;= ~BIT6;<br /><br />  // oczekiwanie na gotowośc LCD<br />  __delay_cycles(1000000);<br /><br />  __enable_interrupt();<br /><br />  // Ustawienie jasności podświetlenia<br />  //TXByte = 0x7c; Transmit();<br />  //TXByte = 157; Transmit();<br /><br />  brag();<br /><br />  while(1)<br />  {<br />    brag();<br />    __bis_SR_register(LPM4_bits + GIE);<br />  }<br />}<br /><br />void itoa(unsigned int val, char *str, unsigned int limit)<br />{<br />  int temploc = 0;<br />  int digit = 0;<br />  int strloc = 0;<br />  char tempstr[5]; //wysyłka 16 bitowego kodu ASCII<br /><br />  if(val&gt;limit)<br />    val %= limit;<br /><br />  do<br />  {<br />    digit = val % 10;<br />    tempstr[temploc++] = digit + '0';<br />    val /= 10;<br />  } while (val &gt; 0);<br /><br />  // zmiana liczb na znaki<br />  while(temploc&gt;0)<br />    str[strloc++] = tempstr[--temploc];<br /><br />  str[strloc]=0;<br />}<br /><br />// Wyswietlanie na LCD<br />void brag(void)<br />{<br />  // Czyszczenie LCD<br />  TXByte = 0xFE; Transmit();<br />  TXByte = 0x01; Transmit();<br /><br />  TXString(&quot;Wcisnieto  S2   :&quot;);<br />  char times[4];<br />  itoa(buttonPresses, times, 999);<br />  TXString(times);<br />  if(buttonPresses!=1)<br />    TXString(&quot; razy&quot;);<br />  else<br />    TXString(&quot; raz&quot;);<br />}<br /><br />// Wysyłamy znaki na UART<br />void TXString(char *string)<br />{<br />  while(*string != 0)<br />  {<br />    TXByte = *string; Transmit();<br />    string++;<br />  }<br />}<br /><br />//ustawienia UARTU -- MSP430 LaunchPad sample code.<br />void ConfigureTimerUart(void)<br />{<br />  TACCTL0 = OUT;                             // TXD Idle as Mark<br />  TACTL = TASSEL_2 + MC_2 + ID_3;            // SMCLK/8, continuous mode<br />  P1SEL |= TXD;                              //<br />  P1DIR |= TXD;                              //<br />}<br /><br />// Funkcja transmisji <br />// Copied from MSP430 LaunchPad sample code<br />void Transmit()<br />{<br />  BitCnt = 0xA;                             // Load Bit counter, 8data + ST/SP<br />  while (TACCR0 != TAR)                       // Prevent async capture<br />    TACCR0 = TAR;                             // Current state of TA counter<br />  TACCR0 += Bitime;                     // Some time till first bit<br />  TXByte |= 0x100;                        // Add mark stop bit to TXByte<br />  TXByte = TXByte &lt;&lt; 1;                 // Add space start bit<br />  TACCTL0 =  CCIS0 + OUTMOD0 + CCIE;          // TXD = mark = idle<br />  while ( TACCTL0 &amp; CCIE );                   // Wait for TX completion<br />}<br /><br />// Timer ustawienia <br />// MSP430 LaunchPad sample code<br />#pragma vector=TIMERA0_VECTOR<br />__interrupt void Timer_A (void)<br />{<br />  TACCR0 += Bitime;                           // Add Offset to CCR0<br />  if (TACCTL0 &amp; CCIS0)                        // TX on CCI0B?<br />  {<br />    if ( BitCnt == 0)<br />      TACCTL0 &amp;= ~ CCIE;                     // All bits TXed, disable interrupt<br />    else<br />    {<br />      TACCTL0 |=  OUTMOD2;                    // TX Space<br />      if (TXByte &amp; 0x01)<br />      TACCTL0 &amp;= ~ OUTMOD2;                   // TX Mark<br />      TXByte = TXByte &gt;&gt; 1;<br />      BitCnt --;<br />    }<br />  }<br />}<br /><br />// Sprawdzenie nacisniecia przycisku - dodanie do licznika<br />// oraz zmiana stanu diodek LED<br />#pragma vector=PORT1_VECTOR<br />__interrupt void PORT1_ISR(void)<br />{<br />  buttonPresses++;<br />  P1OUT ^= BIT0;<br />  P1OUT ^= BIT6;<br />  P1IFG = 0; // czyszczenie przerwań<br />  __bic_SR_register_on_exit(LPM4_bits);<br />}<br /><br />[/syntax]<br /><br /><a href="http://img815.imageshack.us/i/s6300943.jpg/"  class="postlink"><img src="http://img815.imageshack.us/img815/2984/s6300943.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 7 lip 2012, o 12:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2012-07-05T09:50:43+01:00</updated>
<published>2012-07-05T09:50:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9112#p9112</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9112#p9112"/>
<title type="html"><![CDATA[Re: Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9112#p9112"><![CDATA[
Na pewno, lepiej by było aby licznik był inkrementowany w przerwaniu, które jest wywoływane zboczem narastającym lub opadającym <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Mi chodziło o to, aby licznik był wyzwalany zboczem a nie stanem. Ponieważ jeżeli byłby wyzwalany stanem, to tak jak pisałem przy dłuższym naciśnięciu cały czas by zliczał.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 5 lip 2012, o 09:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-07-05T08:21:12+01:00</updated>
<published>2012-07-05T08:21:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9110#p9110</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9110#p9110"/>
<title type="html"><![CDATA[Re: Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9110#p9110"><![CDATA[
A nie lepiej do tego celu użyć przerwania INT, i aktywować je np. narastającym/opadającym zboczem?<br />Zero bawienia się w jakieś zmienne pomocnicze..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 5 lip 2012, o 08:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2012-07-04T22:56:10+01:00</updated>
<published>2012-07-04T22:56:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9105#p9105</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9105#p9105"/>
<title type="html"><![CDATA[Re: Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9105#p9105"><![CDATA[
arko_go, trochę nie do końca będzie dobrze Twój programik dobrze działał. Ponieważ gdy klawisz będzie dłużej trzymany to licznik zacznie naliczać. <br /><br />Jeżeli przytrzmasz klawisz dłużej niż 160 ms  (mnij niż 240ms)to licznik takie naciśnięcie zliczy jako dwa naciśnięcia. Jeżeli przytrzymasz klawisz dłużej wciśnięty niż 240 ms (mnij niż 340ms) to licznik zliczy 3 impulsy itd.<br /><br />Aby licznik reagował na naciśnięcie przycisku to musisz zliczać zbocza narastające lub opadające. Aby zliczać takie zbocza musisz wprowadzić dodatkową zmienną pomocniczą która będzie pamiętała stan poprzedni przycisku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 4 lip 2012, o 22:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-04T19:30:54+01:00</updated>
<published>2012-07-04T19:30:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9096#p9096</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9096#p9096"/>
<title type="html"><![CDATA[Re: Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9096#p9096"><![CDATA[
Dokładnie tak było:)<br />Dzięki za odp. Teraz spróbuje wartość &quot;cnt&quot; wysłać przez RS232 na konsole:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 4 lip 2012, o 19:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sz4t4n]]></name></author>
<updated>2012-07-04T19:21:52+01:00</updated>
<published>2012-07-04T19:21:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9093#p9093</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9093#p9093"/>
<title type="html"><![CDATA[Re: Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9093#p9093"><![CDATA[
Witaj, <br /><br />wydaje mi się, że masz literówkę w #define KEY_PIN (1&lt;&lt;PD7). Wg całego programu wynika, że powinno być (1&lt;&lt;PB7) ale ciężko powiedzieć nie widząc jak masz podłączone przyciski.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=377">sz4t4n</a> — 4 lip 2012, o 19:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-04T19:03:14+01:00</updated>
<published>2012-07-04T19:03:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9088#p9088</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9088#p9088"/>
<title type="html"><![CDATA[Licznik zliczający ilość naciśnięć]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1239&amp;p=9088#p9088"><![CDATA[
Witam!<br />Jak w temacie. Próbuje zrobić licznik zliczający ilość naciśnięć przycisku. Licznik działa tylko zlicza sam  <br />bez ingerencji (tzn. nie reaguje na wciśnięcia tylko zlicza sam sobie).<br />Proszę o wskazówki co robię źle.<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2012-07-04<br /> *      Author: Arko<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#define LED_PIN (1&lt;&lt;PC7)<br />#define LED_ON PORTC &amp;= ~(1&lt;&lt;PC7)<br />#define LED_OFF PORTC |= (1&lt;&lt;PC7)<br />#define KEY_PIN (1&lt;&lt;PD7)<br />#define KEY_DOWN !(PIND &amp; KEY_PIN)<br /><br />uint8_t klawisz_wcisniety(void);<br />uint16_t mignij_led(void);<br /><br />int cnt=0;<br />int main(void)<br />{<br />DDRA |= (1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7); /* podświetlenie wyświetlacza LCD */<br />DDRC |= LED_PIN;  // kierunek pinu PC7 wyjściowy<br />PORTC |= LED_PIN; //wyłączenie diody<br />DDRB &amp;= ~ KEY_PIN;/*   // kierunek pinu PB2 wejściowy    */<br /> PORTD  |= KEY_PIN;  // podciągnięciue pinu PB2 do VCC<br /><br /> lcd_init();/* inicjalizacja LCD */<br />while(1)<br />{<br />if(klawisz_wcisniety())<br />{<br />mignij_led();<br />}<br />lcd_locate(1,0);<br />lcd_int(cnt);<br />}<br />}<br />uint8_t klawisz_wcisniety(void)<br />{<br />if(KEY_DOWN)<br />{<br />_delay_ms(80);<br /><br />if(KEY_DOWN) //return cnt;<br />cnt++;<br /><br />}<br />return 0;<br />}<br />uint16_t mignij_led(void)<br />{<br />static uint16_t licznik;  //definicja zmiennej statycznej<br /><br />LED_ON;<br />_delay_ms(20);<br />LED_OFF;<br />_delay_ms(20);<br /><br />cnt = licznik++;<br /><br />return cnt;<br />}<br />[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 9 minutach ]</span></strong><br /><br />Znalazłem błędy i jednak działa:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 4 lip 2012, o 19:03</p><hr />
]]></content>
</entry>
</feed>