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



Teraz jest 4 lip 2026, o 03:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 9 wrz 2015, o 22:57 
Offline
Nowy

Dołączył(a): 21 lip 2015
Posty: 13
Lokalizacja: Północny-Zachód
Pomógł: 2

Witam wszystkich
Jest to mój pierwszy post na tym forum więc proszę o wyrozumiałość ;)
Od roku jestem posiadaczem ATB i niebieskiej książki. W sumie chciałem się pochwalić swoim pierwszym większym kodem.
Ponieważ prawie każdy zaczyna od zegarka, termometru, migania diodami (może nie w tej kolejności ;) ) więc mój kod również tego dotyczy. Dodatkowo ponieważ na forum często pojawiają się pytania o menu to również chciałem przedstawić swoje podejście (jako osoby początkującej) do tego problemu.
Moje menu nie jest oparte na strukturach, listach, dużej ilości wskaźników itp. Podszedłem do problemu dość prosto.
W kodzie mam dwie tablice. Jedna zawiera opisy jakie się pojawiają na LCD. Druga tablica zawiera wskaźniki do funkcji jakie będą wywołane dla poszczególnych opisów. Poruszając się po opisach ustawiamy sobie indeks który jest użyty do wywołania właściwej funkcji z drugiej tablicy.
Dodatkowo dla uproszczenia całości w pierwszym wierszu LCD są wyświetlane tylko opisy menu. Ustawianie parametrów natomiast odbywa się w drugim wierszu.
Program może nie jest napisany w najlepszym stylu jak powinno się pisać na avr. Do tematu programowania podszedłem bowiem bardzo liniowo. Kodowi również przydałaby się jeszcze optymalizacja. W paru miejscach funkcje prawie są jednakowe, np. te od ustawiania temperatury w menu. Jeżeli chodzi o obsługę przycisków to również jest najprostsza z możliwych. Zatem ich obsługa jest czasami irytująca. Miejmy nadzieję że następna wersja będzie lepsza...
Opis połączeń na ATB i funkcjonalności programu jest w kodzie. W razie pytań o kod postaram się na nie odpowiedzieć.
Mam tylko nadzieję że krytyka będzie delikatna... :oops:
Przy okazji pytanko - jak w eclipse wpisać literę "ć". U mnie pojawia się okienko z prośbą o podanie ścieżki do ChangeLog.

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

_________________
Jarek



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

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

Jarcio napisał(a):
Mam tylko nadzieję że krytyka będzie delikatna...

Krytyką to mogą się zajmować ludzie zajmujący się sztuką, kulturą, dziełami sztuki itp .... ;)

Ja nie mam z nimi nic wspólnego więc kilka mała uwaga.

Przede wszystkim, brak podziału projektu na pliki - postaraj się tego jak najszybciej nauczyć, bo teraz przypomina ten kod - najczystszą postać z bascoma (jeden wielki plik (worek) do którego wrzucono wszystko co się da)

O ile masz w bibliotekach obsługę RTC, 1wire czy LCD to pomyśl u ciebie pięknie można wydzielić kolejne bloki logiczne jak

- obsługa menu (oddzielny plik)
- obsługa zegarka (oddzielny plik i funkcje)
- obsługa alarmów/budzika (oddzielny plik i funkcje, szczególnie ta menu_func_ustaw_budzik () wprost nadaje się do wydzielenia)
- oddzielne funkcje do wyświetlania poszczególnych danych

bo w tej chwili twoja funkcja main() jest spuchnięta do nieskończoności.

Mówię tylko, że przydałoby się to zrobić bo wtedy kod byłby 100x bardziej czytelny a tym bardziej, że bardzo ładnie go sobie komentowałeś (duży PLUS) ;)

Podsumowując gdy nauczysz się lepszego podziału na pliki sam z tego skorzystasz - mówię ci i gorąco polecam ci takie podejście. Zaś prezentowany tu kod będzie wtedy miał wszystko czego potrzeba.

_________________
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 wrz 2015, o 21:44 
Offline
Nowy

Dołączył(a): 21 lip 2015
Posty: 13
Lokalizacja: Północny-Zachód
Pomógł: 2

OK
I o to mi chodziło. Wiem na co bardziej zwrócić uwagę.

Kiedyś prawie wszędzie uczyli wszędzie Pascala - do którego osobiście nic nie mam. Cuda też można tam robić.
Pozostały również stare przyzwyczajenia z ... FoxPro dla DOS . Ciekawe czy ktoś to pamięta ;)
Stąd też również dziwne przyzwyczajenia do formatowania kodu, co optycznie go znacznie wydłuża...
Nie napiszę kodu pętli w ten 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.
U mnie musi być
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pierwszy przypadek jest dla mnie na razie całkowicie nieczytelny.
Również z tego powodu nie zmieniam wartości zmiennych przez np i++. U mnie musi być i=i+1 itp...
I tak wychodzą przyzwyczajenia po begin..end.
Koniec marudzenia. C coraz bardziej mi się to podoba.

_________________
Jarek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2015, o 21:48 
Offline
Moderator
Avatar użytkownika

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

Ja też po 20 latach programowania w Pascalu długo się trzymałem takich przyzwyczajeń jak zaczynałem uczyć się C ;) .... a teraz ...

jak mam napisać i=i+1 to mnie obrzydzenie bierze ;) wolę i++

co ciekawe jak na PC zaczynam coś pisać w moim Delphi bo wciąż na PC używam Delphi to aż mi brakuje takich fajnych fiuczerów z C ;)

_________________
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 wrz 2015, o 20:54 
Offline
Nowy

Dołączył(a): 21 lip 2015
Posty: 13
Lokalizacja: Północny-Zachód
Pomógł: 2

Dziękuje za uwagi.
Z większością uwag kolegi mokrowski muszę się zgodzić. Przejrzałem kod i wychodzi na to że prościej go napisać od nowa :lol:
Człowiek uczy się na błędach. Zaciekawiła mnie uwaga z pkt 11 na temat sprawdzania kodu. Mam prośbę o lekkie rozwinięcie tematu sprawdzania jakości kodu. Czy są jakieś darmowe narzędzia do tego, czy trzeba tworzyć jakieś szablony kodu wg których następuje sprawdzanie itp..

Zacząłem na nowo pisać kod od razu dzieląc go na moduły. Funkcje do odczytania i wyświetlenia czasy wyrzuciłem do modułu czas, definicje klawiszy i wszystkiego co się wiąże z podłączeniem do avr wpisałem definicje.h. Teraz rzeczywiście wygląda to lepiej ;) Na razie jest wyświetlany sam zegarek, reszta dojdzie w przyszłości...
Tak wygląda obecnie main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

czas.c
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 co wiąże z podłączenie pinów do procka przeniosłem do definicje.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Jarek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 wrz 2015, o 20:21 
Offline
Nowy

Dołączył(a): 21 lip 2015
Posty: 13
Lokalizacja: Północny-Zachód
Pomógł: 2

Dzięki za linki. Przetrawiłem je. ;)
Bardzo wartościowe linki jeżeli chodzi o jakość kodu.
Szczególnie ten http://www.ipa.go.jp/files/000040508.pdf dokument jest bardzo fajny.
Bardzo wyraźnie jest pokazane jakich konstrukcji nie stosować i dlaczego.
Polecam wszystkim.

Jeżeli chodzi o poprawę kodu/ podział na moduły to prace trwają... Z braku czasu bardzo powoli...

_________________
Jarek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2016, o 18:37 
Offline
Nowy

Dołączył(a): 21 paź 2015
Posty: 17
Pomógł: 0

witam,
pomijając niedociągnięcia w temacie rozdzielania plików i techniki programowania
BARDZO dobry przykład dla początkujących w temacie wskaźników do funkcji
brak struktur menu itp.
dzięki za podpowiedź do mojego projektu ;)
pozdrawiam



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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