ATNEL tech-forum https://forum.atnel.pl/ |
|
Jak wyświetlaś wartości z wielu zmiennych https://forum.atnel.pl/topic22703.html |
Strona 1 z 1 |
Autor: | miki53 [ 2 gru 2019, o 19:08 ] |
Tytuł: | Jak wyświetlaś wartości z wielu zmiennych |
Witam Mam mały orzech do zgryzienia, mianowicie tworzę menu w którym jest wiele zmiennych to jest - dla ustawienia wyjścia nr 0 portu A używam zmiennych o nazwach *********** 1 ustawienie ****************************** _1_on_h dla ustawienia godzin włączania _1_on_m dla minut _1_on_s dla sekund _1_on_wy dla włączenia pinu 0 portu A ( wpisuje 1,2,3 do 8 ) dla wyłączenia _1_off_h dla ustawienia godziny wyłączenia _1_off_m dla minut _1_off_s dla sekund _1_off_wy dla wyłączenia pinu 0 portu A ( wpisuje 1,2,3 do 8 ) ******************************************************* dla wyjścia 1 portu A ************ 2 ustawienie ********************************* _2_on_h dla ustawienia godzin włączania _2_on_m dla minut _2_on_s dla sekund _2_on_wy dla włączenia pinu 1 portu A ( wpisuje 1,2,3 do 8 ) dla wyłączenia _2_off_h dla ustawienia godziny wyłączenia _2_off_m dla minut _2_off_s dla sekund _2_off_wy dla wyłączenia pinu 1 portu A ( wpisuje 1,2,3 do 8 ) **************************************************** A ma być ich 8 Teraz jak zrobić aby nie powtarzać kodu wyświetlania dla każdego z tych ustawień bo zżera ten zapis sporo pamięci, a 8 funkcji dla wyświetlenia każdej nastawy też nie rozwiązuje problemu w kodzie pokażę jak to robię |
Autor: | miki53 [ 3 gru 2019, o 11:37 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
Po odpowiedziach widzę że nie ma innego sposobu aby wyświetlić ustawienia w jednej wspólnej funkcji do wyświetlania na LCD dla ośmiu nastawień ? |
Autor: | Jarecki [ 3 gru 2019, o 12:02 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
Możesz np tak: |
Autor: | Harry [ 4 gru 2019, o 03:03 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
Obawiam się że więcej pamięci zeżre 60 zbędnych zmiennych ("_1_on_h" do "_1_off_wy" x 8), niż wyświetlanie. Ja bym na twoim miejscu zrobił z tego jedną funkcję dla ustawień czasów wł/wył. |
Autor: | Jarecki [ 4 gru 2019, o 11:10 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
qwertownik napisał(a): a może tak bez odkrywania koła na nowo - funkcja sprintf? Możesz pokazać jakby to wyglądało docelowo w kodzie programu z użyciem sprintf? |
Autor: | Harry [ 4 gru 2019, o 11:44 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
a nie można tak? język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. na jedno wychodzi, ale ładniej wygląda bez ifów nie sprawdzałem, pisane na kolanie |
Autor: | Jarecki [ 4 gru 2019, o 12:21 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
Harry napisał(a): a nie można tak? język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. na jedno wychodzi, ale ładniej wygląda bez ifów nie sprawdzałem, pisane na kolanie A ten sprintf doda zero wiodące z automatu? Chodzi mi o zera które autor postu sobie ifami ogarnął? |
Autor: | Harry [ 4 gru 2019, o 12:24 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
tak, doda, drugi argument po procencie to minimalna długość, jeżeli byłoby tam np 5, a długość minut to 2, wtedy dodałby 3 zera. ------------------------ [ Dodano po: 27 minutach ] Czyli doda tyle zer(albo spacji), żeby uzupełnić liczbę wynikową do wymaganej długości. |
Autor: | Jarecki [ 4 gru 2019, o 13:15 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
Harry napisał(a): tak, doda, drugi argument po procencie to minimalna długość, jeżeli byłoby tam np 5, a długość minut to 2, wtedy dodałby 3 zera. ------------------------ [ Dodano po: 27 minutach ] Czyli doda tyle zer(albo spacji), żeby uzupełnić liczbę wynikową do wymaganej długości. A no to git, fajne rozwiązanie |
Autor: | mirekk36 [ 5 gru 2019, o 19:23 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
qwertownik napisał(a): zamiast jednej standardowej konstrukcji sprintf nie jest żadną "standardową linijką" ... to jest BARDZO Tłusta funkcja i w bardzo wielu przypadkach warto stosować jest prostsze własne implementacje - a nie zawsze sięgać po sprintf. Spróbuj jej użyć na ATtiny13 to sam się przekonasz w czym rzecz. W prockach z większą ilością pamięci flash i ram nie ma oczywiście problemu. No i ta uwaga nie dotyczy akurat forsowanego w tym wątku rozwiązania autora - bo rzeczywiście jego droga była jeszcze daleka od doskonałości - ale zawsze warto próbować. I warto mieć na uwadze - co niesie za sobą taka funkcja jak sprintf (jeśli chodzi o zużycie pamięci) |
Autor: | Harry [ 5 gru 2019, o 19:27 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
mirekk36 napisał(a): to jest BARDZO Tłusta funkcja gorzej niż bardzo :/ sprintf (s, "%d", 12345) Flash bytes 1614 (1502) Stack bytes 58 MCU clocks 1647 Zastanawia mnie czy ilość argumentów/flag w tej funkcji ma jakieś znaczenie, jeśli chodzi o zajętość pamięci. |
Autor: | mirekk36 [ 6 gru 2019, o 04:05 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
qwertownik napisał(a): A skąd nagle wtrącenie z Attiny13? A no tak to - że bez żadnych wyjaśnień piszesz frywolnie qwertownik napisał(a): podstawowe rozwiązanie - nie warto pisać takich funkcji "z ręki" - jak potem byś taki kod dał komuś innemu to ma do rozkminienia kilkanaście linijek zamiast jednej standardowej konstrukcji Teraz zaś wyjaśniasz to co już wyżej zostało wyjaśnione. Pomyśl czasem nieco wcześniej - zamiast pisać że to jakiś standard i nie ma co sięgać po inne rozwiązania - bo w tych dwóch wypowiedziach przeczysz sam sobie. qwertownik napisał(a): Jak to oczywiste, że na takich prockach zawsze trzeba kombinować - w co którymś wątku można zaraz napisać, że kod do niczego bo na Atiiny 13 trzeba robić inaczej. Dla ciebie oczywiste ale nie dla tych którzy stawiają pierwsze kroki w programowaniu procków - i o tym zapominasz. qwertownik napisał(a): w co którymś wątku można zaraz napisać, że kod do niczego bo na Atiiny 13 trzeba robić inaczej. Bzdury piszesz - bo chodziło o pokazanie realnego problemu początkujących i widać po tym twoim zdaniu, że małe masz doświadczenie w dydaktyce - a patrzysz tylko przez czubek własnego nosa i tego co ty akurat wiesz. qwertownik napisał(a): Potem ludziom wchodzą nawyki z odkrywaniem wiecznie koła na nowo i kilkanaście funkcji do wyświetlania różnych typów danych. Może ty miałeś z tym aż takie problemy - to nie oznacza, że inni będą powielać te błędy. Uwierz w ludzi ... Każdy kiedyś zaczynał i gdy ma możliwość poznania różnych podstawowych rozwiązań to sam później łatwo dociera do coraz bardziej skomplikowanych i sam tworzy coraz lepsze kody źródłowe. |
Autor: | micky [ 6 gru 2019, o 20:51 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
Harry napisał(a): sprintf (s, "%d", 12345) Flash bytes 1614 (1502) Stack bytes 58 MCU clocks 1647 To podsumowanie to z Atmel Studio zrobiłeś czy z jakiegoś profilera? |
Autor: | Harry [ 6 gru 2019, o 21:02 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
To z dokumentacji toolchaina Wysłane ze srajfona |
Autor: | micky [ 7 gru 2019, o 00:07 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
A już miałem nadzieję, że jakieś ciekawe narzędzie wynalazłeś |
Autor: | Harry [ 7 gru 2019, o 00:20 ] |
Tytuł: | Re: Jak wyświetlaś wartości z wielu zmiennych |
Jak się nauczę migać diodką przy pomocy timerów(albo czytać datasheety), to może wtedy wynajdę coś ciekawego Niestety na takim etapie jestem |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |