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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2026-04-21T12:11:23+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f&amp;t&amp;mode=topics</id>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2026-04-21T12:11:23+01:00</updated>
<published>2026-04-21T12:11:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24901&amp;p=239450#p239450</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24901&amp;p=239450#p239450"/>
<title type="html"><![CDATA[Dla całkowicie początkujących • Atmega16-32 Piny XTAL1 XTAL2]]></title>

<category term="Dla całkowicie początkujących" scheme="https://forum.atnel.pl/viewforum.php?f=58" label="Dla całkowicie początkujących"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24901&amp;p=239450#p239450"><![CDATA[
Dzień dobry wszystkim.<br /><br />Mam do Was może bardzo banalne pytanie, ale w nocie nie znalazłem odpowiedzi. Chyba ze nieuważnie czytałem. Co zrobić z pinami XTAL1 i XTAL2. jeśli korzystam z wewnętrznego<br />oscylatora, nie mam wlutowanego rezonatora i kondensatorów ?<br /><br />1. Czy mogę je użyć, jako i/o dla np. przycisków ? (jak nazwać je w kodzie DDRX PORTX.....)<br />2. Jeśli są zbędne, to czy można je np. ustawić jako wejścia i podciągnąć do vcc w celu polepszenia stabilności układu (jak to zrobić)<br />3. Czy nie wolno ich ruszać i pozostawić wolnymi i tyle ?<br /><br />Proszę o pomoc w tym temacie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 21 kwi 2026, o 12:11 — Odpowiedzi 3 — Wyświetlone 260</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrzej381]]></name></author>
<updated>2026-04-12T15:23:24+01:00</updated>
<published>2026-04-12T15:23:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24899&amp;p=239441#p239441</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24899&amp;p=239441#p239441"/>
<title type="html"><![CDATA[Język C dla AVR • pomiar wilgotności - BME280]]></title>

<category term="Język C dla AVR" scheme="https://forum.atnel.pl/viewforum.php?f=4" label="Język C dla AVR"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24899&amp;p=239441#p239441"><![CDATA[
Mam kłopot z pomiarem wilgotności czujką BME280 (na I2C i ATmega168P). Korzystam z bibliotek Mirka ( MK_PRESSURE_HUMIDITY i MK_I2C). Czujka działa lecz mierzy wilgotność w dziwny sposób. <br />To znaczy mierzy ją na poziomie 83%. Gdy wystawię ją na delikatne słońce (przez szybę, firanę, z odległości 0,5m) to wilgotność spada do około 49%. <br />Oczywiście przy okazji rośnie temperatura o jakieś 3 stopnie. <br /><br />Mam też inną czujkę tj. BME680 i odpalony program na STM32... Ta pokazuje około 44% co jest zgodne z higrometrem mechanicznym który posiadam. <br /><br />Moje pytanie brzmi: czy mam źle skonfigurowaną bibliotekę (w tej chwili tryb Normal), czy uszkodzoną czujkę? Oczywiście program z biblioteką wykrywa BME280. <br />A może jest jakiś niuans do ustawienia dla tej czujki / biblioteki? Może coś zmieni tryb Forced? Ale dla niego trzeba chyba dodać jakiegoś delay-a. <br />Ma może ktoś doświadczenie w użytkowaniu tej czujki?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 31 minutach ]</span></strong><br /><br />Zmiana na BME280_FORCED_MODE spowodowała to że wilgotność stanęła na 81,92% i nie reaguje. Chyba nie tędy droga.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=308">andrzej381</a> — 12 kwi 2026, o 15:23 — Odpowiedzi 14 — Wyświetlone 906</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow]]></name></author>
<updated>2026-04-09T20:56:36+01:00</updated>
<published>2026-04-09T20:56:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24898&amp;p=239433#p239433</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24898&amp;p=239433#p239433"/>
<title type="html"><![CDATA[Język C dla AVR • Funkcja boot_signature_byte_get(addr) pod Eclipse/MKClipse]]></title>

<category term="Język C dla AVR" scheme="https://forum.atnel.pl/viewforum.php?f=4" label="Język C dla AVR"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24898&amp;p=239433#p239433"><![CDATA[
Hej, ostatnio dłubałem sobie coś na 328pb (używając Atmel Studio) i w którymś momencie chciałem przygotować projekt tak, żeby również kompilował się poprawnie pod Eclipse. Ale okazało się, że jedna rzecz mi nie chciała się skompilować - chodzi o wykorzystanie funkcji boot_signature_byte_get(addr) (chciałem użyć jako identyfikatora procka). Wywalał błąd braku definicji <strong>SIGRD</strong>. Sprawdziłem co jest w plikach <em>iom328pb.h</em> po stronie Atmel Studio i Eclipse w katalogach<br />C:\Users\&lt;user&gt;\Documents\MkClipse\AVR Toolchain\avr\include\avr<br />oraz<br />C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\ATmega_DFP\1.6.364\include\avr<br /><br />okazało się, że plik w MKClipse jest z sygnaturą z 2015 roku a ten z Atmel Studio z 2020<br /><br />różnią się w tej okolicy - linia numer 9 (#define SIGRD   5) jest w tym nowszym pliku z Atmel Studio<br />[syntax=c]/* Reserved &#91;0x36&#93; */<br /><br />#define SPMCSR  _SFR_IO8(0x37)<br />#define SPMEN   0<br />#define PGERS   1<br />#define PGWRT   2<br />#define BLBSET  3<br />#define RWWSRE  4<br />#define SIGRD   5<br />#define RWWSB   6<br />#define SPMIE   7[/syntax]<br /><br />Na tą chwilę poradziłem sobie w ten sposób<br /><br />[syntax=c]#if defined(__AVR_ATmega328PB__)<br />#define KM_CPU_HAS_PRODUCTION_SERIAL 1<br />#else<br />#define KM_CPU_HAS_PRODUCTION_SERIAL 0<br />#endif<br /><br />#if KM_CPU_HAS_PRODUCTION_SERIAL<br />#ifndef SIGRD<br />#if defined(RSIG)<br />#define SIGRD RSIG<br />#else<br />#define SIGRD 5<br />#endif<br />#endif<br />#include &lt;avr/boot.h&gt;<br />#endif[/syntax]<br /><br />Ale to trochę mało eleganckie rozwiązanie - dlatego chciałem podpytać, czy jest szansa na uatkutalnienie toolchaina dla MKClipse/Eclipse do nowszej wersji?<br /><br />Pozdrowienia,<br />Krzysiek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20760">moscow</a> — 9 kwi 2026, o 20:56 — Odpowiedzi 3 — Wyświetlone 504</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[alhcum]]></name></author>
<updated>2026-04-09T11:05:37+01:00</updated>
<published>2026-04-09T11:05:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24897&amp;p=239430#p239430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24897&amp;p=239430#p239430"/>
<title type="html"><![CDATA[Mikrokontrolery AVR • USART PUTTY odczytuje tylko €]]></title>

<category term="Mikrokontrolery AVR" scheme="https://forum.atnel.pl/viewforum.php?f=8" label="Mikrokontrolery AVR"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24897&amp;p=239430#p239430"><![CDATA[
Cześć wszystkim jako to mój pierwszy post.<br />Od jakiegoś czasu zacząłem się bawić ATMEG-ą 8. Ostatnio próbuję przesłać USART-em dane przy pomocy CP2102 i odczytać w środowisku PUTTY.<br />Niestety w konsoli PUTTY wyświetla gwiazdki (jak na zdjęciu), a w logu zapisują się tylko symbole €.<br />Nie mogę znaleźć co robię nie tak, według mnie kontroler łączy się z PC bo pojawiają się gwiazdki i w zależności od długości przesyłanych danych zmienia się liczna gwiazdek wyświetlanych w konsoli. <br />Kod jest dosyć prosty:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util\delay.h&gt;<br /><br />#define FOSC 8000000// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br /><br />void USART_Init(uint8_t);<br /><br />void main ()<br />{<br />USART_Init (MYUBRR);<br />while (1)<br />{<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />{<br />}<br />UDR=0b00000001;<br />_delay_ms(100);<br />}<br />}<br /><br />void USART_Init(uint8_t ubrr)<br />{<br />UBRRH = (uint8_t)(ubrr&gt;&gt;8);<br />UBRRL = (uint8_t)ubrr;<br />/* Enable transmitter */<br />UCSRB = 0b00001000;//(1&lt;&lt;TXEN);<br />/* Set frame format: even parity, 8data, 2stop bits */<br />UCSRC = 0b10101110;<br />}[/syntax]<br /><br /><a href="https://obrazkiforum.atnel.pl/22295/a8f8c7fdb09392018ca2d7f0a7e6435b.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/22295/a8f8c7fdb09392018ca2d7f0a7e6435b.png" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/22295/3fd5e490a7ebc1011156e2a975291776.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/22295/3fd5e490a7ebc1011156e2a975291776.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22295">alhcum</a> — 9 kwi 2026, o 11:05 — Odpowiedzi 8 — Wyświetlone 628</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2026-03-22T18:23:12+01:00</updated>
<published>2026-03-22T18:23:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24892&amp;p=239420#p239420</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24892&amp;p=239420#p239420"/>
<title type="html"><![CDATA[Dział &quot;RYBNY&quot; • Silikon]]></title>

<category term="Dział &quot;RYBNY&quot;" scheme="https://forum.atnel.pl/viewforum.php?f=30" label="Dział &quot;RYBNY&quot;"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24892&amp;p=239420#p239420"><![CDATA[
Witam czy wie ktoś czym usunąć zalewę silikonową z elektroniki, mechaniczne usuwanie odpada ponieważ nie da się dojść od spodu płytki?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 22 mar 2026, o 18:23 — Odpowiedzi 2 — Wyświetlone 568</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andis]]></name></author>
<updated>2026-03-14T16:04:57+01:00</updated>
<published>2026-03-14T16:04:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24891&amp;p=239418#p239418</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24891&amp;p=239418#p239418"/>
<title type="html"><![CDATA[Dla całkowicie początkujących • Wyświetlacz ISP]]></title>

<category term="Dla całkowicie początkujących" scheme="https://forum.atnel.pl/viewforum.php?f=58" label="Dla całkowicie początkujących"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24891&amp;p=239418#p239418"><![CDATA[
Jestem bardzo bardzo początkującym w dziedzinie elektroniki<br /><br />W jak najprostrzy sposób odizolować sygnały MISO,MOSI,SCK?<br />są używane do programowania ale rónież do wyświetlacza SPI<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22290">andis</a> — 14 mar 2026, o 16:04 — Odpowiedzi 1 — Wyświetlone 566</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ankel345]]></name></author>
<updated>2026-02-16T22:50:33+01:00</updated>
<published>2026-02-16T22:50:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24888&amp;p=239406#p239406</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24888&amp;p=239406#p239406"/>
<title type="html"><![CDATA[Dla całkowicie początkujących • Inicjalizacja portów Atmega8]]></title>

<category term="Dla całkowicie początkujących" scheme="https://forum.atnel.pl/viewforum.php?f=58" label="Dla całkowicie początkujących"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24888&amp;p=239406#p239406"><![CDATA[
Witam. Jestem zupełnie początkującym i napotkałem taki problem: Chcę uruchomić wyświetlacz 7-segmentowy LED. W literaturze w przykładach na sterowanie segmentami wykorzystany jest jeden z portów. Ja muszę skorzystać z dwóch portów, PORT D (PD0 i PD1) PORTC (PC1,PC2,PC3,PC4,PC5,)<br />do sterowania anodami (PB6,PB7) oraz (PD3,PD4). Po prostu mam płytkę zegara z piekarnika i chcę ją zaadoptować do ćwiczeń i takie mam uwarunkowania. Nie umiem sobie poradzić z inicjalizacją i tablicą cyfr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22283">ankel345</a> — 16 lut 2026, o 22:50 — Odpowiedzi 4 — Wyświetlone 1145</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[awojcick]]></name></author>
<updated>2026-02-02T14:49:11+01:00</updated>
<published>2026-02-02T14:49:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24887&amp;p=239400#p239400</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24887&amp;p=239400#p239400"/>
<title type="html"><![CDATA[Komputery PC (Windows/Linux) • Linux Debian Eclipse + avrdude.]]></title>

<category term="Komputery PC (Windows/Linux)" scheme="https://forum.atnel.pl/viewforum.php?f=48" label="Komputery PC (Windows/Linux)"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24887&amp;p=239400#p239400"><![CDATA[
Od kilku dni borykam się z problemem uruchomienia na debianie eclipse z avrdudem. <br />Dzięki Mirkowi jest to świetnie opisane w przypadku Windows za co serdecznie mu dziękuję <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br />Ale do rzeczy:<br />Eclipse 2024-12 zainstalowany ustawione co trzeba programy się kompilują jest OK.<br />Avrdude 7.1 zainstalowany, programator ATB-USBASP v.4.2 ustawione co trzeba w terminalu działa można czytać i zapisywać avr.<br />Sprawdzałem dla atmegi32 i atmegi328p.<br />Natomiast nie mogę uruchomić go z eclipse pomimo podania w konfiguracji prawidłowej scieżki.<br />W zakładce Projects/Properties/AVR/AVRDude/Programer po naciśnięciu New.. nic się nie dzieje i nie pojawia się okno konfiguracji.<br />Może Koledzy mają jakiś pomysł jak rozwiązać ten problem.<br /><br />Pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21784">awojcick</a> — 2 lut 2026, o 14:49 — Odpowiedzi 2 — Wyświetlone 661</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2026-01-29T15:20:47+01:00</updated>
<published>2026-01-29T15:20:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24886&amp;p=239388#p239388</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24886&amp;p=239388#p239388"/>
<title type="html"><![CDATA[Komputery PC (Windows/Linux) • Eclipse na pendrive.]]></title>

<category term="Komputery PC (Windows/Linux)" scheme="https://forum.atnel.pl/viewforum.php?f=48" label="Komputery PC (Windows/Linux)"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24886&amp;p=239388#p239388"><![CDATA[
Witajcie.<br /><br />Chciałem się podzielić małym doświadczeniem z Eclipse, które wczoraj przeprowadziłem z czystej ciekawości. Może komuś się przyda... Nadmienię, że wykonałem to na komputerach z <br />zainstalowanym Windows 7 64 bity, ale to chyba nie ma znaczenia (trzeba dla pewności sprawdzić). Proszę od razu za oszczędzenie mnie w kontekście Windowsa, że koci i taki stary <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Mi pasuje i do puki nie ma z nim większych problemów, to używam. A więc wziąłem pendriva usb 3.0 i po prostu na zasadzie kopiuj i wklej, przeniosłem cały folder Eclipsa z dysku C na pendriva.<br />Eclipse wcześniej &quot;zainstalowany&quot; normalnie zgodnie z poradnikami Mirka. Wgrany plagin z prockami pb i cała procedura konfiguracyjna dla workspace. Może inaczej. Eclipse, na którym pracuję<br />od dawna i teraz postanowiłem wykonać, co opisuję.<br /><br />Dalej do skopiowanego folderu Eclipse (ver. 12-2023) skopiowałem również cały folder MkClipse z C:/dokumenty, gdzie jak wiemy znajduje się folder avrdude i AVR Toolchain. Następnie na tego pendrive<br />skopiowałem również folder workspace, który znajdował się na dysku C: i był wcześniej utworzony i skonfigurowany zgodnie ze sztuką pod tą wersję Eclipsa. Musiałem jeszcze zmienić ścieżki dostępu<br />dla avrdude i Toolchain, a żeby uruchamiany Eclipse z pendriva nie szukał, co mu potrzeba na dysku C: tylko na pendrive.<br /><br />Efekt jest taki, że po włożeniu pendrive do komputera, wejściu do folderu Eclipse i kliknięciu na wiadomą ikonę Eclipse startuje. Tworzą się projekty i wszystko śmiga. Oczywiście trochę wolniej i musi być usb 3.0. Na usb 2.0 jest kicha (wolno).<br /><br />Sprawdziłem na 3 kompach. Oczywiście muszą być zainstalowane na komputerach inne dodatki wymagane, czyli sterowniki do programatora, odpowiednie workspace i co tam jeszcze.<br /><br />Teraz mogę przenosić eclipse z pracy do domu i gdzie chce bez potrzeby instalacji.<br /><br />Co o tym myślicie ? Może sie przyda. Proszę przetestować i podzielić się spostrzeżeniami. Pozdrawiam. Robert.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 29 sty 2026, o 15:20 — Odpowiedzi 3 — Wyświetlone 699</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2026-01-28T21:13:16+01:00</updated>
<published>2026-01-28T21:13:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24885&amp;p=239386#p239386</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24885&amp;p=239386#p239386"/>
<title type="html"><![CDATA[Projekty programistyczne • SunGo Project Manager  do VSCode]]></title>

<category term="Projekty programistyczne" scheme="https://forum.atnel.pl/viewforum.php?f=23" label="Projekty programistyczne"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24885&amp;p=239386#p239386"><![CDATA[
SunGo Project Manager v0.0.7 – Kompletne środowisko Go w Twoim VS Code!<br /><br />Cześć! Z radością ogłaszam wydanie wersji <strong>0.0.7</strong> mojego rozszerzenia SunGo. <br />To wydanie to milowy krok dla każdego, kto chce szybko i bezboleśnie tworzyć aplikacje w języku Go, <br />bez walki z terminalem i konfiguracją VS Code.<br /><br />UWAGA !!<br />W VS Code  powinieneś mieć też zainstalowaną wtyczkę oficjalną GO , oraz kompilator Go na komputerze<br /><br /><img src="https://forum.lothar-team.pl//ext/dmzx/imageupload/img-files/48/3442c7a/11215be/c65cd6b1d6ec815ffd8919d3b37db3b4.png" alt="Obrazek" /><br /><br />Co nowego w wersji <strong>0.0.7</strong>?<br /><br />Największą nowością jest funkcja BUILD! Od teraz SunGo to nie tylko pisanie i uruchamianie, to produkcja gotowych narzędzi<br />Wtyczka sama rozpoznaje w jakim pracujesz systemie Win/Lin/IOS i builduje aplikacje właściwe dla systemu w jakim pracujesz.<br />Ponadto wtyczka daje ci:<br /><br />** Jeden klik = Gotowy Program: Nowy przycisk na pasku statusu automatycznie kompiluje Twój kod.<br />** Porządek w plikach: Zapomnij o bałaganie. Skompilowane binarki trafiają prosto do folderu /bin.<br />** Inteligentne nazewnictwo: Wtyczka sama rozpoznaje nazwę Twojego projektu i tak nazywa plik .exe (na Windows) lub binarkę (na Linux/macOS).<br />** Diagnostyka na start: Dashboard w v0.0.6/0.0.7 automatycznie sprawdza, czy masz zainstalowane Go, GCC i Gita – jeśli czegoś brakuje, <br />SunGo Ci o tym powie!  (Gcc potrzebne dla np biblioteki raylib)<br /><br />* Wesprzyj rozwój projektu<br />Jeśli SunGo ułatwia Ci życie i oszczędza Twój czas, możesz postawić mi wirtualną kawę bezpośrednio z poziomu Dashboardu rozszerzenia.<br />Każda &quot;filiżanka&quot; to dodatkowa motywacja do dodawania nowych funkcji! <br /><br />* Jak zaktualizować?<br />Wtyczka powinna zaktualizować się automatycznie w Twoim VS Code. Jeśli jeszcze jej nie masz, szukaj &quot;SunGo&quot; w Marketplace!<br /><br />Do zobaczenia na forum i udanego kodowania! SunRiver<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 28 sty 2026, o 21:13 — Odpowiedzi 1 — Wyświetlone 550</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Aven154]]></name></author>
<updated>2026-01-27T13:43:46+01:00</updated>
<published>2026-01-27T13:43:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24882&amp;p=239383#p239383</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24882&amp;p=239383#p239383"/>
<title type="html"><![CDATA[Dział &quot;RYBNY&quot; • Problem z odbiorem radiowym przy niezależnym zasialniu]]></title>

<category term="Dział &quot;RYBNY&quot;" scheme="https://forum.atnel.pl/viewforum.php?f=30" label="Dział &quot;RYBNY&quot;"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24882&amp;p=239383#p239383"><![CDATA[
Witam Witam przeprowadziłem komunikację między odbiornikiem a najnikiem 433MHZ FS1000A wszystko działa sygnał poprawnie jest dekodowany wyświetlany na lcd. Natomiast problem pojawia się jak te układy działają na oddzielnym źródle zasilania odbiornik przestaje reagować na nadajnik niezależnie od długości trwania połówki bitu. Na zdjęciach przedstawiam jak to wygląda na oscyloskopie. Spotkał się ktoś z czymś podobnym lub ma rade co może być przyczyną <br /><strong>praca modułów na wspólnym zasilaniu</strong><br /><a href="https://obrazkiforum.atnel.pl/22247/4a7d4b7d16a3e2872b7268c45f04c7b0.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/22247/4a7d4b7d16a3e2872b7268c45f04c7b0.png" alt="Obrazek" /></a><br /><strong>Praca na oddzielnym zasilaniu</strong><br /><a href="https://obrazkiforum.atnel.pl/22247/42c55fed8ae21bdd8aad9b0a6adf6874.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/22247/42c55fed8ae21bdd8aad9b0a6adf6874.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22247">Aven154</a> — 27 sty 2026, o 13:43 — Odpowiedzi 14 — Wyświetlone 1172</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2026-01-02T20:36:19+01:00</updated>
<published>2026-01-02T20:36:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24880&amp;p=239375#p239375</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24880&amp;p=239375#p239375"/>
<title type="html"><![CDATA[Projekty sprzętowe • Taki sobie zegarek ...]]></title>

<category term="Projekty sprzętowe" scheme="https://forum.atnel.pl/viewforum.php?f=22" label="Projekty sprzętowe"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24880&amp;p=239375#p239375"><![CDATA[
Co du dużo pisać .....<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />reszta informacji <!-- m --><a class="postlink" href="https://forum.lothar-team.pl/viewtopic.php?t=1086" >https://forum.lothar-team.pl/viewtopic.php?t=1086</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 2 sty 2026, o 20:36 — Odpowiedzi 3 — Wyświetlone 791</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Roman70PLUS]]></name></author>
<updated>2025-12-22T11:56:40+01:00</updated>
<published>2025-12-22T11:56:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24879&amp;p=239361#p239361</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24879&amp;p=239361#p239361"/>
<title type="html"><![CDATA[Mikrokontrolery AVR • przerwania dla atmegi 8]]></title>

<category term="Mikrokontrolery AVR" scheme="https://forum.atnel.pl/viewforum.php?f=8" label="Mikrokontrolery AVR"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24879&amp;p=239361#p239361"><![CDATA[
Napisałem krótki kod dla atmegi 8 zastosowałem jak mniemam wszystkie wskazówki z BB i kursu C i poniższy kod nie daje się nawet skompilować. gdzie tkwi błąd ???/*<br /> * main.c<br /> *<br /> *  Created on: 16 gru 2025<br /> *      Author: Roman B<br /> */<br /><br />#include&lt;avr/io.h&gt;//plik nagłówkowy<br />#include&lt;avr/interrupt.h&gt;//plik przerwaań<br />#include&lt;util/delay.h&gt;<br /><br />int main(void){<br /><br />DDRC = 0b11111111;<br />PORTC = 0b11111110;<br /><br />DDRD = 0b11111111;<br />PORTD = 0b00000000;<br />// ustawienie TIMER0<br /><br />TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);<br />TCNT0 = 0;<br />TIMSK |= (1&lt;&lt;TOIE0);<br /><br />volatile uint16_t a = 0;<br /><br />sei ();<br />while(1)<br />{<br />PORTD = a;<br />}<br />}<br />ISR(TIMER0_OVF_vect);<br />{<br />a++;<br />}<br />Pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22273">Roman70PLUS</a> — 22 gru 2025, o 11:56 — Odpowiedzi 13 — Wyświetlone 1384</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-12-06T18:02:21+01:00</updated>
<published>2025-12-06T18:02:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24877&amp;p=239349#p239349</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24877&amp;p=239349#p239349"/>
<title type="html"><![CDATA[Luźne dyskusje • Wesołego mikołaja ...]]></title>

<category term="Luźne dyskusje" scheme="https://forum.atnel.pl/viewforum.php?f=24" label="Luźne dyskusje"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24877&amp;p=239349#p239349"><![CDATA[
Trochę dla hecy , trochę dla zabawy ....<br /><br />Życzenia mikołajkowe w Go .....<br /><br />Źródła dostępne tujtaj  <!-- m --><a class="postlink" href="https://forum.lothar-team.pl//viewtopic.php?p=3367#p3367" >https://forum.lothar-team.pl//viewtopic ... 3367#p3367</a><!-- m -->  <br /><br />Wersja skompilowana dla windows w załączniku , miłego oglądania<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 6 gru 2025, o 18:02 — Odpowiedzi 0 — Wyświetlone 651</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Aven154]]></name></author>
<updated>2025-12-04T16:36:51+01:00</updated>
<published>2025-12-04T16:36:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24876&amp;p=239346#p239346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24876&amp;p=239346#p239346"/>
<title type="html"><![CDATA[Dział &quot;RYBNY&quot; • Problem z odczytaniem sygnału z odbiornika 433MHz]]></title>

