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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-26T01:27:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20487&amp;mode</id>
<entry>
<author><name><![CDATA[G_Hades]]></name></author>
<updated>2018-03-26T01:27:33+01:00</updated>
<published>2018-03-26T01:27:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206058#p206058</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206058#p206058"/>
<title type="html"><![CDATA[Re: Wersja start z opisem AVR, bibliotek i typow zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206058#p206058"><![CDATA[
Wiem wiem Panie Mirku mam MkClipse na laptopie i korzystam czasami ale ogólnie używam Eclipse Mars może kiedyś wie pan jak to jest jak ktoś w wieku 40 lat zaczyna hobbistycznie uczyć się programować to nie za bardzo lubi zmiany a co do mojego postu który wstawiłem myśle że przyda się dla osób takich jak ja czyli całkiem poczatkujacych którzy już coś tam mniej wiecej wiedzą a nie są do końca pewni jakiś podstaw co ile ma i do czego służy zamiast tracić mnóstwo czasu przekopując ksiażki lub internet żeby sprawdzić np: co to jest short int lub double ile ma zakrersu i do czego służy no i oczywiscie załączane biblioteki tak naprawdę nikt nie opisuje do czego one służą i jakie mają zastosowanie a tak np:żeby sprawdzic pod którym pinem jest INT2 lub ile bajtów/bitów ma np:char wiec tak na szybko żeby sprawdzić otwieram main.h i nie ma ciula żeby moje oko wizualnie nie przeanalizowała cały plik i po kilkunastu takich otwarciach chcac nie chcąc znamy podstawy. Według mnie dla poczatkującego myśle że to jest dobre podejście aby mieć takie podstawy w zasiągu ręki a zbiegiem czasu oraz z wiekszym zrozumieniem podstaw programowania i nabywajaca wiedzą po prostu pozbywać sie tych złych nawyków a przynajmniej ja tak planuje wszystko ma być ładnie po segregowane w folderach działajace nie blokujaco na przeróżnych timer_ach i nie tylko , zdarzeniach, wskaznikach wywoływać za pomocą callback_ów a to wszystko pokitrane po róznych strukturach pod ochroną UNI a raczej przykrywką i nie mylić z EU nie daliby rady tego ogarnąć hihhi Itd: A tak przy okazji chciałbym wspomnieć wątek z około przed roku w którym wieksząść nabijała się ze mnie że sie jara wynalezieniem koła od nowa i do tego jeszcze kwadratowego z wyjątkiem ,,adamBo'' nasz kolega z forum o chodzi o topic <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic19815.html" >topic19815.html</a><!-- l --> ogólnie panie Mirek poradniki widziałem biblioteki mam ale niech mi pan wierzy że ich jeszcze nie rozpakowałem a minął ponad rok ja rozumie że bisnes to bisnes ale nie wszystko naraz. Od tamtej pory nie wiem co to delay i w sumie mógłbym tutaj teraz wstawić versie nr.2 taki mały mój wzorek biorę z niego co akurat potrzebuje.<br />kurde sorry jesli sie za bardzo rozpisalem ale jestem samouk jak sie to mówi i jak zaczne nie wiem kiedy skonczyć. Hihihihi<br />Ogólnie nie chwaląc się jakieś podstawy znam mniej wiecej wiem jak pracują różne silniki AVR czyli timers w chwili obecnej pracuje nad karoserją czyli LCD a dokladniej nad wyswietlaczami TFT z touch screen głównie na bazie sterowników SSD1963 i SSD1289 ja wiem ze jest wszystko w Greenbook ale rzadna frajda copy and past jak nie wiem o co chodzi więc wolę zrobić wszystko od podstaw sam chociaż i tak wiekszosci funkcji bedzie z pana ksiązki ale tu sie rzadko coś zmienia poza nazwami. Hihihhi a tak przy okazji ogarnołem DHTxx dzisiaj więc jak by ktoś potrzebował mogę podesłać aktualnie jeszcze wszystko działa na delays i lcd hd4480 oraz usart ale bedzie update. Hihihihih<br /><br /><br />TIMERS<br />library.h<br />[syntax=c]#ifndef LIBRARY_H_<br />#define LIBRARY_H_<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/sfr_defs.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;util/atomic.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br /><br />#endif /* LIBRARY_H_ */[/syntax]<br />i to jest to do czego zmierzam a mianowicie w petli głównej nieskończonej ma być jak najmniej<br />main.c<br />[syntax=c]#include &quot;library.h&quot;<br />#include &quot;defpins.h&quot;<br /><br /><br /><br />//________________PETLA GLOWNA________________//<br />int main() {<br /><br />timer_init();<br />rejestr_init();<br /><br />    sei();<br />//________________PETLA NIESKONCZONA__________//<br />while(1) {<br /><br />//******************* TIMERS PROGRAMOWE************************** *****//<br /><br />     if(lms10 != ms10_cnt ) // CO 10MS<br />     {<br />              LED1_TOG;<br />        if( !( ms10_cnt %5) )<br />        LED2_TOG;<br /><br />      lms10 = ms10_cnt;<br />   }<br />      if( ls1 != s1_cnt ) // CO 1 Sekunda<br />      {<br />                 LED3_TOG;<br /><br />        if( !(s1_cnt % 2) )<br />        LED4_TOG;<br /><br />        ls1 =s1_cnt;<br />     }<br /> //********************TIMERY SEKWENCYJNE****************************//<br />  if(    0 == (mstick % 6000) )  LED5_TOG;<br />  if( 1000 == (mstick % 6000) )  LED6_TOG;<br /><br />//****************TIMERY OPERACYJNE****************//<br />if ( !Timer1 )<br />   {<br />  LED7_TOG;<br />  Timer1 = 40;<br />}<br />    if ( !Timer2 )<br />    {<br />    LED_TIMER() ;  // WYWOLANIE Z FUNKCJI VOID<br />     Timer2 = 1000;<br />       }<br />   mDelay(1);<br />  }<br />}[/syntax]<br />defpins.c<br />[syntax=c]#include &quot;library.h&quot;<br />#include &quot;defpins.h&quot;<br /><br /><br />typedef uint8_t u08;<br />typedef uint16_t u16;<br /><br /><br />//***************** PROGRAMOWE******************//<br />volatile u08 ms10_cnt;<br />volatile u08 s1_cnt;<br />uint8_t lms10=255,  ls1=255;<br /><br />volatile u16 mstick;  // SEKWENCYJNE<br />volatile u16 Timer1, Timer2; //OPERACYJNE<br />uint16_t n;<br /><br /><br /><br />void rejestr_init(void) {<br />   DDRC  |= 0xFF;<br />   PORTC |= 0XFF;<br />}<br />void LED_TIMER(void) {<br />//LED_TOG ;<br />PORTC ^= (1&lt;&lt;PC7);<br /><br />}<br /><br />//************ TIMERS PROGRAMOWE****************************//<br />void timer_init(void) {<br /> TCCR0 |= (1&lt;&lt;WGM01);            // tryb CTC<br /> TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);    // preskaler = 1024<br /> OCR0 = (F_CPU/1024UL)/100UL;    // 100ms - 100Hz<br /> TIMSK |= (1&lt;&lt;OCIE0);            // przerwanie Compare Match<br />}<br /><br /><br />   //***procedura obslugi przerwania<br /> ISR ( TIMER0_COMP_vect )   {<br /> if(++ms10_cnt&gt;99) {<br /> ms10_cnt=0;<br /> if(++s1_cnt&gt;59) s1_cnt=0;<br />    }<br />}<br />void mDelay( u16 ms )<br /> {<br /><br /> while( ms-- )<br /> {<br />   _delay_ms(1);<br />       mstick++;<br /> if(mstick &gt; 5999) mstick=0;<br /> n = Timer1;<br />         if(n) Timer1 = --n;<br />         n = Timer2;<br />          if(n) Timer2 = --n;<br /> }<br /><br /> }[/syntax]<br />defpins.h<br />[syntax=c]#ifndef DEF_PINS_H_<br />#define DEF_PINS_H_<br /><br /><br />#define LED1_TOG   PORTC ^= (1&lt;&lt;PC0)<br />#define LED2_TOG   PORTC ^= (1&lt;&lt;PC1)<br />#define LED3_TOG   PORTC ^= (1&lt;&lt;PC2)<br />#define LED4_TOG   PORTC ^= (1&lt;&lt;PC3)<br />#define LED5_TOG   PORTC ^= (1&lt;&lt;PC4)<br />#define LED6_TOG   PORTC ^= (1&lt;&lt;PC5)<br />#define LED7_TOG   PORTC ^= (1&lt;&lt;PC6)<br /><br /><br />typedef uint8_t u08;<br />typedef uint16_t u16;<br /><br />//****************** TIMERS PROGRAMOWE ************//<br />volatile u08 ms10_cnt;<br />volatile u08 s1_cnt;<br />extern u08 lms10,  ls1;<br /><br />volatile u16 mstick;  // SEKWENCYJNE<br />volatile u16 Timer1 , Timer2; //OPERACYJNE<br />uint16_t n;<br /><br />void timer_init(void);<br />void LED_TIMER(void);<br />void rejestr_init(void);<br />void mDelay( u16 ms );<br /><br />#endif /* DEF_PINS_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16217">G_Hades</a> — 26 mar 2018, o 01:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-25T20:46:41+01:00</updated>
<published>2018-03-25T20:46:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206049#p206049</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206049#p206049"/>
<title type="html"><![CDATA[Re: Wersja start z opisem AVR, bibliotek i typow zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206049#p206049"><![CDATA[
<div class="quotetitle">G_Hades napisał(a):</div><div class="quotecontent"><br />typedef uint8_t   u08;<br />typedef int8_t    i08;<br /> <br />typedef uint16_t  u16;<br />typedef int16_t   i16;<br /> <br />typedef uint32_t  u32;<br />typedef int32_t   i32;<br /></div><br />powiem ci tak - nie idź tą drogą <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo później będziesz pluł sobie w brodę <br /><br />Opisy bibliotek w komentarzach - bardzo fajne !<br /><br />a odnośnie podstawowego szkieletu programu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to zobacz co robi JEDEN przycisk w MkClipse <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><img src="https://obrazkiforum.atnel.pl/54/5ba3479ebb691a9b9683a5eeccb0ef27.png" alt="Obrazek" /><br /><br /><img src="https://obrazkiforum.atnel.pl/54/a528656a4c2e9a38ffb613dada2cee73.png" alt="Obrazek" /><br /><br /><img src="https://obrazkiforum.atnel.pl/54/2e067e6b3a455d850938c273a95c2a0c.png" alt="Obrazek" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 25 mar 2018, o 20:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[G_Hades]]></name></author>
<updated>2018-03-25T20:21:21+01:00</updated>
<published>2018-03-25T20:21:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206048#p206048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206048#p206048"/>
<title type="html"><![CDATA[Wersja start z opisem AVR, bibliotek i typow zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20487&amp;p=206048#p206048"><![CDATA[
Witam panie oraz panów. Krótko mówiac jestem poczatkujacy i tracąc dużo czasu na szukaniu i ciągłym sprawdzaniu co do czego oraz w jakich zakresach postanowiłem to coś żeby mieć większość pod ręką. Może przyda się komuś. Jak wiadomo nieużywane biblioteki można zakomentować chociaż z tego co się orientuje że nie używane nie będą sie kompilować. Mogę sie mylić, jeśli są jakieś błedy prosiłbym o wskazanie co bym nie wprowadzał w błąd takich świerzaków jak ja  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />kurde nie moge tego tutaj tak fajnie ustawic jak u mnie<br /><br />main.h<br />[syntax=c]#ifndef MAIN_H_<br />#define MAIN_H_<br /><br />//         ATMEGA_16,32 i Atmega8535<br />//      +---------------------------+                  Typ                    Rozmiar       Wartość      Wartość          Bajty<br />//     1|PB0 (XCK/T0)     (ADC0) PA0|40                              (bitów)     minimalna   maksymalna<br />//     2|PB1 (T1)         (ADC1) PA1|39             void                pusty                &lt;&lt;  0  &gt;&gt;                   0<br />//     3|PB2 (INT2/AIN0)  (ADC2) PA2|38        char                  8           -128            127              1<br />//     4|PB3 (OC0/AIN1)   (ADC3) PA3|37        unsigned char          8         0            255              1<br />//     5|PB4 (nSS)        (ADC4) PA4|36            short int                  16      -32768  32767            2<br />//     6|PB5 (MOSI)       (ADC5) PA5|35           unsigned short int  16        0            65535          2<br />//     7|PB6 (MISO)       (ADC6) PA6|34           int                          16      -32768    32767          2<br />//     8|PB7 (SCK)        (ADC7) PA7|33            unsigned int          16        0            65535          2<br />//     9|nRST                   AREF|32               long int                  32      -2^31      2^31-1         4<br />//    10|VCC                     GND|31              unsigned long int  32        0            2^32-1         4<br />//    11|GND                    AVCC|30              long long int          64      -2^63            2^63-1         8<br />//    12|XTAL2           (TOSC2) PC7|29         long long unsigned int  64        0            2^64-1         8<br />//    13|XTAL1           (TOSC1) PC6|28         int                        =         short int<br />//    14|PD0 (RXD)         (TDI) PC5|27         unsigned int               =         unsigned short int<br />//    15|PD1 (TXD)         (TDO) PC4|26         float                  32    6    znaków precyzji                  4<br />//    16|PD2 (INT0)        (TMS) PC3|25         double                  32    10   znaków precyzji          8<br />//    17|PD3 (INT1)        (TCK) PC2|24         uint8_t                   8              0              255           1<br />//    18|PD4 (OC1B)        (SDA) PC1|23         int8_t                    8             -128            127           1<br />//    19|PD5 (OC1A)        (SCL) PC0|22         uint16_t                  16             0              65535         2<br />//    20|PD6 (ICP1)        (OC2) PD7|21         int16_t                   16            -32768          32767         2<br />//      +---------------------------+           uint32_t                  32             0            4294967265      4<br />//                                              int32_t                   32            -2147483648   2147483647      4<br />//                                              uint64_t                  64             0             1.8*1019       8<br />//                                              int64_t                   64            -9.2*1018      9.2*1018       8<br />//     &lt;stdbool.h&gt;                              bool       prawda lub fałsz  -   true or false    1-0                 1<br /><br />//________________Biblioteki_________________________________________________________________________________//<br /><br />#include &lt;avr/io.h&gt;          // definicje rejestrów i bitów I/O (dołcza właciwe dla danego uC)<br />#include &lt;util/delay.h&gt;      // funkcje realizujce opóznienia<br />#include &lt;stdint.h&gt;          // definicje standardowych typów całkowitych np: uint8_t, uint16_t...<br />#include &lt;avr/interrupt.h&gt;   // funkcje obsługi przerwań<br />#include &lt;avr/pgmspace.h&gt;    // fukncje dostępu do pamięci programu<br /><br />#include &lt;stdio.h&gt;           // standardowa biblioteka wejcia/wyjcia<br />#include &lt;stdlib.h&gt;          // funkcje standardowe<br />#include &lt;string.h&gt;          // funkcje operujce na łańcuchach<br />#include &lt;avr/eeprom.h&gt;      // funkcje dostępu do wewnętrznej pamięci EEPROM<br /><br />#include &lt;alloca.h&gt;          //- alokujacja pamięci stosu<br />#include &lt;assert.h&gt;          //- diagnostyka<br />#include &lt;ctype.h&gt;           //- operacje na znakach<br />#include &lt;errno.h&gt;           //- obsługa błędów<br />#include &lt;inttypes.h&gt;        //- konwersje typów całkowitych<br />#include &lt;math.h&gt;            //- funkcje matematyczne<br />#include &lt;setjmp.h&gt;          //- długie skoki<br />#include &lt;avr/boot.h&gt;        //- narzędzia wspierajce funkcje bootloadera<br />#include &lt;avr/power.h&gt;       //- funkcje zarzdzania energi<br />#include &lt;avr/sfr_defs.h&gt;    //- funkcje operujce na rejestrach funkcyjnych<br />#include &lt;avr/sleep.h&gt;           //- funkcje zarzdzania trybami energooszczędnymi<br />#include &lt;avr/version.h&gt;         //- makra wersji<br />#include &lt;avr/wdt.h&gt;             //- funkcje obsługi Watchdoga<br />#include &lt;util/crc16.h&gt;          //- obliczanie sum CRC<br />#include &lt;util/delay_basic.h&gt;    //- funkcje realizujce podstawowe opóznienia<br />#include &lt;util/parity.h&gt;         //- generowanie bitu parzystoci<br />#include &lt;util/twi.h&gt;            //- definicje masek interfejsu TWI<br />#include &lt;compat/deprecated.h&gt;   //- informacje o przestarzałych funkcjach<br />#include &lt;compat/ina90.h&gt;        //- funkcje zapewniajce kompatybilnoś z IAR EWB 3.x<br /><br />//_____________Typy zmiennych_____________________________________________________________________________________//<br />typedef uint8_t   u08;<br />typedef int8_t    i08;<br /><br />typedef uint16_t  u16;<br />typedef int16_t   i16;<br /><br />typedef uint32_t  u32;<br />typedef int32_t   i32;<br /><br /><br /><br />#endif /* MAIN_H_ */[/syntax]<br />main.c<br />[syntax=c]#include &quot;main.h&quot;<br /><br /><br />//****************************** PETLA MAIN **************************************************************************//<br />int main( void ) {<br /><br /><br />//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PETLA GLOWNA PROGRAMU ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//<br /><br />//  sei();<br />while(1) {<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16217">G_Hades</a> — 25 mar 2018, o 20:21</p><hr />
]]></content>
</entry>
</feed>