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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-06-14T09:24:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15582&amp;mode</id>
<entry>
<author><name><![CDATA[iTTiny]]></name></author>
<updated>2016-06-14T09:24:49+01:00</updated>
<published>2016-06-14T09:24:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162219#p162219</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162219#p162219"/>
<title type="html"><![CDATA[Re: Problem początkującego - Pierwszy program w C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162219#p162219"><![CDATA[
Dziękuję Ci bardzo kolego ! <br />Wszystko działa, jeden nawias i tyle problemów... cóż praktyka czyni mistrza <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14220">iTTiny</a> — 14 cze 2016, o 09:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-06-13T21:39:41+01:00</updated>
<published>2016-06-13T21:39:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162194#p162194</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162194#p162194"/>
<title type="html"><![CDATA[Re: Problem początkującego - Pierwszy program w C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162194#p162194"><![CDATA[
Brakuje ci nawiasu zamykającego drugi if w pętli while.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 13 cze 2016, o 21:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iTTiny]]></name></author>
<updated>2016-06-13T21:23:03+01:00</updated>
<published>2016-06-13T21:23:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162191#p162191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162191#p162191"/>
<title type="html"><![CDATA[Problem początkującego - Pierwszy program w C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15582&amp;p=162191#p162191"><![CDATA[
Witam wszystkich,<br />Jak już w tytule wspomniałem jestem początkującym jeżeli chodzi o programowanie. Aktualnie jestem w trakcie czytania książki Pana Mirka - Bluebooka jednak kolega poprosił mnie, czy byłbym w stanie zrobić dla niego mały &quot;sterownik&quot;, który oczywiście wydał mi się banalnie prosty więc się zgodziłem. Niestety jak na złość nie potrafię poradzić sobie z programem, mam :1 errors, 2 warnings, 0 others... Jak widać sporo do poprawienia jednak sam nie widzę swoich błędów.<br />Ogólne założenia projektu:<br />Cały projekt to tak naprawdę 3 wejścia i jedno wyjście do sterowania za pomocą małego mikroprocesora ATtiny45/85 w zależności od tego jak wiele pamięci zajmie program. Dwa wejścia będą określały jaki tryb jest aktualnie przez nas wybrany, 3 wejście to przycisk a wyjście będzie podane na bramkę tranzystora. <br />Jako że jestem jeszcze przed &quot;praktyką&quot;, skorzystałem z gotowego programu jaki był dołączony do bluebooka w bibliotekach czyli sterowanie diodą za pomocą microswicha. Program nieco zmodyfikowałem pod swoje założenia, dodałem wejścia, zmieniłem porty na B, jako że ATtiny posiada tylko portB i wszystko wyglądało na prawidłowo skonstruowane. Niestety po zapisaniu programu, build itd pojawiło się sporo błędów, nie mam zielonego pojęcia co jest nie tak więc liczę na małe wsparcie jeśli ktoś znajdzie chwilę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /> <br />Kod programu:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 13 cze 2016<br /> *      Author: Seba<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />// **************************** definicje dla preprocesora *************************************<br />#define SHOOT (1&lt;&lt;PB4)// definicja pinu do którego podłączona jest bramka tranzystora<br />#define SHOOT_ON PORTB ^= SHOOT// makrodefinicja – zmiana stanu bramki_T<br /><br />// klawisz SPUSTU<br />#define SPUST (1&lt;&lt;PB2)<br />#define SPUST_ON !(PINB &amp; SPUST)<br /><br />// klawisz TRYBU SEMI<br />#define SEMI (1&lt;&lt;PB0)<br />#define SEMI_ON !(PINB &amp; SEMI)<br /><br />// klawisz TRYBU FULL AUTO<br />#define FULL (1&lt;&lt;PB1)<br />#define FULL_ON !(PINB &amp; FULL)<br /><br />uint8_t SPUST_WCISNIETY(void);// deklaracja funkcji<br />uint8_t TRYB_SEMI(void);<br />uint8_t TRYB_FULL(void);<br /><br />// ******************************* pętla główna main() *****************************************<br />int main(void)<br />{<br />// ****** inicjalizacja *********<br />DDRB |= SHOOT;// kierunek pinu PB4 – wyjściowy<br />PORTB |= SHOOT;// otwarcie tranzystora<br />DDRB &amp;= ~SPUST;// kierunek pinu PB2 - wejściowy<br />PORTB |= SPUST;// podciągnięcie pinu do VCC<br />DDRB &amp;= ~SEMI;// kierunek pinu PB0 - wejściowy<br />PORTB |= SEMI;// podciągnięcie pinu do VCC<br />DDRB &amp;= ~FULL;// kierunek pinu PB1 - wejściowy<br />PORTB |= FULL;// podciągnięcie pinu do VCC<br /><br />// ****************************** pętla główna programu  ***************************************<br />while(1)<br />{<br />if(  SPUST_WCISNIETY()  )  // jeśli spust jest wcisniety<br />{<br />if(SEMI == 0)// jesli tryb SEMI jest wlaczony<br />{<br />SHOOT_ON;// zmień stan BRAMKI na przeciwny (wlacz)<br />_delay_ms(200);// przerwa potrzebna na wykonanie 1 strzalu<br />SHOOT_ON;// zmień stan BRAMKI na przeciwny (wylacz)<br />_delay_ms(500); // przerwa przed podwojnym strzalem<br />}<br />if(SEMI == 0) // jesli spust dalej jest wcisniety<br />{<br /> SHOOT_ON;// zmień stan BRAMKI na przeciwny (wlacz)<br />_delay_ms(400);// przerwa potrzebna na wykonanie 2!! strzalow<br /> SHOOT_ON;// zmień stan BRAMKI na przeciwny (wylacz)<br /><br />}<br /><br />}<br />if(  SPUST_WCISNIETY()  )  // jeśli spust jest wcisniety<br />{<br />if(FULL == 0)// jesli tryb full jest wlaczony<br />{<br />PORTB |= (1&lt;&lt;PB2);// wlacz spust (bramka tranzystora)<br />}<br />else<br />{<br />PORTB &amp;= ~(1&lt;&lt;PB2);//wylacz spust (bramka tranzystora)<br />}<br />}<br />}<br />//******************************** koniec main()************************************************<br /><br />// ************************ definicja funkcji przycisku spustu *********************************<br />uint8_t SPUST_WCISNIETY(void)<br />{<br />if( SPUST_ON )// jesli klawisz wciśnięty<br />{<br />_delay_ms(80);// czas drgań styków<br />if( SPUST_ON ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}<br />// ************************** definicja funkcji trybu SEMI *************************************<br />uint8_t TRYB_SEMI(void)<br />{<br />if( SEMI_ON )// jesli tryb aktywny<br />{<br />_delay_ms(80);// czas drgań styków<br />if( SEMI_ON ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}<br />// ************************* definicja funkcji trybu FULL **************************************<br />uint8_t TRYB_FULL(void)<br />{<br />if( FULL_ON )// jesli tryb aktywny<br />{<br />_delay_ms(80);// czas drgań styków<br />if( FULL_ON ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}[/syntax]<br /><br />W liniach 30 i 31 kodu przed numerem linii pojawia się żółty &quot;robak&quot;, komunikat jaki tam się pojawia:<br /><strong>30 - </strong> Multiple markers at this line<br />- Line breakpoint: main.c [line: 30]<br />- Unused declaration of function <br /><strong>31 - </strong> Unused declaration of function 'TRYB_FULL'<br /><br />Na samym dole kodu, linia 113 pojawia się czerwone kółko z białym x, komunikat jaki tam się pojawia:<br /><strong>113 - </strong> Multiple markers at this line<br />- Syntax error<br />- expected declaration or statement at end <br /> of input<br /><br />Kopia informacji z &quot;Console&quot;:<br />21:52:36 **** Incremental Build of configuration Release for project SYS_STRZELANIA_V2 ****<br />make all <br />'Building file: ../main.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=attiny45 -DF_CPU=8000000UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.o&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function 'main':<br />../main.c:113:1: error: expected declaration or statement at end of input<br /> }<br /> ^<br />make: *** [main.o] Błąd 1<br /><br />21:52:37 Build Finished (took 839ms)<br /><br />Z góry dziękuję za chęci i pomoc <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=14220">iTTiny</a> — 13 cze 2016, o 21:23</p><hr />
]]></content>
</entry>
</feed>