<category term="Dział &quot;RYBNY&quot;" scheme="https://forum.atnel.pl/viewforum.php?f=30" label="Dział &quot;RYBNY&quot;"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24876&amp;p=239346#p239346"><![CDATA[
Witam mam problem z kodem a mianowicie to tak Atmega32 interpretuje odebrany sygnał przerabiając kod z green booka chciałem uzyskać na nadajniku preambułę&gt;przerwę&gt;bajt danych co mi się udało co widać na zdjęciu. Natomiast nie potrafię za żadne skarby wyświetlić tego bajtu na lcd jedyne co otrzymuję to wszystko tylko nie wysłany bajt. Koniecznie potrzebuję to w okrojonej formie czyt.preambułę&gt;przerwę&gt;bajt bo potrzebuję tego do szkoły jeśli znajdzie się jakaś miła duszyczka co mi w tym pomoże jestem w stanie odwdzięczyć się za pomoc. Poniżej wklejam kawałki kodu<br />Nadajnik<br />[syntax=c]while(1) {//ciągle wysyłanie do ponownego brejka przyciskiem<br />//wysłanie preambuły<br />man_sync(0);<br />//man_send_byte(9, 1); -----//orginalne<br />man_send_byte(9,1);<br />//wyslanie ramki z bajtem =9; toogle = 1<br />RADIO_OFF;<br /><br />mk_delay_ms(1000);<br />if(brejk) break;<br />}[/syntax]<br />Odbiornik<br />[syntax=c]ISR(TIMER1_CAPT_vect) {<br />// zmienne na potrzeby obs�ugi przerwania<br />static uint16_t LastCapture;<br />uint16_t PulseWidth;<br />static uint8_t IrPulseCount;<br />static uint32_t IrData;<br />static enum STAT { FRAME_RESTART, FRAME_OK } frame_status;<br />/*uint8_t tbit=0;<br />uint8_t nbajt=0;*/<br />static uint8_t mancnt;<br />//static uint8_t last_toggle;<br /><br />PulseWidth = ICR1 - LastCapture;// pomiar impulsu<br />LastCapture = ICR1;<br /><br />TCCR1B ^= (1&lt;&lt;ICES1);// zmiana zbocza wyzwalaj�cego na przeciwne<br /><br />// gdy czas by� d�u�szy ni� MAX_BIT - pocz�tek ramki danych<br />if (PulseWidth &gt; MAX_BIT )<br />mancnt = 0;<br /><br />// zainicjowanie odbioru ramki danych<br />if (mancnt == 0) {<br />IrData = 0;<br />IrPulseCount = 0;<br />//TCCR1B |= (1&lt;&lt;ICES1);<br />mancnt++;<br />frame_status = FRAME_OK;<br />}<br />else<br />if (frame_status == FRAME_OK) {<br />// gdy zak��cenia (szpilki) - RESTART<br />if ( PulseWidth &lt; MIN_HALF_BIT ) frame_status = FRAME_RESTART;<br /><br />// gdy b��d ramki danych (mo�e inny standard ni� RC5) RESTART<br />if ( PulseWidth &gt; MAX_BIT ) frame_status = FRAME_RESTART;<br /><br />if (frame_status == FRAME_OK) {<br /><br />// mo�na w��czy� aby zobaczy� miganie diody LED<br />// gdy pracuje przerwanie w trakcie pojawiaj�cych<br />// si� szum�w na wej�ciu odbiornika<br />//PORTB ^= (1&lt;&lt;PB6);____________________________________________________________________<br /><br />// zwi�kszamy licznik gdy czas d�u�szy ni� HALF_BIT<br />// aby zawsze reagowa� na �rodkowe zbocze<br />if (PulseWidth &gt; MAX_HALF_BIT) mancnt++;<br /><br />if ( (mancnt % 2) == 0 ) {<br /><br />IrData = IrData &lt;&lt; 1;// przesuwamy bity w lewo<br />// je�li zbocze narastaj�ce to bit = 1<br />if ( (TCCR1B &amp; (1&lt;&lt;ICES1)) ) IrData |= 0x0001;<br /><br />IrPulseCount++;// zwi�kszamy licznik odebranych bit�w<br />if (IrPulseCount == 8){// je�li odebrano pe�n� ramk�<br />//napewno 23 ?????????????????????????????????????????????????????????????????????????????<br />// je�li u�ytkownik obs�u�y� ju� poprzedni� ramk�<br />if (Manchester_flag == 0){<br /><br />bajt = IrData &amp; 0xFF;// w�a�ciwy bajt danych<br />if (bajt != 0) {<br />            Manchester_flag = 1;<br />        } else {<br />             // Jeśli odebrano 0 (preambułę), traktujemy to jako restart szukania<br />             // żeby nie blokować flagi dla właściwych danych<br />             frame_status = FRAME_RESTART;<br />        }<br />}<br />}<br /><br />// restart odbioru po zako�czeniu dekodowania ramki<br /><br />}<br /><br />mancnt++;<br />}<br />}[/syntax]<br /><br /><br /> <a href="https://obrazkiforum.atnel.pl/22247/fe344a8a7ddcdf469b4ef88d42eb78a9.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/22247/fe344a8a7ddcdf469b4ef88d42eb78a9.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22247">Aven154</a> — 4 gru 2025, o 16:36 — Odpowiedzi 8 — Wyświetlone 1223</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mocartp]]></name></author>
<updated>2025-12-03T18:40:54+01:00</updated>
<published>2025-12-03T18:40:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24875&amp;p=239345#p239345</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24875&amp;p=239345#p239345"/>
<title type="html"><![CDATA[Język C dla AVR • Programowanie Wifi przez FOTA]]></title>

<category term="Język C dla AVR" scheme="https://forum.atnel.pl/viewforum.php?f=4" label="Język C dla AVR"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24875&amp;p=239345#p239345"><![CDATA[
Witam.<br />Szukam pomocy w rozumieniu metody komunikacji i wgrywania wsadu przy pomocy FOTA.<br />Program Mirka   AtnelWiFiTools ma taką możliwość. Chodzi mi o zrozumienie może takie schematyczne  jak modół ESP 8266 musi być podłączony i wjakiej kofiguracji żeby było możliwe wgranie wsadu do w/w <br />ESP?<br />A następnie jak ustawić adresty i porty w AtnelWiFiTools może na początek poproszę o schemat blokowy gdzie powinien być zalogowany ESP. Posiadam na pokładzie zakupione właśnie ATNEL WIFI ESP i modóły z firmware ATNELA<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20685">mocartp</a> — 3 gru 2025, o 18:40 — Odpowiedzi 2 — Wyświetlone 698</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-11-27T16:25:25+01:00</updated>
<published>2025-11-27T16:25:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24874&amp;p=239344#p239344</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24874&amp;p=239344#p239344"/>
<title type="html"><![CDATA[Luźne dyskusje • Zapraszam do wspólnej zabawy ...]]></title>

<category term="Luźne dyskusje" scheme="https://forum.atnel.pl/viewforum.php?f=24" label="Luźne dyskusje"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24874&amp;p=239344#p239344"><![CDATA[
Jaki masz pomysł? – Napiszmy to wspólnie w Go!  <br /><br /><br /><br />Hej, miłośnicy klawiatury i kreatywnego kodu!<br />Macie pomysł na genialny program, który zmieni świat… albo przynajmniej Twój komputer? <br />A może od dawna marzysz, żeby napisać coś w Go, ale samodzielnie brakuje Ci odwagi… albo kubka czy dwóch kawy? <br /><br />Mam dla Ciebie rozwiązanie: „Jaki masz pomysł? – Napiszmy to wspólnie w Go!”<br /><br /><a href="https://forum.lothar-team.pl/viewtopic.php?t=1076"  class="postlink">https://forum.lothar-team.pl/viewtopic.php?t=1076</a><br /><br />Nie ważne, czy Twój pomysł to kosmiczny kalkulator, wirtualny piesek, czy generator losowych wymówek <br />Go jest gotowe na wszystko.Dołącz do akcji, bo programowanie w grupie jest jak pizza <br />– zawsze lepsze, gdy się dzieli. <br /><br />Gotowi? Zaczynamy! Pokażmy światu, że w Go siła jest nie tylko w goroutines… ale też w dobrej zabawie! <br /><br />Z takich pomysłów powstały już na naszym forum:<br /><br /><!-- m --><a class="postlink" href="https://forum.lothar-team.pl/viewtopic.php?t=1062" >https://forum.lothar-team.pl/viewtopic.php?t=1062</a><!-- m --><br /><!-- m --><a class="postlink" href="https://forum.lothar-team.pl/viewtopic.php?t=1075" >https://forum.lothar-team.pl/viewtopic.php?t=1075</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 27 lis 2025, o 16:25 — Odpowiedzi 0 — Wyświetlone 428</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[slawekslom]]></name></author>
<updated>2025-11-25T12:21:35+01:00</updated>
<published>2025-11-25T12:21:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24871&amp;p=239335#p239335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24871&amp;p=239335#p239335"/>
<title type="html"><![CDATA[Luźne dyskusje • Przywitanie]]></title>

<category term="Luźne dyskusje" scheme="https://forum.atnel.pl/viewforum.php?f=24" label="Luźne dyskusje"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24871&amp;p=239335#p239335"><![CDATA[
Witam wszystkich<br /><br />Jestem nowym użytkownikiem forum<br />Będzie mnie przede wszystkim interesowała<br />sprawa Home Assistant<br /><br />Jeszcze raz WITAM<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22006">slawekslom</a> — 25 lis 2025, o 12:21 — Odpowiedzi 0 — Wyświetlone 330</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki54]]></name></author>
<updated>2025-11-21T14:09:53+01:00</updated>
<published>2025-11-21T14:09:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24870&amp;p=239332#p239332</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24870&amp;p=239332#p239332"/>
<title type="html"><![CDATA[Arduino C++ • Jak Sterować przekażnikiem z świata]]></title>

<category term="Arduino C++" scheme="https://forum.atnel.pl/viewforum.php?f=47" label="Arduino C++"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24870&amp;p=239332#p239332"><![CDATA[
Witam <br />Chciałbym sterować ośmioma przekażnikami za pomocą ESP32 przez wifi <br />poza siecią lokalną z androida  telefonu<br />Jak tego dokonać w możliwie prosty sposób ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22263">miki54</a> — 21 lis 2025, o 14:09 — Odpowiedzi 3 — Wyświetlone 780</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2025-11-08T18:45:34+01:00</updated>
<published>2025-11-08T18:45:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24869&amp;p=239330#p239330</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24869&amp;p=239330#p239330"/>
<title type="html"><![CDATA[Programowanie w innych językach • Golang -- Moje droga ....]]></title>

<category term="Programowanie w innych językach" scheme="https://forum.atnel.pl/viewforum.php?f=61" label="Programowanie w innych językach"/>
<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24869&amp;p=239330#p239330"><![CDATA[
Jakiś czas już programuje w Go, stworzyłem kilka projektów i kilka mniej lub bardziej użytecznych programików.<br />osobiście zdecydowanie jestem już poza etapem juniora , teraz zbliżam się do etapu senior, oczywiście żaden ze mnie guru <br />wciąż się uczę i choc swobodnie przenoszę na kod nie tylko swoje pomysły,  to wciąż wiele nauki przede mną. Niemniej jest to już <br />taki etap w którym mogę sobie pozwolić na pewne przemyślenia czyli jak zaczyna się każda<strong><em> gołowa</em></strong> przygoda ...<br /><br />Na początku jest cisza ............  wstawiłbym tu jakiś &quot;silence box&quot; w środku ciemnego lasu ......................<br />Mam oto nowy projekt, w nim pusty plik main.go i serce pełne entuzjazmu.<br />Ładuję przykładowy program &gt; słynne Hello World &lt;&lt; patrząc na magiczne napisy ....<br />Otwieram terminal, wpisuję magiczne go run . Czuję się jak czarodziej.... <br />I nagle otwiera się portal nowych możliwości i magii i właśnie odkryłem magiczną formułę -  fmt.Println().<br /><br />Potem przychodzi czas na napisanie czegokolwiek .....  <br /><br /><br /><strong>Etap 1: Odkrywca</strong><br /><br />„Wow! Goroutines! To jak wątek, tylko szybszy!”<br /><br /><br />[syntax=c]for i := 0; i &lt; 10; i++ {<br />go fmt.Println(&quot;Witaj z goroutine&quot;, i)<br />}[/syntax]<br /><br /><br /><strong>Komentarz:</strong>  Hura działa!<br />A potem.... nie działa.<br />A potem działa....  z kolejnością 9, 2, 5, 0, 7, 1… i nie wiem, dlaczego.<br />To Go uczy mnie pierwszej lekcji: „deterministyczność jest dla słabych.”<br /><br /><strong>Etap 2: Optymista</strong><br /><br />„Nie potrzebuję sync.WaitGroup, ja czuję, kiedy goroutine się skończy.”<br /><br /><br />[syntax=c]go doSomething()<br />fmt.Println(&quot;Gotowe!&quot;)[/syntax]<br /><br /><br /><strong>Komentarz:</strong> fiuuu  i w sumie gotowe… tylko doSomething() jeszcze trwa... trwa... trwa ....<br />to właśnie pierwszy kontakt z asynchronią.<br />i pierwsze zwątpienie w człowieczeństwo.<br /><br /><strong>Etap 3: Panikujący</strong><br /><br />„Nie wiem, czemu się zawiesiło, ale spróbuję to naprawić… close(ch)?”<br /><br /><br />[syntax=c]for v := range ch {<br />fmt.Println(v)<br />}<br />close(ch)[/syntax]<br /><br /><br /><strong>Komentarz: </strong>panic: close of closed channel ...... Co jest przecież dobrze napisałem ...<br />I tak poznaje drugą brutalną zasadę Go:<br />Kanały są jak związki — zamyka tylko ten, kto wysyła.<br /><br /><strong>Etap 4: Debugger z modlitwą</strong><br /><br />„Nie wiem, co się dzieje, więc dodałem fmt.Println(&quot;tu&quot;).”<br /><br /><br />[syntax=c]fmt.Println(&quot;1&quot;)<br />go doStuff()<br />fmt.Println(&quot;2&quot;)<br />fmt.Println(&quot;3&quot;)[/syntax]<br /><br /><strong>Komentarz: </strong>i nagle logi zaczynają żyć własnym życiem. Jakby coś opętało mój program ....<br />Widzisz „1”, potem „3”, potem panikę.<br />Moje fmt.Println stają się dla mnie religią.<br />To nic że logi przypominają hieroglify, ale przynajmniej coś się dzieje.<br /><br /><strong>Etap 5: Eksperymentator</strong><br /><br />„Słyszałem, że można użyć contextu. To pewnie coś fajnego.”<br /><br /><br />[syntax=c]ctx, cancel := context.WithCancel(context.Background())<br />go func() {<br />doSomething(ctx)<br />}()<br />defer cancel()[/syntax]<br /><br /><br /><strong>Komentarz:</strong> Wygląda profesjonalnie.<br />Nie mam absolutnie pojęcia, co to robi .....<br />Ale.... wygląda profesjonalnie.<br /><br /><strong>Etap 6: Tester przez przypadek</strong><br /><br />„Nie planowałem testów, ale go test i tak się odpaliło.”<br /><br /><br />[syntax=c]func TestMagic(t *testing.T) {<br />   if 2+2 != 5 {<br />       t.Fatal(&quot;czemu?&quot;)<br />   }<br />}[/syntax]<br /><br /><br /><strong>Komentarz: </strong> Pierwszy czerwony test.<br />Pierwsze t.Fatal().<br />Pierwsze przeczucie, że życie to pasmo niekończących się refaktorów.<br /><br /><strong>Etap 7: Pokora</strong><br /><br />„Nie wiem, czemu to działa. Ale działa.”<br /><br />[syntax=c]if err != nil {<br />  panic(err)<br />}[/syntax]<br /><br /><br /><strong>Komentarz:</strong>  to zdecydowanie najczęściej kopiowany fragment kodu w karierze każdego juniora.<br />Wiem już, że Go nie wybacza, ale nagradza za prostotę.<br />Zaczynam rozumieć: „im mniej magii, tym mniej bólu.”<br /><br /><strong>Podsumoiwanie etapu .... </strong><br /><br />W pewnym momencie, docieram wreszcie do etapu gdy  Go przestaje mnie zaskakiwać —<br />bo zaczyna mnie wychowywać. Z można powiedzieć uporem maniaka uczy cierpliwości, dyscypliny i tego, że:<br />- nil to nie wróg, tylko niezrozumiany przyjaciel,<br />- goroutine leak to po prostu sposób, w jaki runtime mówi „zrób przerwę”,<br />- a go vet to takie twoje lepsze ja, lub surowsze sumienie.<br />- i jeśli coś działa — nie pytaj dlaczego, tylko zrób commit.<br /><br />Dociera do mnie, że każdy senior kiedyś był juniorem.<br />Tylko...  niektórzy lepiej ukrywają swoje pierwsze panic(). <br />I wiem już, że powoli, powoli staję się seniorem,<br />Bo moje TODO brzmi już nie jak plan,<br />ale jak pożegnanie.<br /><br />Tymczasem znów minęło kilka miesięcy i kilkadziesiąt kodów i projektów za mną.  zaliczam kolejny etap .... <br />tu wydaje mi się, że moje przemyślenia mogą być już znacznie głębsze bardziej pewne siebie .... ale .... to tylko złudzenie, <br />to  etap przejściowy pomiędzy naiwnym entuzjazmem, a cynicznym spokojem.<br />To moment, gdy wiem już, że Go nie wybacza… ale,  nadal próbuję z nim dyskutować.  A co .... przecież jestem mądrzejszy ... prawda ?<br /><br /><strong>„jeszcze walczę, ale już wiem, z czym”</strong><br /><br />Mam już dawno za sobą pierwszego panika, kilka race condition i jeden tajemniczy deadlock, który....  „zniknął sam” --&gt; magia ? , a może ingerencja obcych ? <br />Znam context, sync, interface{} i wierzę szczerze, że umiem je kontrolować. Tymczasem to w brew temu co się wydaje, to najniebezpieczniejszy etap kariery w Go...<br />na etapie MID --- wszystko się nam tylko wydaje  .....<br /><br /><strong>Etap 1: Mam misję ...</strong><br /><br />„Napisałem własny framework, bo standardowa biblioteka jest zbyt prosta.”<br /><br /><br />[syntax=c]func HandleRequest(req *Request) Response {<br />mw := &#91;&#93;Middleware{Log, Auth, RateLimit, Recover}<br />return Chain(mw...)(req)<br />}[/syntax]<br /><br />Wygląda świetnie.<br />Działa… dopóki .... nie działa.<br />Zaczynam wierzyć, że prostota jest przereklamowana, że to taki chwyt marketingowy .....<br />Do czasu..... aż nil pointer przypomina mi brutalnie, skąd przyszedł.<br /><br /><strong>Etap 2: Władca Goroutines</strong><br /><br />„Używam errgroup — jestem profesjonalistą.”<br /><br /><br />[syntax=c]g, ctx := errgroup.WithContext(context.Background())<br /><br />for _, job := range jobs {<br />   job := job<br />   g.Go(func() error {<br />       return job.Run(ctx)<br />    })<br />}<br /><br />if err := g.Wait(); err != nil {<br />     log.Println(&quot;błąd grupy:&quot;, err)<br />}[/syntax]<br /><br />Mam pełną kontrolę nad współbieżnością. To cudowne uczucie ... jestem bogiem ...<br />Do momentu, gdy ktoś dorzucił go func() w środku job.Run()…<br />i nagle moja cudowna grupa robi się bardziej anarchiczna niż zorganizowana.<br />Koszmar z przed miesięcy powraca ....<br /><br /><strong>Etap 3: Ekspert od błędów</strong><br /><br />„Używam errors.Join, bo tak jest nowocześnie.”<br /><br /><br />[syntax=c]err := errors.Join(dbErr, cacheErr, apiErr)<br />if err != nil {<br />log.Println(&quot;kombinowany błąd:&quot;, err)<br />}[/syntax]<br /><br /><br />Teraz mam jeden błąd,   błąd który zawiera trzy błędy, które zawierają jeden główny błąd — brak sensu.<br />Ale... przynajmniej jest idiomatyczne... <br /><br /><strong>Etap 4: Refaktorysta</strong><br /><br />„Nie podoba mi się context.Context – napiszę własny.”<br /><br /><br />[syntax=c]type MyContext struct {<br />Done chan struct{}<br />Data map&#91;string&#93;any<br />}[/syntax]<br /><br /><br />Nie podobał mi się globalny context, więc stworzyłem potwora - taki lokalny problem globalny .<br />Mogę sobie pogratulować  – od teraz jestem oficjalnie Go-midem.  Mogę sobie przyznać order z ziemniaka...<br /><br /><strong>Etap 5: Tester z misją</strong><br /><br />„Pokrycie testami 90%! Tylko.... nikt nie wie, co testują.”<br /><br />[syntax=c]func TestSomething(t *testing.T) {<br />got := DoIt()<br />want := DoIt()<br />if got != want {<br />t.Errorf(&quot;expected %v, got %v&quot;, want, got)<br />}<br />}[/syntax]<br /><br /><br />Nie, nie to nie jest żaden test, to dialog między dwiema kopiami tej samej funkcji.<br />Ale w raporcie CI wygląda pięknie.<br /><br /><strong>Etap 6: Filozof runtime’u</strong><br /><br />„Nie wiem, kto odpala te goroutines, ale najwyraźniej są szczęśliwe.”<br /><br /><br />[syntax=c]for {<br />go doBackgroundTask()<br />time.Sleep(time.Second)<br />}[/syntax]<br /><br /><br />Mam goroutines, które żyją dłużej niż niektóre projekty, mówi się , że przetrwają ludzkość ....<br />Wiem, że to źle, ale… przecież runtime się nie skarży.<br /><br /><strong>Etap 7: Pragmatyczny zen</strong><br /><br />„To nie bug, to emergentne zachowanie systemu.”<br /><br /><br />[syntax=c]select {<br />case &lt;-ctx.Done():<br />return<br />default:<br />// żyj chwilą<br />}[/syntax]<br /><br /><br />Nie szukam już doskonałości, jestem nią .... <br />Teraz poszukuję równowagi.<br />Bo już wiem, że Go to nie język programowania – to styl życia.<br /><br /><strong>Podsumowanie tego etapu </strong><br /><br />Mid to stan przejściowy między „chcę wszystko przepisać”, a „niczego nie dotykam, bo działa.”  <br />To moment, w którym zaczynam wreszcie rozumieć, że idiomatyczne Go to nie reguły — to proces dojrzewania.<br /><br />Ale znów mija kilka miesięcy i klika projektów i programów mniej więcej znajduję się tu teraz. <br />Czyli w miejscu z którego wyraźnie widać jak z czasem zmienia się moje if err != nil<br /><br /><strong>Etap 1: Idealista</strong><br /><br />„Każdy błąd musi mieć sens.”<br /><br /><br />[syntax=c]if err != nil {<br />return fmt.Errorf(&quot;nie udało się wczytać pliku: %w&quot;, err)<br />}[/syntax]<br /><br /><br />Czysto, pięknie, zgodnie z konwencją.<br />Właściwie to jestem dumą dla każdej codereview.<br /><br /><strong>Etap 2: Pragmatyk</strong><br /><br />„Nie ma co przesadzać.”<br /><br />[syntax=c]if err != nil {<br />return err<br />}[/syntax]<br /><br />Minimalizm absolutny...<br />Mniej słów, więcej spokoju.<br />Wreszcie pojawia się zen.<br /><br /><strong>Etap 3: Realista</strong><br /><br />„Nie wiem, czemu znowu nie działa, ale lognę.”<br /><br /><br />[syntax=c]if err != nil {<br />log.Println(&quot;coś poszło nie tak:&quot;, err)<br />}[/syntax]<br /><br /><br />Nie naprawiam  – obserwuję.<br />To już nie jest zwykły błąd, to informacja zwrotna od wszechświata.<br /><br /><strong>Etap 4: Filozof</strong><br /><br />„Nie ma błędów, są tylko ścieżki alternatywne.”<br /><br />[syntax=c]_ = doSomething()[/syntax]<br /><br />Cisza....<br />Żadnych logów, żadnych błędów.....<br />Osiągnąłem nirwanę !!!<br /><br /><strong>Etap 5: Senior</strong><br /><br />„if err != nil { this is fine }”<br /><br />[syntax=c]if err != nil {<br />// TODO: naprawić kiedyś  (fajnie to wygląda w kodzie nie?  Gufim?) <br />}[/syntax]<br /><br />Znam wszystkie bugi, ale żyję z nimi w harmonii.,,<br />Wiem, że stabilność projektu to stan umysłu....<br /><br /><strong>Epilog Epilogu</strong><br /><br />Go nauczył mnie:<br />-- popełniać błędy idiomatycznie,<br />-- potrafię napisać od ręki taki race condition, którego nawet go vet się nie spodziewa,<br />-- zdaję sobie sprawę , że context to nie tylko „kontekst” — to stan emocjonalny programisty.<br />-- perfekcja jest przereklamowana,<br />-- umiem pisać funkcje bez argumentów, które ....  i tak zwracają błędy.<br />-- umiem perfekcyjnie użyć sync.WaitGroup, żeby poczekać...  poczekać na coś, co już się zawiesiło.<br />-- umiem zrobić slice, taki specjalny slice,  który dzieli pamięć z trzech innych slice’ów, a każdy z nich zmienia coś innego.<br />-- dokumentacja to też kod,<br />-- a panic() ?  to tylko manifest pasji. <br />-- i przede wszystkim: wiem, że := <strong>to broń masowego shadowingu.</strong><br /><br /><br />Pozostaje mi jeszcze jeden etap. Etap w którym zapewne odkryję wejście do Narni , albo Matrixa , ale na pewno się podzielę z wami<br />moimi przemyśleniami ...    w tej chwili na pewno możecie zapamiętać te kilka zasad , choć bardziej nazwałbym to:<br /><br />Objawione prawdy Go !!!!<br /><br />---&gt; <em>panic()</em> nie rozwiązuje problemów, ale przynajmniej robi je głośnymi.<br />---&gt; <em>context.WithTimeou</em>t zawsze wygasa wtedy, gdy właśnie zaczyna działać.<br />---&gt; <em>go fmt </em>nie naprawi Twojego życia, ale sprawi, że będzie wyglądało schludnie.<br />---&gt; <em>defer</em> jest jak obietnica — złożona przez kogoś, kto już dawno odszedł z projektu.<br />---&gt; <em>interface{}</em> to taki wieeeeeeeeellllllki worek — wszystko się zmieści, ale potem nikt nie wie, co tam jest i po co.<br />---&gt; <em>errgroup </em>to świetny sposób na współdzieloną katastrofę.<br />---&gt; <em>„idiomatyczne Go”</em> znaczy: „napisz tak, żeby nie dało się tego poprawić bez flame waru na GitHubie.”<br />Na koniec zostaje nam <em>nil...</em>,  a nil... nil zawsze czeka.  <br /><br />Na ciąg dalszy przyjdzie jeszcze poczekać… droga przede mną długa. Ale myślę, że to dobry moment na morał – nie tylko z tej opowieści, <br />ale z całego materiału w <a href="https://forum.lothar-team.pl//viewforum.php?f=134"  class="postlink">&gt;&gt;&gt; cookbooku &lt;&lt;&lt;</a>. Coś, do czego warto wracać. <br /><br />Nowy język kusi i ekscytuje, ale droga do mistrzostwa w Go bywa męcząca. Relacja z nim jest trudna, choć jego prostota bije po oczach niczym LED-y w starym gracie.<br /><br />Go nie jest sexy – ale jak każda zdrowa relacja, daje stabilność.<br />W Go nie chodzi o klasę, tylko o package main.<br />Nie chodzi w nim o dziedziczenie, tylko o kompozycję cierpliwości i logów.<br /><br />A jeśli kiedyś Twoje go build przejdzie za pierwszym razem…  --- sprawdź, czy na pewno jesteś w dobrym katalogu. <br /><br />Go to język dla tych, którzy chcą zbudować coś, co przetrwa. I w tym – w prostocie i cierpliwości – kryje się jego piękno.<br /><br />Zapamiętaj, młody padawanie Go:<br /><br />Kiedy patrzysz w goroutine,<br />goroutine patrzy w Ciebie.<br />Przyszłość widzi Twą – a jasna ona nie jest…<br />Nie wszystkie one znikną. Niektóre z nich są niemal nieśmiertelne.<br />Zostaną na długo po Tobie ..... <br /><br />,  a nil ??   .... wciąż czeka ...... <br /><br />Więcej .... znajdziecie <a href="https://forum.lothar-team.pl/viewforum.php?f=123"  class="postlink">&gt;&gt;&gt; tutaj &lt;&lt;&lt;</a>przyjaciele ...  zapraszam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 8 lis 2025, o 18:45 — Odpowiedzi 0 — Wyświetlone 1004</p><hr />
]]></content>
</entry>
</feed>