Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Multimetr FlukeMultimetr Fluke
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Przetwornik ADC/EEPROM - Zapisywanie, odczyt wartości ADC z i do EEPROM, Atmega

04 Lip 2016 10:28 2448 32
  • Poziom 7  
    Dzień dobry.
    Zwracam się z prośbą pomoc. Jestem na etapie budowania małej obracarki do anteny
    , która napędzana jest silniczkiem DC z przekładnią.
    Chcę to wykonać na procesorku i mieć możliwość zapamiętania pozycji, a żeby potem za każdym razem nie dokręcać się manualnie.
    Silniczek się obraca w obu kierunkach i jest prosty woltomierz, który wyświetla wartość ADC od 0-1023.Potencjometr ma być sprzężony z rurką od anteny.
    Chciałbym zapamiętać np. 8 pozycji (północ, południe ..... i pośrednie).
    Do tej pory wszystko jakoś ogarnąłem i działa. Były to dość proste zagadnienia.
    Kiedy nadszedł moment wykorzystania pamięci, to poległem.Nie mam pomysłu, jak to dalej rozwiązać.
    Bardzo proszę o pomoc, jak zacząć i co dalej.
    Z góry dziękuję. Sam dłuuugo będę się męczył.
  • Multimetr FlukeMultimetr Fluke
  • Poziom 40  
    O jaką pomoc prosisz, bo nie opisałeś co sprawia problem?
  • Poziom 7  
    Witam excray.

    Dziękuję za zainteresowanie moim tematem.Problem opisałem, ale może zbyt ogólnikowo.Zaciąłem się, kiedy przyszło użyć w praktyce eeprom do tego celu.
    Nie będę zaczynał od starego sloganu, że jestem początkującym itd.... bo to
    oczywiste.Gdyby było inaczej, to nie zakładałbym tematu.Na tą chwilę działa pomiar
    adc z potencjometru.Wiem, że na pewno można wykorzystać tą informację i dzięki temu procesor "wie", w którym miejscu na osi od 0-360 stopni znajduje się antena.Potencjometr liniowy 10k połączony z rurką od anteny.
    Utworzyłem dwa przyciski: silnik start_prawo i silnik start_lewo.Trzecia komenda dla
    procesorka, to silnik stop. To wszystko działa i silniczek się kręci.W tym czasie wartości adc wyświetlają się i zmieniają oczywiście w miarę obrotu.

    I tu kończy się moja wiedza, tzn. nie wiem co dalej, a w zamyśle chcę "dorobić" jeszcze 8 przycisków, które odpowiadać będą 8 pozycjom kątowym.Pozycje te
    (w oparciu o dane sczytane z adc) chciałbym zapisać do eeprom i po naciśnięciu
    np. przycisku nr 1, silnik się uruchomi i dokręci do zadanej pozycji i się zatrzyma.

    Z punktu widzenia, jak ma to działać, to wiem i jest plan.Ale jak zaprzęgnąć do tego eeprom, tego na tym etapie nie rozumiem.
    Myślę, że muszę utworzyć 8 zmiennych (tyle jest pozycji do zapamiętania) i co dalej ?.
    Nie proszę o napisanie gotowego kodu, ponieważ to żadna nauka i nie tędy droga.
    Proszę o jakiś zaczątek, a ja postaram się kontynuować i sprawdzać na forum,
    czy idę w dobrym kierunku.
    Jestem pewny, że to, co chcę uzyskać, jest proste, ale ja uczę się sam z książek
    i nawet wielokrotne przeczytanie jakiegoś zagadnienia nie zawsze jest zrozumiałe.
    Jak się uda, to w przyszłości chcę ten projekt zaadoptować do obracania panela
    solarnego w oparciu o zegar, czy coś w tym rodzaju.
    Pozdrawiam.
  • Poziom 36  
    Nie napisałeś jakiego języka używasz , ale to nie ma znaczenia musisz zbudować dwie procedury zapisu i odczytu pamięci eeprom , dodatkowo zmienne pozycja i nastawa w pamięci ram do pozycji będziesz wpisywał wartość z adc i z niej wpisywał wartość do zapamiętania do eeprom przy zapisywaniu nastaw. z eepromu przy odczycie będziesz wpisywał wartość do drugiej zmiennej w ram "nastawa " . W pętli głównej pozostanie obsługa klawiatury i funkcji klawiszy oraz porównanie wartości pozycji i nastawy i wykonanie odpowiedniego ruchu anteną ;)
  • Poziom 7  
    Witam i dziękuję za włączenie się do tematu.

    Ciągle ten sam problem.Zawsze zapomnę o niektórych detalach.
    Uczę się programować w C i używam Eclipse.
    Skłamię, jeśli powiem, że nigdy nie walczyłem z eeprom. Jakiś czas temu bawiłem się wyświetlaczem i zapisem znaków do eeprom i odczyt.
    Przy starcie programu (włączeniu zasilania) program wczytywał zawartość eeprom
    do ram i kiedy zmieniłem jakiś napis na lcd, to po naciśnięciu przycisku "zapisz"
    następowało zapisywanie do eeprom.
    Ten temat został ogarnięty.Tutaj jest coś nowego (wartości adc) i jakoś nie mogę
    zaskoczyć.
    Poniżej wklejam kawałki kodów, które użyłem w tamtym projekciku.Trochę bałaganu, ponieważ wyrwane z kontekstu, ale chodzi o pokazanie, jak to pisałem i co można by
    z tego zaadoptować do tego projektu z silnikiem.Tam były tablice char.
    Dziękuję.


    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 14  
    Zamiast iluś tam zmiennych, do zapamiętania pozycji, wygodniej użyć 1 zmiennej tablicowej, ale to sprawa gustu programisty.

    Dlaczego do pokazania kodu chcesz użyć C# a nie C/C++
  • Użytkownik usunął konto  
  • Multimetr FlukeMultimetr Fluke
  • Poziom 7  
    Witam ponownie.
    Zamieszczam uproszczony schemat. Myślę, że na początek wystarczy.Oczywiście
    jest jeszcze wyświetlacz 2x16, na którym odczytuję wartość adc z potencjometru.
    Klawiatura analogowa, ponieważ w zamyśle chcę użyć 8 klawiszy.
    360 stopni / 8.Wiem, że można to zrobić na różne sposoby, np. przełącznik mech.
    i byłoby mniej kodu, ale ja chcę to uruchomić właśnie w takiej konfiguracji.

    Przyciski podciągnięte do vcc,
    Instrukcja motor_lewo (PB0 minus, PD7 plus)
    Instrukcja motor_prawo (PB0 plus, PD7 minus)
    Instrukcja motor_stop (PB0 minus, PD7 minus)

    Klawisze analogowe na zasadzie:if adc1 od... do..., to klawisz_1, itd.....

    Napisałem tak w skrucie, ale chciałem pokazać, że coś z tego rozumiem i na tym
    etapie wiem, co robię :D .
    Jeszcze do niedawna i to sprawiało mi kłopot, ale kiedy jest czas, to się uczę.
    Co tu teraz napisać, a żeby zacząć zapamiętywać i żeby działało zgodnie z założeniem? :cry: .
    Dziękuję. Przetwornik ADC/EEPROM - Zapisywanie, odczyt wartości ADC z i do EEPROM, Atmega

    Dodano po 2 [godziny] 33 [minuty]:

    kamyczek napisał:
    Nie napisałeś jakiego języka używasz , ale to nie ma znaczenia musisz zbudować dwie procedury zapisu i odczytu pamięci eeprom , dodatkowo zmienne pozycja i nastawa w pamięci ram do pozycji będziesz wpisywał wartość z adc i z niej wpisywał wartość do zapamiętania do eeprom przy zapisywaniu nastaw. z eepromu przy odczycie będziesz wpisywał wartość do drugiej zmiennej w ram "nastawa " . W pętli głównej pozostanie obsługa klawiatury i funkcji klawiszy oraz porównanie wartości pozycji i nastawy i wykonanie odpowiedniego ruchu anteną ;)


    Dziękuję Kamyczek.Myślę, że podałeś mi tutaj wiele cennych wskazówek.Na tą
    chwilę nie wiem jeszcze, jak to zrobić praktycznie, co i jak napisać, ale zerknę do literatury, netu i zobaczę, co z tego wyjdzie.
    Dalsze pomysły forumowiczów mile widziane.
  • Użytkownik usunął konto  
  • Poziom 7  
    Dziękuję niveasoft.
    Każda pomoc mile widziana.Samo działanie urządzenia założyłem sobie w ten
    sposób, że kiedy będę miał osiem przycisków (N, S, W, I, N-W, N-I, itd...), to
    każdy przycisk będzie przyporządkowany danemu kierunkowi.Kiedy będę ustawiony na N (north) i nagle będę się chciał obrócić na południowy zachód, to wcisnę ten
    konkretny przycisk i antena ma ruszyć i dojechać do wcześniej zaprogramowanego
    miejsca i się zatrzymać.
    Załóżmy, że ta pozycja odpowiada wyświetlonemu adc=455.I teraz nie wiem,
    co tu napisać, jak zacząć.
    Czytam książkę i szukam czegoś, ale na razie nic.To moje początki i wiek już
    nie za młody :cry: .
    Jak do czegoś dojdę, to wrzucę tutaj do przemyślenia.Chyba, że jak by ktoś
    zaczął i pokazał, jak dalej, to byłoby łatwiej.
    Z eepromem miałem raz do czynienia raz, kiedy chciałem zapisywać dane
    z wyświetlacza i to mi się udało.
    Wrzuciłem kawałki kodów wcześniej.
    Tylko nie rozumiem za bardzo, jak mogę to zastosować tutaj z tym np. adc 455.

    Jeżeli bym się nie odzywał, to nie znaczy, że zarzuciłem temat, tylko działam pomału, no i są jeszcze inne sprawy, a to to tylko hobby.
    Dziękuję.
  • Poziom 26  
    Odnoszę wrażenie, że cały problem polega na tym, że widzisz wartość binarną ADC jako tekst. Na przykład liczba 455 traktujesz jako 3 znaki: '4', '5' i '5'.
    Potraktuj liczbę 455 jako liczbę 2 bajtową bez znaku, czyli uint16_t, czy unsigned int (zależnie od notacji). Oto przykładowy kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Oczywiście w tym przypadku, zamiast eeprom_read_block możesz użyć eeprom_read_word (pamiętając o tym, że parametry będa inne).
  • Poziom 14  
    szegerege1 napisał:
    ta pozycja odpowiada wyświetlonemu adc=455.I teraz nie wiem,

    ADC w Mega jest 10-bitowy. Więc dla napięcia na wejściu 0V wykaże 0 a dla innych napięć z twojego potencjometru jakąś wartość (dziesiętnie) <1024. Dla danego kąta (położenia potencjometru) mierzysz woltomierzem napięcie na wejściu ADC i odczytujesz co pokazuje wyświetlacz. Wiesz jaki to u ciebie kąt obrotu, teraz trochę prostej matematyki i obliczasz współczynnik przeliczeniowy. Pomyśl.

    Mam nadzieję że za bardzo nie pomieszałem.
  • Poziom 7  
    arturt134

    Myślę, że dokładnie tak.Cały problem w tej terminologii i zrozumieniu.Inaczej, gdy
    uczysz się w szkole i zawsze można zapytać, a inaczej samemu.Ledwo człowiek zamruga diodą, czy zrobi prawidłowo przyciski i apetyt gwałtownie rośnie.
    Za szybko by się chciało, ale to chyba wszyscy tak mają :D .

    A potem Wy musicie się męczyć z takimi, jam ja, a ile przy tym śmiechu, to dobrze,
    że tego nie słyszę hi.
    Rozumiem, że uint8_t to jak są liczby od 0-255.Jak większy zakres, to uint16_t, itd.

    Teraz, czy jak mam mieć 8 pozycji do pamiętania, to muszę utworzyć 8 takich
    zmiennych uint16_t i 8 procedur zapisu/odczytu eeprom/ram itd...?

    Wcześniej któryś kolega z forum pisał coś o zmiennej tablicowej i że to prościej itd,
    Ja obejrzałem sporo poradników o strukturach, wskaźnikach itd...Pana Mirka
    (zapewne wiadomo, o kogo chodzi, ponieważ w świecie programistycznym jest chyba rzeczą niemożliwą go nie znać) i posiadam książkę tego Pana, ale
    jeden chwyta w lot, a drugi potrzebuje więcej czasu.

    Już kiedyś o tym pisałem.Jak ktoś powiedział, żeby kliknąć i zainstalować jakiś
    tam program, to myślałem, o co mu chodzi, a dzisiaj się z tego śmiejemy.
    Może kiedyś tak będzie z C.Zobaczymy.Ale starczy.Niczego konstruktywnego ta pisanina (moja) nie wnosi.

    Mimo wszystko dzięki, a ja muszę coś naskrobać może wieczorem.Zobaczymy.
    Na razie dziękuje.
  • Poziom 26  
    Wystarczy napisać funkcję zapisującą, której parametrem jest numer pozycji.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Analogiczną funkcję napisz dla odczytu. Następnie napisz funkcję:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Parametrem tej funkcji będzie odczytana z eepromu pozycja.
  • Użytkownik usunął konto  
  • Poziom 26  
    Pytanie Autora dotyczyło zapisu/odczytu pozycji do/z eepromu..... Funkcje przycisków i algorytm działania urządzenia nie były poruszane w tym temacie, bo prawdopodobnie Autor wie jak to rozwiązać, żeby urządzenie było funkcjonalne. Dlatego też moja odpowiedź dotyczyła wyłącznie zagadnień związanych z tematem zapytania.
  • Poziom 7  
    Dziękuję za zainteresowanie.
    Oczywiście nie chciałbym tworzyć jakiejś ostrej dyskusji.Kolega niveasoft poruszył
    temat przycisków.
    Nie piszę o tym, ponieważ na moim etapie skromnej wiedzy powinienem sobie poradzić.Ćwiczyłem temat z zapalaniem diod przyciskami i różne ich konfiguracje.
    Utworzyłem proste menu, po którym poruszam się tymi przyciskami, a wiec nie zaśmiecam tego tematu kilkoma rzeczami naraz. Jeśli napotkam problem w tej
    materii, to poproszę o pomoc.
    Faktem jest, że na tą chwilę moje przyciski wykonują tylko jedną funkcje.
    Jeszcze nie pisałem programu, w którym przycisk wykonywałby 2 lub 3 funkcje.
    Jedno krótkie naciśnięcie robi to, a kolejne tamto, czy po dłuższym przytrzymaniu
    jeszcze coś.
    To co napisał niveasoft o wykorzystaniu przycisków jest jak najbardziej trafne,
    ale ja robię to po swojemu bo na razie tyle umiem.
    Jeżeli ten projekt się uda i będzie działać, to może za rok, jeżeli mój poziom wiedzy się polepszy i starczy mi zapału, to pewnie napisze to od nowa.
    I pewnie program będzie 3 x krótszy :D , ale na tym etapie zależy mi tylko
    na sukcesie.

    Kolego elbud.
    Bardzo ciekawa podpowiedź.Dzięki temu na wyświetlaczu będą widoczne
    pozycje kątowe, a nie jakieś tam 255.I zdecydowanie ładniej to będzie wyglądać.
    Przecierż woltomierz, który zrobiłem, też pokazuje 13,6 volt, a nie np. 850 (adc).

    I o to chodzi.

    Artur 134.
    Dziękuję za te krótkie kody.Czas trochę popracować.Z samego pisania nic
    nie będzie, a jak napisałem na wstępie, nie czekam na gotowca, tylko na
    wskazanie właściwego kierunku i trochę potrzymać za rękę.Każdy projekt
    uczy czegoś nowego, to i z tego coś się wyniesie.

    Tylko jeszcze raz pytam, czy mam utworzyć tyle uint16_t adc_pos
    np (uint16_t adc_poz_1 uint16t adc_poz_2 itd....) - 8 przycisków-pozycji
    Czy wystarczy:

    uint16_t adc_poz_1, adc_poz_2, adc_poz_3 ....... ;

    Jeżeli nie wciskam kilka przycisków na raz to nie przekroczę wartości uint16_t

    Chyba że to nie ma znaczenia, o czym piszę.Po prostu za mało wiedzy i z tąd te pytania.
    Proszę o cierpliwość i zrozumienie zaawansowanych programistów.

    Dziękuję.
  • Użytkownik usunął konto  
  • Poziom 38  
    arturt134 napisał:
    Pytanie Autora dotyczyło zapisu/odczytu pozycji do/z eepromu..... Funkcje przycisków i algorytm działania urządzenia nie były poruszane w tym temacie, bo prawdopodobnie Autor wie jak to rozwiąza


    Trochę się wątek rozmył, ale chyba nie było powiedziane że zapis do EEPROMA jak najrzadziej. Mówiąc językiem projektowania, gdy wszystkie stany i decyzje są wypracowane (np wszystkie bity maski bitowej jeśli ktoś używa) . Mile widziane zabezpieczanie aby zapisywać tylko rzeczywiste zmiany.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Powtarzanie na poziomie kilkudziesięciu milisekund (jakos tak niejasno wyczytalem) go szybko zużyje.

    EDIT: fajnie jest złożyć wszystkie opcje zapisywalne w jedną strukturę (tzn nie wiele luźnych zmiennych), i zapisywać (rzadko) całą. W gruncie rzeczy zapis EEPROM jest i tak blokowy.
    Doktoryzując się, tą strukturę czasem dobrze mieć w 3 egz.
    a) wartości domyślne w pamięci flash razem z kodem.
    b) wartości eksploatowane w RAM
    c) tez z b) zapisane świadomie do EEPROM.

    I dalej, strukturze można zrobić sumę kontrolną ... itd, itd ... są z tego ciekawe funkcjonalności (bo wiemy czy jest spójna, czy uszkodzona), ale chyba nie w tym wątku.
  • Poziom 7  
    Witaj JacekCz.
    Dzięki za włączenie się do dyskusji.Na początek powiem, że nie sądzę, a żeby
    wątek się rozmył.
    Będę go kontynuował do momentu całkowitego zakończenia.Wiem, że jest to
    malutki projekcik i osoba znająca dość dobrze C napisałaby to w kilkanaście minut
    i zapomniała.
    Ja się uczę i jestem na samym początku.Potrzebuję czasu na napisanie czegokolwiek.Napisałem wcześniej, że teraz moja kolej.Muszę coś sklecić i zamieścić
    do dalszej dyskusji.Nie będę czekał na gotowca.Mam inne zajęcia i to może potrwać
    dzień, może dwa.W pracy w ciągu dnia mam dostęp do komputera i mogę
    czasami podejść i sprawdzić, czy ktoś z forumowiczów coś napisał i odpisać,
    jak mogę w danym momencie.W domu jest różnie.Ale nie ważne.To tak na
    marginesie.
    Piszesz o eeprom, że szybko się uwali.Ale ja nie mam zamiaru robić ciągłego
    zapisu i odczytu (eeprom) w pętli głównej.
    Jedyne co ma być, to ewentualne wczytywanie danych z eeprom do ram, przy
    włączeniu urządzenia.
    Zmiana zapisanych punktów pozycji wystąpi bardzo sporadycznie.
    Jeżeli moje myślenie jest prawidłowe, to po starcie dane zostaną załadowane do
    ramu (a to tylko odczyt z eeprom i chyba nie ma limitu dla procka) i kiedy będę chciał się obrucić na pozycję 3-np. zachód to ta pozycja już w ramie na to mi
    pozwoli.
    Ponowny zapis do eeprom nastąpi, kiedy z jakiś przyczyn będę chciał lekko
    "przeprogramować" którąś pozycję o kilka stopni i zapamiętać(o ile będzie to
    miało jakiś sens).

    Tak to sobie założyłem, aczkolwiek może źle podszedłem do tematu. Jeżeli tak,
    to proszę mnie poprawić, zanim się namęczę niepotrzebnie.

    Pozdrawiam.
  • Użytkownik usunął konto  
  • Poziom 7  
    Taaak.Witam szanownego kolegę, jeśli mogę tak napisać.
    No to zadał mi kolega ćwieka :cry: .
    a myślałem, że będzie prościej.W takim razie muszę poczytać trochę literatury
    na ten temat, ponieważ nie wiem za bardzo o co chodzi.Myślałem, że to tak,jak
    z dyskiem twardym.Ja tylko wysyłam i niczym się nie martwię, jeśli jest wystarczająca ilość miejsca.Trochę dzisiaj napisałem i jutro może wrzucę, co do
    tej pory udało się.Trzeba się trochę przespać.Rano do pracy :cry: .
    Dziękuję.
  • Poziom 7  
    Witam.
    Na początek chciałem wstawić kawałek programu, a w zasadzie cały, który na tą
    chwilę kręci silnikiem, wyświetla wartość adc i jest jakiś tam zalążek do obsługi
    eeprom-ram.
    Proszę wybaczyć, jeżeli jest to może trochę pokręcone i napisane nie profesjonalnie,
    ale działa, a na kosmetykę to jeszcze za wcześnie na moim poziomie.
    Jestem w pracy, więc ewentualne podpowiedzi nie sprawdzę, ale mogę coś
    Przygotować i w domu będzie więcej czasu.
    Jakie ewentualne złe nawyki tutaj stosuję.Co należało by zmienić i czego w przyszłości nie robić(pomimo, że program się kompiluje w 100% i działa).



    Dziękuję.
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 35  
    No dobra masz zapis do eepromu ale która to jest pozycja 1-8 ?
    Zrób najpierw zapis pod odpowiedni klawisz, sekwencja niech będzie jak napisano powyżej przycisk zapisz a potem oczekiwanie na klawisz 1-8 z komunikatem z aby nacisnąć klawisz pozycji.
    Kolejnym krokiem niech będzie po naciśnięciu klawisza pozycji wyświetlenie jej na lcd, a kolejnym ruch do odczytanej pozycji. Rób wszystko etapami to będziesz mieć kontrolę nad programem a nie jak początkujący wszystko na raz.
  • Poziom 38  
    moim zdaniem inaczej, ale mnie wiele w nawykach uP drazni i chciałbym innego kodu.

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 7  
    Dzięki JacekCz.

    Prawda jest taka,że ilu programistów, tyle pomysłów i metod na dotarcie do celu.
    U jednego ten sam program zawiera 1000 linijek, a u drugiego 600.
    Ja jestem początkujący i zawsze wybiorę to, co bardziej rozumiem.A że czasami
    jest więcej pisaniny, to trudno.
    Każdy forumowicz przedstawia mój problem inaczej, a ja muszę wybrać i trzymać
    się jednego.Inaczej nic nie napiszę i tylko zawracanie wszystkim głowy.

    Zacząłem od arturt134, ponieważ jakoś to do mnie dociera i może uda się poskładać w całość, no i jak na razie, najwięcej wniósł do tematu.
    Oczywiście bardzo dziękuję innym za wkład w mój projekt i proszę mnie źle
    nie zrozumieć.
    Jeśli to nie problem, to wstaw coś więcej i jakieś komentarze, ponieważ dla mnie
    , jako osoby początkującej jest silnie wyrwane z kontekstu i mało zrozumiałe.

    Dziękuję.
  • Poziom 38  
    szegerege1 napisał:
    Dzięki JacekCz.

    Prawda jest taka,że ilu programistów, tyle pomysłów i metod na dotarcie do celu.
    U jednego ten sam program zawiera 1000 linijek, a u drugiego 600.
    Ja jestem początkujący i zawsze wybiorę to, co bardziej rozumiem.A że czasami
    jest więcej pisaniny, to trudno.


    Są dwie filozofie, dwa ujęcia prawdy, grecko-europejska "jest jedna prawda którą znamy tylko w części i ułomnie, ale spierając się, dążąc do niej sami się przybliżamy w swych stanowiskach" oraz tkwiąca w Azji która wyrażę po góralsku "ty masz swoją prawdę, ja mam swoją prawdę" ... w gruncie rzeczy zamyka to pewne drogi, ścieżki, jak twórczy spór, dyskusję itd... czyni to bezsensownym

    Dziwny tekst jak na portal elektroniczny? Zaraz trochę się rozjaśni.

    na gruncie kodu (w życiu też) jestem zwolennikiem bardziej pierwszej niż drugiej, tzn jest sens oceniać jakoś kodu, rozwiązań, zgodność z kanonami czy "dobrymi praktykami". Przekaz tego otoczenia (ujmijmy w słowo "dobre praktyki") następuje z książek (zasadniczo wydawca ryzykuje pieniądze i choćby przez to nie każdy książkę wyda), z nauki w realu od żywych autorytetów. A przekaz "dobrych praktyk" jest zerowy albo ma wartość ujemną w większości ścieżek nauki "z internetu".

    Kończąc myśl, mam moje własne przekonanie że istnieją (w miarę) obiektywne kryteria oceny kodu - ale w pełni uznaję, że na gruncie czystej algorytmiki (sposobu zaimplementowania) programista ma swoją twórczą wolność. To się jakoś powinno łączyć na zasadzie 'twórczy wkład w algorytm' + 'zapis zgodnie z kanonami języka, kanonami programowania'

    Powielanie kodu identycznego lub bardzo podobnego jest w moim przekonaniu antywzorcem, ale to rzeczywiście nie na wątek "projekt który zaraz musi zadziałać".
  • Poziom 33  
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Ten kod to nie zadziała tak jakbyś chciał. Czytasz pod zmienną ze stosu. Jak już chcesz mieć elegancko to zrobiłbym cos takiego:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Korzystasz z tego tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Funkcje settings_read wywołujesz raz przy starcie. Zauważ, że przy settings_update Zastosowana jest funkcja eeprom_update_block.
  • Poziom 7  
    Witam Panie Grzegorzu.
    Na wstępie dziękuję za chęć dodania czegoś od siebie. Jeżeli to Pańska praca
    Pod linkami, to szczerze jestem pod wrażeniem. Gdzie tam mój rotor :D :D :D
    Ale do sedna sprawy.
    Z tego, co widzę, kod ten polega na znajomości struktur itd.
    Oglądałem poradniki o strukturach i wskaźnikach na znanym portalu i to
    kilkakrotnie. Niestety na tą chwilę jeszcze nie byłem stanie tego tematu
    zrozumieć.Kiedy oglądam, to jest to jakby zrozumiałe.
    Ale jak przychodzi coś napisać, to koniec.Oczywiście nie poddam się i prędzej czy
    później załapię. Moje krótkie menu zrobiłem na ifach, case, break, chociaż tutaj
    na forum wielokrotnie czytałem o strukturach i że to takie proste.
    Ja rozumiem, że cała przyczyna tkwi po prostu w braku podstaw i lukach w wiedzy
    którą posiadam, a już bym chciał coś tam zbudować.
    Nie będę ukrywał,że niezbyt rozumiem zapis.Jeżeli to nie problem, to prosiłbym
    o komentarze , co wykonuje każda linijka, plus przewałkuję jeszcze raz poradniki.
    Może pojmę, o co chodzi.
    Ja oczywiście staram się coś zrobić.Nie wiem ile to zajmie, ale na pewno wstawię,
    jak będą pozytywne efekty.
    Żebym napisał chociaż dla jednej pozycji i przycisku prawidłowo,
    to potem już pójdzie, a wiedza zostanie w głowie i w pliku.
    Dziękuję.