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 13 maja 2025, o 05:53


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 31 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 12 sty 2015, o 13:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    No niestety, mimo przejrzenia pół internetu, obejrzeniu poradników Mirka o strukturach, kilku różnych przykładów mam mętlik w głowie i nie potrafię sprowadzić do wspólnego mianownika najprostszego zapisu istniejących zmiennych do EEPROM. Odzywają się chyba nawyki bascomowe, gdzie była po prostu instrukcja do odczytu i instrukcja do zapisu i więcej do szczęścia mi potrzeba nie było.
    W programie, który aktualnie robię nie myślałem o EEPROM od samego początku (w sensie programistycznym, bo założenia go oczywiście uwzględniały) i mając już zestaw zmiennych 8-o i 16-bitowych (które muszą mieć możliwość zapisu w EEPROM) kłopotliwe by było gdybym teraz musiał je przemianować na typ strukturalny i w całym programie czynić zmiany. Po prostu nie sądziłem, że zapis/odczyt w C działa na zupełnie innej płaszczyźnie i nie mówię, że to źle - wprost przeciwnie - przykładowo zapis całego bloku jest super... o ile się to rozumie.
    Najbardziej nie kumam tego ustalania adresu pod, który się zapisuje dane - EEMEM. Wszędzie w przykładach widzę tylko przy nim jakąś zmienną (ewentualnie tablicę). Wiem już, że to wskaźnik jakiś, ale nie potrafię zebrać myśli, żeby to ogarnąć. Czy może mi ktoś wytłumaczyć jak chłop chłopu jak zapisać te moje kilka zmiennych do eeprom i później je odczytać? Przy następnym programie uwzględnię już struktury. No chyba, że da się to moje jeszcze jakoś wpakować w blok aby nie rujnować programu (było by pięknie), bo w końcu to 1500 linii (może i nie dużo ale jednak trochę jest) to i ze znalezieniem błędu mogę mieć później problemy. Z góry dzięki :).

    _________________
    http://www.sylwekkuna.com



    Ostatnio edytowano 18 sie 2015, o 21:16 przez SylwekK, łącznie edytowano 1 raz

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

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Nie wiem czy to Ci pomoże bo ja raczkuję w C ale robię w sowich programach to w ten sposób i niby działa :)
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2015, o 13:45 
    Offline
    Moderator
    Avatar użytkownika

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

    ale oglądałeś dokładnie ten poradnik ? ;)
    http://mirekk36.blogspot.com/2012/11/av ... iazek.html

    SylwekK napisał(a):
    Odzywają się chyba nawyki bascomowe

    Jestem przekonany, że tak jest i pewnie jak zaskoczysz i w tym temacie, to później też będziesz mówił - że wcześniej to było nieporozumienie a w C robi się to bosko ;)

    SylwekK napisał(a):
    kłopotliwe by było gdybym teraz musiał je przemianować na typ strukturalny i w całym programie czynić zmiany.

    I już tu pomyśl - bo sam piszesz, że kłopotliwe byłoby żeby dokonywać zmiany w całym programie. DOKŁADNIE tak jest jak się ma przyzwyczajenia z Bascoma - późniejsze zmiany, konieczność dokonania nagle większych zmian to wręcz MASAKRA!, a w C ? ... zero problemu gdy korzystasz ze zmiennych ułożonych w tablicach czy strukturach itp .... I tu nie chodzi nawet o sam eeprom tylko w ogóle o podejście do przechowywania zmiennych ....

    SylwekK napisał(a):
    . Po prostu nie sądziłem, że zapis/odczyt w C działa na zupełnie innej płaszczyźnie

    Uwierz mi, że można nawet i w C robić tak jak w Bascomie pojedyncze zmienne i zapisywać je bezpośrednio i odczytywać z eeprom .... ale idąc tą drogą - sam już czujesz, że skarzesz się na dłuższą banicję - jeśli chodzi o WYGODY języka C i później będziesz, żałował że wcześniej się za to nie zabrałeś jak trzeba - tym bardziej widząc jak w innych wątkach wchłonąłeś wręcz jednym tchem pewne mechanizmy a później od razu władasz nimi jak mistrz szpadą ;)

    SylwekK napisał(a):
    Najbardziej nie kumam tego ustalania adresu pod, który się zapisuje dane - EEMEM.

    Po co ci adres ? programowanie w C .... to dlatego WYGODA że ABSOLUTNIE rozumiesz? ABSOLUTNIE czochrają cię adresy, adresy fizyczne - po jaki gwint sobie tym głowę zawracać - toż to tylko właśnie później same problemy ....

    SylwekK napisał(a):
    Czy może mi ktoś wytłumaczyć jak chłop chłopu jak zapisać te moje kilka zmiennych do eeprom i później je odczytać?

    Tzn łatwiej byłoby mi coś wytłumaczyć, gdybym np wiedział, że oglądałeś ten poradnik z linku, który pokazałem wyżej .... i wtedy gdybyś miał pytania do niego - to już by było można cię poprowadzić jak po nitce do kłębka a jednocześnie wręcz uzależnić cię od podejścia do tego zagadnienia tak jak się to robi w C ;) ... zresztą ty sam się później szybko uzależniasz ...

    teraz może w mega gigantycznym skrócie .... to o czym mówię w poradniku

    1. WSZYSTKIE zmienne które masz trzymać w eeprom zapakuj do jednej struktuty (tu mam nadzieję, że już coś wiesz na temat struktur w C)
    2. Oczywiście - zanim zrobisz punkt 1 to zdefiniuj najpierw sobie TYP STRUKTURALNY bo posłużysz się później nim do przechowywania tych zmiennych zarówno w RAM, EEPROM i FLASH jednocześnie ! więc już mega uproszczenie
    3. wobec powyższego - powołasz sobie aż TRZY komplety takich samych zmiennych tylko umieszczone w każdej pamięci

    TMOJEDANE eem_dane EEMEM; // komplet w eeprom
    TMOJEDANE ram_dane; // komplet w RAM
    TMOJEDANE pgm_dane PROGMEM = { // komplet we FLASH
    //.... tu inicjujesz dane DOMYŚLNE we FLASH
    }

    i teraz pomyśl sobie dzięki temu że trzymasz wartości DOMYŚLNE we FLASH - to czochra cię nawet sytuacja gdy padną one w eeprom albo gdy user sobie nabroi i chciałby "przywrócić ustawienia fabryczne" to w programie zrobisz to JEDNYM KLAWISZEM ! nawet przy starcie urządzenia - jak routerach - kojarzysz ? ;)

    i teraz przy STARCIE twojego programu WCZYTUJESZ za jednym zamachem CAŁĄ STRUKTURĘ czyli wszystko z EEPROM do RAM !!!! i teraz program działa sobie wygodnie CAŁY CZAS na egzemplarzach WSZYSTKICH TWOICH zmiennych ale w RAM - WYGODNY DOSTĘP NA MAXA dla ciebie .... a gdy userowi przyjdzie pomysł gdzieś w MENU urządzenia aby zmienić jakąś zmienną to co ??? .... CYK JEDNO polecenie i przepisujesz CAŁY BLOK Z RAM DO EEPROM !!!! po choinkę bawić się w pojedyncze zmienne ? można zrobić nawet UPDATE BLOCK, i zapisane zostaną tylko te zmienne z RAM które nie były zmienione od ostatniego restartu, chociaż to żadna różnica i można spokojnie robić ZAPIS CAŁOŚCI

    rozumiesz ? robiąc ZAPIS BLOK - od razu aktualizujesz WSZYSTKIE swoje zmienne i nie myślisz kompletnie w jakich komórkach one leżą - tym nie ma co sobie głowy zawracać.

    A ze zmiennych wewnątrz takiej struktury korzystasz w całym programie przecież DOKŁADNIE TAK SAMO jak z normalnych zmiennych no może poza tym że masz do zmiennej np o nazwie "pos" dostęp przez strukturę

    ram_dane.pos = 237;

    rozumiesz ? i TERAZ UWAŻAJ! ..... w Bascomie później żeby zmienić jakąś zmienną, dodać jakąś zmienną usunąć jakąś zmienną to musisz dopiero się NASZALEĆ po kodzie - a tu ??? .... a tu panie to tylko zaglądasz sobie do pliku *.h gdzie masz zdefiniowany własny typ strukturalny i w nim: dodajesz, zmieniasz, usuwasz - zmienne - no robisz co chcesz

    mając to wszystko na uwadze - spróbuj jeszcze raz obejrzeć ten poradnik i zadaj ew pytania do tego poradnika - to może będzie łatwiej?

    ------------------------ [ Dodano po: 1 minucie ]

    Jarecki napisał(a):
    Nie wiem czy to Ci pomoże bo ja raczkuję w C ale robię w sowich programach to w ten sposób i niby działa :)
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    No i to jest właśnie wypisz wymaluj - bascomowe podejście, które szybko "zaboli" :(

    polecam koledze także obejrzenie tego poradnika:
    http://mirekk36.blogspot.com/2012/11/av ... iazek.html

    przydał się już niejednej osobie i wszyscy go sobie bardzo cenią ...


    Autor postu otrzymał pochwałę

    _________________
    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: 12 sty 2015, o 14:50 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Cytuj:
    Jarecki napisał(a):
    Nie wiem czy to Ci pomoże bo ja raczkuję w C ale robię w sowich programach to w ten sposób i niby działa :)
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    No i to jest właśnie wypisz wymaluj - bascomowe podejście, które szybko "zaboli" :(

    polecam koledze także obejrzenie tego poradnika:
    http://mirekk36.blogspot.com/2012/11/av ... iazek.html

    przydał się już niejednej osobie i wszyscy go sobie bardzo cenią ...

    Tak Panie Mirku ma Pan rację z tym BASCOM-em :) bardzo chętnie obejrzę polecany przez Pana poradnik żebym spojrzał na eeprom jako programista C a nie BASCOM-a :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2015, o 18:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    Kurcze, panowie dzięki za błyskawiczną reakcję :) Przez chroniczny brak czasu dopiero teraz mogę odpisać. Mirku oglądałem oczywiście Twoje poradniki jak wspominałem tylko, że była godzina 2 w nocy to i coś mogłem przegapić, a i głowa nie pracuje już o tej porze jak powinna i pewnie trochę umknęło, ale dzięki Waszym postom chyba wreszcie załapałem o co tu biega. Pojedyncze utykanie bajtów w EEPROM z tego co widzę faktycznie nie ma chyba większego sensu no chyba, że mamy jedną góra dwie zmienne.
    No dobra, a jeszcze ta jedna moja zagwozdka związana (już z zasady wiedzieć żeby wiedzieć ;) ) z miejscem w pamięci EEPROM... Po przykładach w poradnikach jak i w BB (przy okazji omawiania struktur) doszedłem do wniosku, że kompilator sam znajduje miejsce w EEPROM gdzie ma upchać te zmienne z bloku (po prostu rezerwuje sobie tą pamięć podobnie jak ram) czy może jestem nadal w błędzie ?? Oczywiście pomijam tu przykłady przekazywania pojedynczych bajtów z przykładów pozostałych kolegów oprócz Mirka, bo to już jest jasne.
    W każdym razie doszedłem do wniosku, że szkoda by mi było w sumie skrupulatnie napisanego programu sterownika zapaćkać iście amatorskim rozwiązaniem zapełniania EEPROM dlatego podjąłem decyzje o podmianie zmiennych (strzeli się Find/Replace All i będzie git :) ).
    O to do jakich wniosków doszedłem:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Oczywiście te wszystkie przypisy "=coś tam" będą skasowane. Zostawiłem je tylko dla sprawdzenia przez Was czy właśnie dobrze kombinuję. Bo teraz idąc dalej tym tropem wystarczy zrobić funkcje kopiowania bloków wg poradników i w zasadzie to wszystko. Jeszcze chciałem się upewnić czy teraz w programie głównym do zmiennych np. "repeatSet=10", "kalib=12", itd... mam się odnosić odpowiednio "ram.repeatSet=10", "ram.kalib=12" ?
    Przyszło mi jeszcze do głowy, że w ten sposób mógłbym sobie łatwo zrobić kilka presetów przez dodanie po prostu:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    ... i odpowiednio komend kopiujących te obszary pamięci.
    Chyba dobrze kombinuję, czy znowu coś przegapiłem :mrgreen:

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2015, o 19:00 
    Offline
    Moderator
    Avatar użytkownika

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

    SylwekK napisał(a):
    doszedłem do wniosku, że kompilator sam znajduje miejsce w EEPROM gdzie ma upchać te zmienne z bloku (po prostu rezerwuje sobie tą pamięć podobnie jak ram) czy może jestem nadal w błędzie ??

    DOKŁADNIE TAK - nie jesteś w błędzie a już zaczynasz dostrzegać zalety ;) jak widzę

    SylwekK napisał(a):
    Jeszcze chciałem się upewnić czy teraz w programie głównym do zmiennych np. "repeatSet=10", "kalib=12", itd... mam się odnosić odpowiednio "ram.repeatSet=10", "ram.kalib=12" ?

    DOKŁADNIE TAK - chyba że gdzieś będziesz korzystał ze wskaźników do struktur .... w razie czego wesprzyj się jeszcze tym poradnikiem:
    http://mirekk36.blogspot.com/2013/07/st ... adnie.html

    SylwekK napisał(a):
    Przyszło mi jeszcze do głowy, że w ten sposób mógłbym sobie łatwo zrobić kilka presetów przez dodanie po prostu:

    Oczywiście że TAK - to co pokazałem w poradniku to TYLKO pewien przykład, struktury można dzielić, korzystać jeszcze do tego z UNII itp itd

    zwróć tylko uwagę że jeśli miałbyś zrobić kilka presetów to:

    to można je wszystkie zamknąć jeszcze w nadrzędnej strukturze ;) tak żeby była jedna wielka a w jej brzuchu różne presety ;)

    SylwekK napisał(a):
    Chyba dobrze kombinuję, czy znowu coś przegapiłem

    ... a nie mówiłem, że pójdziesz jak burza ? ;)

    _________________
    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: 12 sty 2015, o 19:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    Super :) To biorę się dalej za robotę. Jak wszystko będzie skończone i jakąś prowizorkę jeżdżącą zrobię to podrzucę linka jak ten sterownik działa. W sumie nie wierzyłem, że go w C w tak krótkim czasie będę mógł napisać (i zajmuje tylko 12kB z obsługą dwusilnikową, a ten poprzedni bascomowy w 16kB wszedł na styk i sterował tylko jednym silnikiem), a tak jak wspomniałem tylko ten eeprom zostawiłem na koniec, bo zawsze przy oprogramowywaniu takich gratów coś mi w trakcie przychodzi do głowy i z nagle z kilku parametrów robi się kilkanaście :) Tylko, że z drugiej strony jak bym od razu strukturę zrobił, to na jedno by wyszło :lol:
    Aha, Mirku rozumiem, że "volatile" normalnie się zachowuje w strukturze tak jak przystało na zwykłą zmienną "volatile", bo w żadnym przykładzie ze strukturami się z tym nie spotkałem ? ...a to jak przecież wiesz bardzo ważne dla prawidłowego działania programu 8-)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2015, o 20:22 
    Offline
    Moderator
    Avatar użytkownika

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

    SylwekK napisał(a):
    Tylko, że z drugiej strony jak bym od razu strukturę zrobił, to na jedno by wyszło

    Zapewniam, że nie wyszłoby na jedno - jak zrobisz jeden, dwa - trzy projekty to zobaczysz o co chodzi ... i po co są struktury. Później nie będziesz się mógł oderwać bo to gigantyczna oszczędność czasu - szczególnie właśnie gdy TRZEBA projekt rozwijać i zmieniać zmienne, ich typy itp

    SylwekK napisał(a):
    Aha, Mirku rozumiem, że "volatile" normalnie się zachowuje w strukturze tak jak przystało na zwykłą zmienną "volatile",

    Oczywiście że tak - można niektóre zmienne robić volatile ;) - w czym problem ?

    _________________
    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: 12 sty 2015, o 21:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    Jeszcze raz wielkie dzięki :)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 sty 2015, o 02:37 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    Wow! Skończyłem program. Ostatnia jego funkcja czyli operacje na EEPROM wypadły pomyślnie praktycznie za pierwszym podejściem. Zrobiłem tam parę rzeczy po swojemu (chodzi o defaultowe przywracanie, itp.) i do tego 6 banków pamięci. Kurcze rewelka te struktury - nie takie straszne jak by się mogło wydawać :lol: . Jak sobie przypomnę teraz kombinacje jakie należałoby w bascom poczynić aby mieć podobną funkcjonalność... ech, szkoda pisać :) Mirek, jesteś wielki i jeśli ktoś jeszcze wątpi w przekaz Twoich wiadomości to jest niereformowalny ;)

    _________________
    http://www.sylwekkuna.com



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

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

    SylwekK napisał(a):
    Kurcze rewelka te struktury - nie takie straszne jak by się mogło wydawać

    Kurczaki jak to miło widzieć jak ktoś zasiada do uczty i konsumpcji języka C i czerpie nawet już nie garściami ale całymi wiadrami, jak ty ;)

    _________________
    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: 17 sie 2015, o 21:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    Pytanie kolejne, żeby już nowego tematu nie zakładać :)

    Podejrzewam, że to możliwe i będzie działać tak jak przewiduję jednak wolę zapytać, bo opiszę się jak głupi i mogło by się okazać, że straciłem tylko kupę czasu...

    Chodzi o drugą strukturę na kolejne dane do EEPROM.
    Przyszło mi do głowy, że pewne ustawienia systemowe w programie mogły by być modyfikowane przez użytkownika, ale chciałbym też dodatkowe ustawienia (powiedzmy jakieś kalibracje, itp.), do których użytkownik nie powinien mieć dostępu, a tylko ja po wpisaniu np. jakiegoś kodu. Dla tych danych chciałbym właśnie stworzyć drugą strukturę zmiennych i teraz pytanie główne: czy się to nie pogryzie i czy kompilator przydzieli kolejny obszar EEPROM dla kolejnej struktury?
    Nigdy tak nie robiłem i nie widziałem podobnych rozwiązań, ale wydaje mi się, że jednak inteligencja kompilatora jest na tyle wysoka, że będzie takie coś możliwe. :)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 sie 2015, o 22:07 
    Offline
    Moderator
    Avatar użytkownika

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

    Możliwe to to jest ;) ale można zrobić przecież ... i to polecam

    JEDNĄ dużą strukturę która będzie siedziała w EEPROM, co za problem podzielić ją na mniejsze struktury ? hmmm ? ;)

    to jest dobra droga

    _________________
    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: 17 sie 2015, o 22:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    No właśnie obawiam się tego dzielenia, żeby mi się nie rozjechało to co już mam, bo w sumie to nie bardzo wiem jak to podzielić :), a modyfikacja dotyczy już dość rozbudowanego programu i teraz bardzo na zmienne muszę uważać, a ich ewentualne przemianowanie (gdyby była oczywiście taka potrzeba przy tym dzieleniu) raczej nie wchodzi w grę.

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2015, o 04:19 
    Offline
    Moderator
    Avatar użytkownika

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

    Ale widzisz ze to pokazuje ze warto piszac szczegolnie obsluge eeproma zawsze brac takie rozwiazanie od poczatku ... i nie chodzi mi tu o to ze zalozmy od poczatku wymyslisz 100% nazw zmiennych i nic juz dodac nie mozna. Chodzi o dobre rozplanowanie typow strukturalnych. ... tzn wiesz ja sie nie upieram bo zrobisz jak uwazasz ... a kto jak kto ale ty sobie poradzisz ... nawet z zapisem 10ciu roznych struktur do eeprom. Ja podpowiadam tylko zexwlasnie dzieki temu ze w C sa struktury to latwo jest je przebudowywac ... i nawet latwiej zrobic teraz duza strukture niz bawic sie w dzielenie i tworzenie nowych ... bo to bedzie coraz wiekszy balagan w porownaniu do jednej struktury. Pomysl o wymorzystaniu anonimowych struktur wewnatrz wiekszych struktur ... co zapobiegnie w wielu newralgicznych dla ciebie przypadkach zmianom nazw dostepu do zmiennych. Ale pomysl tez o wskaznikach do tychze zmiennych albo w ogole do struktur podrzednych. Przeciez dzieki temu rozne czesci programu nawet nie musza wiedzec ze dzialaja na wielkiej strukturze bo beda widzialy tylko swohe wycinki. Ze strukturami fajnie sie to robi isa same zalety na przyszlosc programu ;) ... Ale jak mowie .... jak zrobisz kilka struktur w eeprom to nic sie nie stanie ;) ... nic

    _________________
    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: 18 sie 2015, o 04:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    Mirku... Bo ciekawie prawisz o strukturach:) czy w Twoich poradnikach masz moze jakies przyklady na wsazniki wybranych czesci podstruktur ;) a jesli nie to czy moglbys jakis maly przyklad wrzucic:)?


    Sent from my iPhone using Tapatalk

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2015, o 09:26 
    Offline
    Moderator
    Avatar użytkownika

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

    Jedyny mój poradnik ze strukturami to już od dość dawna jest na necie - na moim blogu , na YT ... nowszego nie robiłem ....
    Generalnie żeby omówić takie zagadnienia bardziej skomplikowane to przydałby się taki bardziej skomplikowany poradnik, tyle, że
    1. obejrzałoby go może z 5 osób z czego może 2-3 powiedziałoby że jest ok - a 17 osób powiedziałoby , że zasnęło
    2. czas jaki musiałbym poświęcić na to .... eeeeh szkoda mówić
    3. to warto byłoby omówić na - rzeczywistym jakimś i ciekawym przykładzie - np właśnie jakiejś gry czy czegoś - żeby zapadło w pamięci

    Ale żeby nie być gołosłownym w stosunku do tego co pisałem wyżej o 4-5 w nocy

    no to może taki mały przykład ;) troszkę to potrwa ale spójrzcie - taki mega prosty przykład może da jakieś wskazówki

    załóżmy, że mamy takie oto dwie struktury:

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



    i w jakimś programie (tak w mega uproszczeniu tak odwołujemy się do ich pól)


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


    jasne ? prawda - to proste .... ale wyobraźmy sobie, że to są o wiele bardziej skomplikowane struktury zawierające setki pól a nawet wewnątrz innych struktur albo i jeszcze unii na dodatek ;) ... i takie dwie struktury załóżmy że obsługują nam cały program .... hmmm jak teraz złożyć to do kupy w jedną strukturę żeby było jak najmniej boleśnie ;) bo oczywiście jakieś tam zmiany może to za sobą pociągnąć - ale sami zobaczycie, że zamiana całości na jedną strukturę - docelowo spowoduje, że nasze oko zacznie lepiej to widzieć i jedna półkula mózgu będzie mogła pójść spać :lol: dokąd później znowu zbyt nie skomplikujemy całości

    więc zaczynamy - pokażę dwie metody, ale to tylko przykład bo jak się zastanowić to można znaleźć jeszcze ze 20 innych sposóbów. Nie wiem czy o tym myśleliście czy nie ale pokażę:

    SPOSÓB I

    najpierw przygotowujemy sobie nadrzędną strukturę:

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


    i teraz nasz program główny - musimy coś niecoś w nim pozmieniać oczywiście ;) - zauważcie, że tu nie skorzystaliśmy z anonimowych struktur a więc zmian będzie sporo ... chociaż? ... to tylko dodanie przedrostków dataczas. ;) tam gdzie wystąpią błędy kompilacji po tej zamianie - to wtedy nawet można jednym ruchem ZAMIEŃ wszystko zrobić ;)

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


    ale ok ... jeśli to przeszkadza - to może spróbujmy z anonimowymi strukturami - bo czemu nie ? ;) - tylko wtedy trzeba uważać aby nie dublowały się nazwy pól w anonimowych strukturach ...

    SPOSÓB II

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


    i teraz nasz program główny zmieni się tak:

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


    No ale można pójść tzw drogą wg GWIAZDY wskaźnika :lol: .... ja to lubię ;) ... czyli zostajemy przy przedostatnim sposobem definicji coraz większej MEGA struktury ! ... tadaaaa!

    SPOSÓB III

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


    ale ... hmmm chcielibyśmy dalej widzieć w programie np czas.hh albo cosik podobnego chociaż - zamiast jakichś przedrostków ;) no to do dzieła:

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


    Co zrobiliśmy ? - pewnie widzicie - mamy mega strukturę którą sobie możemy zapeklować gdzie chcemy np do EEPROM, RAM, FLASH ... ale jednocześnie powołujemy sobie dzięki wskaźnikom wydzielone na zewnątrz mniejsze kawałki tego kociego torta :lol: W ten sposób to hulaj dusza piekła nie ma ;) ... można sobie robić śliczne odwołania do KAŻDEGO miejsca struktury ... A w zapisie jak widać zmieniło się nam tutaj tylko

    czas.hh

    na

    czas->hh

    co chyba nie jest dziwne bo działamy przez wskaźnik ;) ... uuuuf to tyle z rana - teraz biegnę do kociego studia dalej kręcić z basicem for androidem


    Autor postu otrzymał pochwałę

    _________________
    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: 18 sie 2015, o 09:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    No i mimochodem powstał kolejny poradnik na temat struktur :-)
    Świetnie opisana idea!
    Myślę, że nie tylko ja skorzystam na tym opisie :-)
    Dzięki Mirku!

    ------------------------ [ Dodano po: 1 minucie ]

    Tak przy okazji widzę, że podobnie jak ja też nie nadużywasz snu... :-)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2015, o 09:52 
    Offline
    Moderator
    Avatar użytkownika

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

    SylwekK napisał(a):
    Tak przy okazji widzę, że podobnie jak ja też nie nadużywasz snu...

    Dokładnie, nawet zastanawiam się dlaczego w toku ewolucji wykształcił się taki niepotrzebny nawyk :lol: ... przecież, przez sen tracimy tyyyyle czasu! :lol: ... tyle nowych rzeczy można się nauczyć :lol: tyyyle nowych programów napisać, płytek PCB zrobić .... i zaprojektować układów elektronicznych ... ok ok ... spoko wiem, czasem sam się na tym łapię - że chyba jakimś maniakiem jestem ? :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: 18 sie 2015, o 09:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 09 gru 2014
    Posty: 1540
    Pomógł: 269

    mirekk36 napisał(a):
    No i mimochodem powstał kolejny poradnik na temat struktur :-)
    Świetnie opisana idea!
    Myślę, że nie tylko ja skorzystam na tym opisie :-)
    Dzięki Mirku!

    To prawda! W połączeniu z tym poradnikiem nagle wszystko stało się jasne. ;) W końcu jak to mówią ten "trybik" zaskoczył. Dziękuję panowie!



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 sie 2015, o 14:10 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    Dzieki Mirku! Bardo fajny przyklad i na pewno go wykorzystam!

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sie 2015, o 07:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 16 mar 2014
    Posty: 745
    Lokalizacja: Warszawa
    Pomógł: 32

    Świetny przykład Panie Mirku bo i ja dostałem nagle jakiegoś strukturalnego olśnienia :D

    _________________
    .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sie 2015, o 07:37 
    Offline
    Moderator
    Avatar użytkownika

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

    I o to chodzi, oby nam się ... strukturalnie żyło lepiej :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: 20 sie 2015, o 13:52 
    Offline
    Użytkownik

    Dołączył(a): 24 cze 2014
    Posty: 113
    Pomógł: 1

    A ja podepnę się do tego wątku, bo chciałbym ten temat zgłębić o zapisywanie do EEPROM bardzo dużych liczb (64 bitowych). Liczby astronomiczne, bo temat astronomiczny ;)
    Mianowicie muszę wykonać np. takie działanie x = 123456 * 1234567
    No i problemu by nie było, bo poruszając się w zakresie uint64_t można to zrobić. Ale teraz w momencie wyłączenia urządzenia lub zaniku napięcia (oczywiście detekcja zaniku napięcia sieci i chwilowe podtrzymanie na czas zapisu wykonane)
    chciałbym tą zmienną 64-bit zapisać do EEPROM. I jak czytam dokumentację to wygląda na to, że największa liczba jaka można zapisać jest typu dword (eeprom_write_dword).
    Proszę o wyprowadzenie mnie z Ciemnogrodu w temacie dużych liczb i EEPROM :)

    _________________
    .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 sie 2015, o 14:40 
    Offline
    Moderator
    Avatar użytkownika

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

    tec-dive napisał(a):
    Proszę o wyprowadzenie mnie z Ciemnogrodu w temacie dużych liczb i EEPROM

    A co to jest panie liczba 64 bitowa ? .... to jest 8 bajtów zgadza się?

    liczba 32 bitowa to 4 bajty

    liczba 16 bitowa to 2 bajty

    a liczba 8 bitowa to 1 bajt

    ..... tzn wiem że to wiesz ;) ale nie nasuwa ci się tu jakiś pomysł ?

    no zobacz - załóż różowe cyfrowe okulary i spójrz na każdą z tych liczb jak na tablicę w pamięci RAM ;) i co ??? ;)

    teraz się okaże, że po choinkę ci w ogóle jakieś funkcje eeprom_write_dword ?

    masz eeprom_write/read_block() ....

    no ale skoro tak - to widać, że nie odrobiłeś panie lekcji i nie oglądałeś jednak mojego poradnika o strukturach bo jesteś nawet w temacie struktur a ty wciąż swoje o zapisie do eeprom pojedynczych liczb nie ważne ilu bitowych ... powiedz mi ... lubisz się KATOWAĆ ?

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


    i zapisuj że całą strukturę ze wszystkimi liczbami - sorki ale aż ciężko wkoło macieju to powtarzać, skoro masz to pokazane dokładnie tutaj:

    http://mirekk36.blogspot.com/2012/11/av ... iazek.html

    weź pan to teraz obejrzyj i nagle się okaże - że już wiesz jak zapisywać liczby nawet gdyby one były uint128_t ;)

    _________________
    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: 20 sie 2015, o 14:55 
    Offline
    Użytkownik

    Dołączył(a): 24 cze 2014
    Posty: 113
    Pomógł: 1

    No jak najbardziej użyłem struktur ale już sam nie wiem dlaczego tą jedną zmienną wyrzuciłem poza strukturę i na siłę kombinuję zapisywać osobno do EEPROM i to używając właśnie eeprom_write_block.
    Już wrzucam ją tak jak było do struktury :)
    Dopiero zaczynam poznawać obsługę EEPROM przy pomocy struktur i dlatego takie karkołomne twory u mnie wychodzą więc proszę o wyrozumiałość jeśli ukłują one kogoś w oczy ;)
    Od razu czułem, że złą drogą podążam i że trzeba było się "słuchać" poradnika - a kilka razy go męczyłem, bo bardzo chcę zrozumieć, a strasznie opornie mi idzie.

    Ale dużo już rozjaśnił ten mini poradnik wyżej :) Kilka godzin filmu ujęte w kilku zdaniach. Może tym razem się uda :)
    Dziękuję za naprowadzenie.

    _________________
    .



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

    Dołączył(a): 24 cze 2014
    Posty: 113
    Pomógł: 1

    No i w końcu załapałem jak proste i jak pomocne mogą być struktury przy korzystaniu z EEPROM :)
    Dzięki temu poradnikowi, filmom na YT i mikro poradnikowi powyżej uwolniłem się od karkołomnych sztuczek przy obsłudze dużych liczb i tejże pamięci.
    Teraz aż miło coś zmieniać i dodawać w kodzie.

    Mirku... dziękuję! :)

    Aż sam siebie nie rozumiem jak można było tak długo nie pojmować tak prostego zagadnienia ;)

    _________________
    .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2015, o 07:40 
    Offline
    Moderator
    Avatar użytkownika

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

    tec-dive napisał(a):
    Mirku... dziękuję!

    Aż sam siebie nie rozumiem jak można było tak długo nie pojmować tak prostego zagadnienia

    Nie ma za co, nie przejmuj się .... do tego poznania struktur trzeba się po prostu przełamać , zaciąć i zaskoczyć ... a jak pójdzie to zwykle każdy ma taki oddech (ja też taki kiedyś miałem) ... uuuuf teraz życie w C zaczęło być duuużo prostsze ;)

    _________________
    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: 10 paź 2015, o 08:57 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    mirekk36 napisał(a):
    zaciąć i zaskoczyć ... a jak pójdzie to zwykle każdy ma taki oddech (ja też taki kiedyś miałem) ... uuuuf teraz życie w C zaczęło być duuużo prostsze ;)


    Ja się właśnie zaciąłem :)

    mam strukturę

    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.



    i teraz chciałbym wpisać do struktury dane odebrane z RFM73 generalnie dane parsuję i w

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


    przechowuję np odebraną temperaturę z czujnika dht22
    teraz próbuję wpisać te dane do struktury w taki sposób

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


    następnie próbuję wyświetlić dane z struktury na LCD w taki sposób:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Pytanie moje brzmi ... dlaczego do struktury zapisuje się 4 a nie 46 ??
    zawsze zapisuje sie tylko pierwszy znak :(

    prędzej starałem się mijać struktury ale w przypadku tego projektu muszę się ich nauczyć i zaskoczyć jak się na nich operuje nie mniej aktualnie się zaciąłem pomorze ktoś ??

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 paź 2015, o 09:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2014
    Posty: 1089
    Pomógł: 34

    Bo *wynik to wartosc pojedynczego elementu char ?


    Sent from my iPhone using Tapatalk

    _________________
    sig off ;(



    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: 31 ]  Przejdź na stronę 1, 2  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO