Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 06:24


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
    Autor Wiadomość
    PostNapisane: 3 cze 2015, o 22:19 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    Próbuję analizować kod i zrozumieć jak działa sterowanie wyświetlacza LEDowego ...
    Poczytałem trochę w niebieskiej książce ... trochę zaczynam rozumieć ... no to mówię wgram sobie sobie do mikrokontrolera na próbę przykład z płyty: 04_LED.
    Znalazłem erratę Mirka odnośnie kodu w pliku lcd44780.c i podmieniłem na poprawiony ...
    Zrobiłem sobie płytkę do testów na Atmega 8 z LCD na której uruchomiłem kilka prostych programików i działa bez zarzutu.
    Niestety przy próbie skompilowania przykładu ( kod jest dziewiczy , czyli taki jak go stworzył Mirek ) otrzymuję błędy i niestety na razie nie potrafię ich usunąć bo nie wiem za bardzo co oznacza komunikat kompilatora . Wytłumaczcie mi proszę o co chodzi jeśli ktoś kuma o co chodzi z tym komunikatem kompilatora :

    Building file: ../main.c
    Invoking: AVR Compiler
    avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=8000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
    ../main.c:17:14: error: variable 'tab1' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
    ../main.c:22:9: error: variable 'znak_buzka' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
    ../main.c:23:9: error: variable 'znak_termo' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
    ../main.c: In function 'main':
    ../main.c:36:2: warning: passing argument 1 of 'lcd_str_P' discards 'const' qualifier from pointer target type [enabled by default]
    In file included from ../main.c:11:0:
    ../LCD/lcd44780.h:172:6: note: expected 'char *' but argument is of type 'const char *'
    make: *** [main.o] Błąd 1

    A tutaj część kodu której dotyczą błędy wykryte przez kompilator:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 cze 2015, o 22:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 02 sty 2014
    Posty: 39
    Lokalizacja: Pszczyna
    Pomógł: 4

    Nowy toolchain Atmela wymaga dopisku "const" przy elementach pobieranych z pamięci flash np:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Dopisz const do wszystkich elementów z dopiskiem PROGMEM.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 cze 2015, o 23:04 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    tomek napisał(a):
    Wytłumaczcie mi proszę o co chodzi jeśli ktoś kuma o co chodzi z tym komunikatem kompilatora :

    Jak rozumiem masz jedno z NAJSTARSZYCH wydań książki, minęło już MNÓSTWO czasu od jej wydania - i WSZYSTKO poszło do przodu. Tak więc mamy już nowszy toolchain czyli kompilator, nowsze eclipse itd itp ....

    żeby nadążyć możesz pójść dwoma drogami:

    1. Samemu naprawiać błędy (które wynikają z tego że używasz teraz nowszego toolchaina w porównaniu do tego ze starej książki) na podstawie poradników z mojego bloga - zajrzyj sobie pan np tutaj: http://mirekk36.blogspot.com/2012/08/ec ... zytaj.html

    2. albo dokupić sobie np przynajmniej samą płytkę DVD z nowszego wydania książki w naszym sklepie www.sklep.atnel.pl ... bo na niej już są kody uaktualnione do nowszego toolchaina

    czytaj generalnie mojego bloga - inne poradniki z "kącika języka C" szczególnie i oglądaj inne moje poradniki na YT ....

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 cze 2015, o 23:27 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    szymon12w napisał(a):
    Nowy toolchain Atmela wymaga dopisku "const" przy elementach pobieranych z pamięci flash np:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Dopisz const do wszystkich elementów z dopiskiem PROGMEM.


    próbowałem już dopisać const zanim napisałem na forum. niestety błąd nie znika ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 cze 2015, o 23:29 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    tomek napisał(a):
    niestety błąd nie znika

    Znika znika - tylko musisz chcieć poczytać ten link na bloga co ci podałem

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 cze 2015, o 23:54 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    mirekk36 napisał(a):
    tomek napisał(a):
    Wytłumaczcie mi proszę o co chodzi jeśli ktoś kuma o co chodzi z tym komunikatem kompilatora :

    Jak rozumiem masz jedno z NAJSTARSZYCH wydań książki, minęło już MNÓSTWO czasu od jej wydania - i WSZYSTKO poszło do przodu. Tak więc mamy już nowszy toolchain czyli kompilator, nowsze eclipse itd itp ....



    Dokładnie .. Nie pamiętasz ... jak kiedyś "marudziłem" że książka nie jest zszywana i pewnie mi się rozleci ? ... ;-)
    Mam wydanie I z roku 2011 . Dostałem potem od Ciebie zniżki na książki dla kumpli ale oni też kupili w tym okresie co ja więc płyty mają te same ...
    Z prostymi błędami dzięki temu co wyczytałem z Twoich książek ( zieloną też zakupiłem ) jakoś tam sobie radzę ale teraz nie wiem jak to przejść ...
    Nie chcę raczej kupować "gotowca" bo nic się z tego nie nauczę jak wklepię gotowy kod .... ale dzięki za linka poczytam najpierw ....

    Próbowałem też trochę zaglądać do wnętrza itoa() którą używasz do konwersji z hex na stringi przy funkcji wyświetlającej znaki na LCD.
    Potrzebuję wyświetlać bardzo duże liczby ( unsigned long ) i próbuję na bazie Twoich bibliotek opanować wyświetlanie i napisać obsługę wyświetlania
    która będzie zawierała tylko proste wyświetlanie cyfr o wielkości rzędu 50 000 000.
    Walka z problemami jakie wynikają z problemów składni której nie toleruje jak piszesz nowa wersja kompilatora jeszcze niestety mnie przerastają ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 00:20 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    itoa() - to Integer to ASCII

    więc nie wyświetlisz tak dużej liczby

    zainteresuj się więc podmianą tej funkcji na

    ltoa() - czyli LONG Integer to ASCII

    albo

    utoa() - Unsigned Long to ASCII itp ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 11:15 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    Tak tak już ... "przeryłem" trochę wnętrze : stdlib.h ;) i dotarłem ltoa i utoa ... Generalnie potrzebuję wyświetlać dziesiętnie na LCD liczby zapisane na 4 bajtach w hexa ....
    Zanim trafiłem na itoa() i jej starszych braci próbowałem sam pisać algorytm funkcji do takiej konwersji ... to dobra gimnastyka dla umysłu tym bardziej że w zależności od tego na jakim poziomie programowania jesteś można napisać działające algorytmy mniejsze lub większe jeśli chodzi o kod ....
    Ale to nie ma praktycznego sensu bo rzadko kiedy jesteśmy w stanie dogonić zawodowych programistów którzy zęby zjedli na pisaniu optymalnego kodu ...
    Dziś świąteczny dzień i teoretycznie trochę wolniejszego czasu ... więc zaraz wchłonę to co podałeś mi linku ....
    A swoją drogą dla Mirek jesteś tytan pracy ...kiedy to z tym wszystkim nadążasz ..... :shock:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 11:32 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    tomek napisał(a):
    .kiedy to z tym wszystkim nadążasz .....

    sam się wciąż zastanawiam :lol:

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 12:13 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    Nauczyłem się od Ciebie wielu fajnych rzeczy jeśli chodzi o C i programowanie przez te parę lat ale teraz widząc ile spraw ogarniasz na co dzień jednocześnie, sumienie nie pozwala mi pisać do Ciebie wprost z prośbą o porady bo wiem jaki masz program dnia ..... Na szczęście na forum jest wielu mądrych a jednocześnie życzliwych osób które chętnie pomogą i naprowadzą .....
    A swoją drogą Twoja Żonka to złota kobietka bo wiadomo: praca pracą .... zysk zyskiem ... ale zawsze wtedy Rodzinka spychana jest mówiąc naszym slangiem "na stos" hehe i " obsługiwana w przerwaniach " :lol:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 16:28 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    tomek napisał(a):
    hehe i " obsługiwana w przerwaniach "

    :lol: :lol: nie ma to jak elektroniczne określenia .... ale fakt .... żona jest w stanie wiele mi wybaczyć w tym zakresie ... i pomaga mi dużo

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 17:25 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    no to jesteś prawdziwym szczęściarzem w takim razie :D ale przepraszam za ten off topic i wracam już do bajtów ..... mam chwilę to poczytam materiały z linków od Ciebie i dam znać czy opanowałem błędy kompilatora w nowej wersji ....
    odpaliłem Juno i chyba ostatni toolchain Atmela ...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 21:17 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    poczytałem i już kumam ... poprawiłem treść ćwiczenia, dałem swoje dane na port wyświetlacza i wszystko ładnie się wyświetla z wszystkich rodzajów pamięci .... teraz zacznę kombinować z utoa() i usunę funkcje które do mojego wyświetlania nie będą potrzebne .... zobaczymy czy gra będzie warta świeczki czyli na ile zmniejszy się objętość skompilowanego kodu ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2015, o 23:10 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    tomek napisał(a):
    i usunę funkcje które do mojego wyświetlania nie będą potrzebne

    Nie rób tego bo to nie ma najmniejszego sensu, to się robi ustawieniem dla kompilatora ... Sam w tej chwili jestem na wyjeździe i z pamięci ci tego nie powiem. W najnowszym wydaniu Bluebooka - jest to DOKŁADNIE opisane (gdzie ustawić i co w opcjach projektu) i kompilują się TYLKO te funkcje które biorą udział w programie, a te które leżą odłogiem kompilator wyrzuca jak śmieci w trakcie kompilacji ;) ..... Więc ręczne dzierganie tego nie ma najmniejszego sensu.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 cze 2015, o 07:13 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    Jasne .... Moim zdaniem stworzyłeś bardzo zwięźle i bardzo dobrze dobrze napisany kod. Pewnie nawet sam Pan Bóg nie wiele tu poprawi żeby kod był bardziej optymalny.
    Doskonale pomaga ogarnąć i dostosować kompilację system opcji zero - jedynkowych. Taki sposób podejścia pozwala też łatwiej zrozumieć jak działa cały mechanizm, bo i ja bez problemu to ogarnąłem .... :D
    I tego ani nie kwestionuję bo to bardzo dobra i przemyślana ze wszech miar robota i się nie "czepiam" .... :D
    Ale ja się tego uczę, i chciałem porobić doświadczenia...... "po swojemu" spróbować dostosować mechanizmy które stworzyłeś do moich stosunkowo prostych potrzeb.
    Buduję sobie proste urządzenie ( jak zrobię to się pochwalę ;) ) którego parametry pracy mają być wyświetlane na LCD. Przyciski do sterowania mają działać interaktywnie czyli od razu po zmianie dowolnego parametru za pomocą przycisku, nowa wartość zostaje przesłana jako dyspozycja do układu wykonawczego i wyświetlacz od razu zostaje aktualizowany na bieżąco.
    Ale nie ma to się robić "bezmyślnie w kółko" tylko obsługa będzie za pomocą przerwań.
    Jak zrobię to się postaram "pochwalić" jak już będzie wszystko działało ... Kombinowanie nad tym sterowaniem i wyświetlaniem sprawia mi przyjemność. Pewnie jakby dobrze poszukał znalazłbym czy u Ciebie czy gdzieś w sieci gotowe rozwiązania jak to u mnie zrobić ale bardziej mi zależy żeby samemu ruszyć głową, nawet jeśli to co zrobię będzie prymitywne z punktu widzenia rasowego programisty .....
    Kiedyś trochę miałem do czynienia z klasycznym C więc teraz problem sprawia mi może nie sama składnia ale to że C dla mikrokontrolerów cały czas ewoluuje co widzę właśnie chociaż po tym
    że ten sam kod kompilatory z różnych okresów traktują w inny sposób. Poza tym piszemy tu na mikrokontrolery więc sama obsługa peryferiów czy interfejsów robi się bardzo dedykowana dla konkretnej rodziny scalaków ... Komunikaty błędów najczęściej są logiczne i pomagają znaleźć przyczynę jak się trochę poruszy szarymi komórkami ale w tym przypadku teraz jak ja miałem bez Twojej i kolegów z forum pomocy pewnie bym się zniechęcił i kręcił w kółko bo przecież kod napisałeś prawidłowo .....
    Skoro jesteś na "łikendowym" wyjeździe ... to miłego relaksu i odpoczynku do "prądów" całej Rodzince :lol: :lol: :lol:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 cze 2015, o 07:21 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    poczekaj może mnie źle zrozumiałeś - mi ABSOLUTNIE nie chodziło o to żeby ni e eksperymentować we własnym zakresie czy coś. ABSOLUTNIE nie chodziło mi o to żeby powiedzieć, że biblioteki z książek są najoptymalniejsze na świecie bo tak wręcz nie jest. Sporo kodu jest przedstawione w najprostszy sposób - tak żeby można go było lepiej zrozumieć .... więc własne zmiany i modyfikacje są wręcz zalecane ;)

    Mi TYLKO chodziło o zwrócenie uwagi na taką fajną opcję optymaizacji, która wywala wszystkie zbędne funkcje, bo to się bardzo bardzo przydaje

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 cze 2015, o 12:59 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    Nie bądź taki skromny Mirku .... :D
    Ale żeby nie być gołosłowny skoro mówisz o "prostocie" kodu dam Ci przykład czego się od Ciebie uczę ....
    Wybrałem przykładową prostą fukcję żeby na niej wytłumaczyć o co mi chodzi ...
    przykładowo:

    void lcd_cursor_off(void)
    {
    lcd_write_cmd( LCDC_ONOFF|LCDC_DISPLAYON);
    }
    #endif

    Jasne że funkcja jest prosta ... ale ja początkujący napisałbym coś w tym klimacie :
    np.
    void lcd_cursor_off(void)
    {
    mode= LCDC_ONOFF|LCDC_DISPLAYON
    lcd_write_cmd(mode);
    }
    #endif
    Pomijam deklaracje zmiennych itd bo nie o to teraz chodzi ...
    Czyli najpierw bym policzył a potem dopiero wynik wstawił .... bo dla początkującego tak jest logiczniej ...
    Nie przyszłoby mi nie do głowy że można to zapisać krócej i bardziej optymalnie .....
    Dlatego właśnie próbuję kombinować "po swojemu" bo a nuż widelec uda mi się coś wymyśleć od siebie ....
    Ale generalnie lubię Twoje książki właśnie z tego powodu że jest tam wiele przykładów kodu z opisem jak działa i do tego
    analizując kod uczę się myśleć bardziej w języku C nabierając dobrych nawyków a mniej na sposób "ludzki" ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO