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



Teraz jest 10 lut 2025, o 21:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Ten wątek jest zablokowany. Nie możesz w nim pisać ani edytować postów.  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 20 gru 2016, o 20:38 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Przerabiam program z YB "08_MATRIX_TEST_m328P"
Nie mogę zrozumieć timerów programowych.
Otóż inicjalizujemy pierwszy timer
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Zmienna nr, interval i enabled są inicjalizowane podanymi wartościami. Nie rozumiem co dzieje się z
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Także nie rozumiem tej części kodu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie wiem jak działa tablica struktury i funkcja w niej zawarta
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pozdrawiam i proszę o wytłumaczenie lub wskazanie w którym miejscu książki są odpowiedzi na moje pytania.



Góra
 Zobacz profil  
 
PostNapisane: 20 gru 2016, o 20:50 
Offline
Moderator
Avatar użytkownika

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

henryxxl napisał(a):
Zmienna nr, interval i enabled są inicjalizowane podanymi wartościami. Nie rozumiem co dzieje się z


No przecież to:

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


jest najzwyklejszy wskaźnik na funkcję ;) ... już w Bluebooku podobny przykład był w SuperDebounce, czyli do funkcji

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


jako ostatni argument przekazujesz wskaźnik na funkcję danego timera ;) można co ciekawe zmieniać ją "w locie" w trakcie trwania programu wg potrzeb. Krótko mówiąc inicjalizacja timera to nie tylko to że jasno deklarujesz CO ILE ms timer ma tykać ale jeszcze jaką funkcję ma wykonywać co każde tyknięcie ;)

_________________
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  
 
PostNapisane: 20 gru 2016, o 21:52 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Czyli wskażnik *callback posiada adres timer0_tick ?



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
do tablicy nr w strukturze tmr_callback zostaje zapisany adres.



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



rozumiem struktury ale nie rozumiem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
połączenia struktur i tablic.
Pozdrawiam.



Góra
 Zobacz profil  
 
PostNapisane: 20 gru 2016, o 22:58 
Offline
Moderator
Avatar użytkownika

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

henryxxl napisał(a):
ale nie rozumiem
Składnia: [ Pobierz ] [ Ukryj ]
język c
TSTIMER stimers[];
połączenia struktur i tablic.


No ale czego nie rozumiesz ? zobacz masz zmienną np:

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


prosta zmienna o nazwie "ala" ;) ... jaki ma ona typ ? ... no widać typ po lewej stronie - typu uint8_t czyli zajmie w pamięci RAM jeden bajt ;) tak ? zgadza się ?

no to idziemy dalej, masz zmienną:

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


proszę - zmienna o nazwie "bolek" która zajmuje dwa bajty ....

zachciało nam się tablicy

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


mamy tablicę o nazwie ala - tyle że zawiera ona DWADZIEŚCIA elementów typu uint8_t zgadza się ? no dobra potrzebujemy też bolka rozmnożyć

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 chlast - teraz mamy tablicę o nazwie "bolek", 10 elementów dwubajtowych

ale jak to ożenić - żeby był dostęp przez strukturę ? hmmm jak to zrobić ... no przede wszystkim dopuścić bolka do ali ;) sparować ich - zamknąć w sali TORTU jaką jest struktura, no to lu ...

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 zdefiniowaliśmy nowy typ w naszym programie o nazwie TSALATORTU :lol: teraz możemy powołać sobie jedną zmienną np

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


powołalismy sobie zmienną o nazwie "przyjemnosc" ... i mamy przez nią dostęp do ali i bolka zamkniętych w środku

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


no dobra - ale my chcemy namnożyć tej przyjemności ;) to czemu nie powołać sobie tablicy zamiast jednej zmiennej a więc do roboty:

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 ? ... widzisz to? .... mamy teraz tablicę o nazwie "przyjemnosc" której każdy element jest typu TSALATORTU czyli każdy element jest strukturą (salą TORTU) w której uwięziona jest ala z bolkiem :lol: a więc teraz jak chcemy to :

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


widzisz ;) mamy jakby wielopiętrową (10 pięter) salę tortu ... i na każdym piętrze jest mała cela z uwięzioną alą i bolkiem, a my właśnie przekazaliśmy gryps na drugie piętro do ali oraz na 8 piętro do bolka :lol: - żeby już kończyli zabawę :lol:

i tak samo jest z TSTIMER - tyle że tu każda struktura jest nieco bardziej rozbudowana czyli zawiera więcej elementów niż ala i bolek ;)

_________________
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  
 
PostNapisane: 20 gru 2016, o 23:23 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Bardzo dziękuję za odpowiedź właściwie coś takiego chodziło mi po głowie ale teraz wiem to na 100%.
Jeszcze jedno pytanie jeżeli chodzi o timer0_tick to:
"callback" będzie wskaźnikiem "timer0_tick"?
tablica "stimers[nr].tmr_callback" przyjmie wartość "timer0_tick" ?
w pliku .h w strukturze "TSTIMER" jest funkcja "void (* tmr_callback)( struct TSTIMER * tmr );" wskaźnik "*tmr_callback" pobierze wartość "timer0_tick" ale co ze wskaźnikiem "*tmr" w którym mijescu jest on inicjowany jakąś wartością ?
w strukturze jest typ void który definiuje strukturę o tej samej nazwie, już się pogubiłem ;)
Nie wiem dlaczego ale nie mogę zrozumieć timera programowego ;(



Góra
 Zobacz profil  
 
PostNapisane: 21 gru 2016, o 06:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

hihihi... :lol:
Normalnie leżę z rana ze śmiechu. :lol:
Ledwo doczytałem do końca. :lol:
Tak śmisznie w tej sali TORTU.
Kurcze , wszystko zapamiętałem. :shock:
Dzięki Mirku za taki przekaz. :)
To chyba był jakiś podprogowy :P i dotarł w 100%. :)



Góra
 Zobacz profil  
 
PostNapisane: 21 gru 2016, o 07:16 
Offline
Moderator
Avatar użytkownika

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

henryxxl napisał(a):
już się pogubiłem

pogubiłeś się bo jeszcze źle używasz nazewnictwa ... piszesz bowiem coś takiego nieco dziwnego:

henryxxl napisał(a):
tablica "stimers[nr].tmr_callback" przyjmie wartość "timer0_tick" ?

Jak może TABLICA przyjmować wartość ?? .. wbrew pozorom nawet jeśli myślałeś nieco inaczej a tak tylko napisałeś to robisz błąd bo:

1. bo ja nie wiem czy ty dobrze myślałeś i nie mam pewności jak ci to wyjaśnić
2. bo TABLICA jako TABLICA nigdy nie przyjmuje żadnej wartości, WARTOŚĆ mogą przyjmować jej poszczególne elementy

a w naszym wypadku w tej linijce

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


wpisujemy do elementu tablicy o nazwie stimers[] .... wskaźnik do funkcji obsługi naszego timerka ;) czyli naszą własną jakąś funkcję. Tym elementem tablicy jest oczywiście dokładniej mówiąc konkretny element struktury stanowiącej wybrany element tablicy.

Dalej piszesz:
henryxxl napisał(a):
w strukturze jest typ void który definiuje strukturę o tej samej nazwie, już się pogubiłem


a co to znaczy, że w strukturze jest typ void ? To ty w strukturze widzisz tylko TYPY ? to źle widzisz. W strukturze mamy do czynienia z jej elementami które mogą przybierać różne typy tak jak ala i bolek z wcześniejszych przykładów ale ....

ale w przypadku tym:

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


mamy do czynienia po prostu ze wskaźnikiem na funkcję - a nie z jakimś TYPEM VOID ;) No Panie spójrz pan

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


co widzisz w tej linijce wyżej ? jakiś typ void ? Nie - widzisz funkcję o nazwie "fun" do której przekazywany jest argument o nazwie "arg" i argument ten jest typu uint8_t zaś sama funkcja NIE ZWRACA żadnego rezultatu i dlatego po lewej stronie mamy słówko void! ;)

zatem to:

Cytuj:
typedef struct TSTIMER {
volatile uint16_t cnt;
uint8_t enabled;
uint8_t interval;
void (* tmr_callback)( struct TSTIMER * tmr );
} TSTIMER;


co oznaczyłem na czerwono to nie jest żaden JAKIŚ tam typ void tylko wskaźnik na funkcję. Wskaźnik nazywa się "*tmr_callback", do której to funkcji przekazujemy jeden argument w postaci wskaźnika o nazwie *tmr który jest typu strukturalnego TSTIMER zaś funkcja ta nie zwraca żadnego rezultatu bo po lewej masz słówko void ...

Twoim problemem jest pewnie wyobrażenie JAK DEFINIUJEMY WSKAŹNIK na funkcję - i w tym momencie odsyłam cię do moim nieskromnym zdaniem do ćwiczeń w GREENBOOKU ponieważ przez całą książkę ćwiczymy właśnie rejestrowanie callbacków czyli funkcji zwrotnych na potrzeby realizacji różnych bibliotek ;)

dlatego tak dużo tych ćwiczeń w GB i to na bardzo praktycznych przykładach ale tak na prawdę już napomknąłem o tym w Bluebooku - a widzę, że masz obie książki ...

nie mniej jednak wyżej postarałem się doprecyzować to o co pytałeś - troszkę jaśniej ? czy jeszcze nie do końca ?

_________________
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  
 
PostNapisane: 21 gru 2016, o 09:35 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Cytuj:
ale jak to ożenić - żeby był dostęp przez strukturę ? hmmm jak to zrobić ... no przede wszystkim dopuścić bolka do ali sparować ich - zamknąć w sali TORTU jaką jest struktura, no to lu ...
No teraz to już naprawdę wszystkiego się można spodziewać w języku "C" :o .No taki przykład jak sparować dwie zmienne przecież ja już nad niczym innym nie potrafię się skupić :lol: :lol: :lol: Mirek i to jest to :D.Ale jazda nigdy bym na to nie wpadł że takie rzeczy się dzieją w mojej atmedze32 :lol: ala i olek.Mirek nie mogę nigdzie na tym forum znaleźć znaczka +18 :lol:.Podłączysz takie coś :?:
Pozdrawiam.



Góra
 Zobacz profil  
 
PostNapisane: 21 gru 2016, o 11:34 
Offline
Moderator
Avatar użytkownika

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

ELEKTRON105 napisał(a):
.Mirek nie mogę nigdzie na tym forum znaleźć znaczka +18


oooops :oops: przepraszam jeśli kogoś uraziłem :lol: ... no właśnie nie było takiego znaczka :lol: A poza tym to przecież "ja tam nic zdrożnego nie mówiłem" :lol:

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

ELEKTRON105 napisał(a):
ja już nad niczym innym nie potrafię się skupić


No wiesz ;) nie jesteś pierwszą osobą, która gdy dowiedziała się po słynnym filmiku co to jest sala TORTU to nie może się skupić, itp ... ja wciąż mam rozbiegane oczy :lol: jak słyszę tę groźną nazwę sali :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  
 
PostNapisane: 21 gru 2016, o 11:51 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

mirekk36 napisał(a):
No wiesz ;) nie jesteś pierwszą osobą, która gdy dowiedziała się po słynnym filmiku co to jest sala TORTU to nie może się skupić, itp ... ja wciąż mam rozbiegane oczy :lol: jak słyszę tę groźną nazwę sali :lol:

Oczywiście ze strachu... :lol: :lol:

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
 
PostNapisane: 21 gru 2016, o 21:34 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Bardzo dobre wyjaśnienie, ma Pan rację że nie rozumiem wskaźników na funkcję. Biorę się za przerabianie GB bo prawdę mówiąc nie czytałem za bardzo tej cześci. Zapytam trochę na przód czy wyświetlanie warstwowe działa tylko na oryginalnych lcd hd44780 czy moga być tańsze(popularne na allegro?)



Góra
 Zobacz profil  
 
PostNapisane: 21 gru 2016, o 21:38 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
Zapytam trochę na przód czy wyświetlanie warstwowe działa tylko na oryginalnych lcd hd44780 czy moga być tańsze(popularne na allegro?)


a co to miałoby mieć za znaczenie ? ;) toż HD44780 to tak stay standard czipów że strach - chyba z lat 70-tych ;) nie ma więc oryginalnych albo nieoryginalnych ;) wszystkie jeśli są zgodne z HD44780 to będą działać i działają tak samo

_________________
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  
 
PostNapisane: 21 gru 2016, o 21:47 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

kiedyś przeczytałem gdzieś że tanie na allegro lcd są nie pełną kopią hd44780 ;)



Góra
 Zobacz profil  
 
PostNapisane: 16 sty 2017, o 11:28 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Żeby nie zakładać nowego tematu, słyszałem kiedyś że będzie wylaczana sieć 2g z której korzysta g510. Słyszeliście koledzy coś o tym?



Góra
 Zobacz profil  
 
PostNapisane: 16 sty 2017, o 12:31 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 288
Lokalizacja: Gdańsk
Pomógł: 13

Tak, ale na razie nie ma się czym martwić, gdyby to miało nastąpić niedługo, to już byłoby głośno w mediach.



Góra
 Zobacz profil  
 
PostNapisane: 16 sty 2017, o 12:59 
Offline
Użytkownik
Avatar użytkownika

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

henryxxl napisał(a):
Żeby nie zakładać nowego tematu, słyszałem kiedyś że będzie wylaczana sieć 2g z której korzysta g510. Słyszeliście koledzy coś o tym?


a jaki to ma związek z tablicami i timerami ? :)

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



Góra
 Zobacz profil  
 
PostNapisane: 16 sty 2017, o 13:08 
Offline
Moderator
Avatar użytkownika

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

Tytuł: Tablica struktury. Timery programowe.

henryxxl napisał(a):
Żeby nie zakładać nowego tematu, słyszałem kiedyś że będzie wylaczana sieć 2g z której korzysta g510. Słyszeliście koledzy coś o tym?


Przepraszam ale KOMPLETNY nonsens
- doklejanie zupełnie bez sensu pytania do wątku o całkowicie czymś innym - temat zamykam, a kolejna taka próba zakończy się niestety WARNEM na forum ...

Gdyby iść tą drogą - na zasadzie

"bo nie chcę zakładać nowego wątku"

to po co w ogóle zakładać na forum wątki ? Przecież KAŻDY mógłby zadawać swoje pytania w JEDNYM WĄTKU który byłby na forum ... czyli byłby dopiero groch z kapustą

ZAMYKAM ten wątek

_________________
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  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Ten wątek jest zablokowany. Nie możesz w nim pisać ani edytować postów.  [ Posty: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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