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
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.htmlprzydał się już niejednej osobie i wszyscy go sobie bardzo cenią ...