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



Teraz jest 20 lut 2020, o 05:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 13 sty 2020, o 14:19 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 986
Pomógł: 69

Witam,

patrzę sobie w kod biblioteki jak w temacie i zastanawia się nad jedną rzeczą. W pliku źródłowym mk_atcan.c w linii 214 następuje przypisanie zmiennej:

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


Zmienna status jest elementem jedno-bajtowej unii, czy w związku z tym, potrzeba jeszcze kasować zmienne w liniach 215 i 216?

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


Moim zdaniem linia 214 załatwia sprawę, jeżeli się mylę to proszę o naprowadzenie w czym rzecz, będę wdzięczny, pozdrawiam :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2020, o 14:29 
Offline
Moderator
Avatar użytkownika

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

Jarecki napisał(a):
Zmienna status jest elementem jedno-bajtowej unii,

czyli odpowiada TYLKO za pierwszych 8 bitów, a później masz jeszcze kolejne całe bajty rx_count i tx_count, no i to one są kasowane oddzielnie. Nie zawsze bowiem musi być potrzeba kasowania liczników CANTEC i CANREC


Autor postu otrzymał pochwałę

_________________
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: 13 sty 2020, o 14:41 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 986
Pomógł: 69

mirekk36 napisał(a):
Jarecki napisał(a):
Zmienna status jest elementem jedno-bajtowej unii,

czyli odpowiada TYLKO za pierwszych 8 bitów, a później masz jeszcze kolejne całe bajty rx_count i tx_count, no i to one są kasowane oddzielnie. Nie zawsze bowiem musi być potrzeba kasowania liczników CANTEC i CANREC


Dzięki za wyjaśnienie :) pierwszy raz widzę taki zapis, zupełna nowość ale szczerze mówiąc nie bardzo to czuję



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2020, o 14:46 
Offline
Moderator
Avatar użytkownika

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

Jarecki napisał(a):
ale szczerze mówiąc nie bardzo to czuję

No spójrz - masz w unii:

1. strukturę, która ile bajtów zajmuje ? chyba widzisz, że równo 3 bajty.
a. osiem bitów na pola bitowe (jeden bajt)
b. jeden bajt na rx_count
c. jeden bajt na tx_count

tak czy nie ? ;) łącznie TRZY bajty

ale w tej samej unii masz zmienną status - zmienna 8-bitowa.

Czyli ta zmienna status zgodnie z zasadą działania UNII pokrywa tylko pierwsze 8 pól bitowych - dzięki czemu jednym ruchem można szybko wyzerować wszystkie pola bitowe

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


zamiast pisać osiem oddzielnych linijek do kasowania każdego pola bitowego oddzielnie.

Teraz jaśniej ?

_________________
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: 13 sty 2020, o 14:51 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 986
Pomógł: 69

Teraz jaśniej :)

Tego mi brakowało:

mirekk36 napisał(a):
Czyli ta zmienna status zgodnie z zasadą działania UNII pokrywa tylko pierwsze 8 pól bitowych


:)

Czyli, żeby jednym ruchem skasować wszystkie pola bitowe i tx_count trzeba by użyć zmiennej status uint16_t zamiast uint8_t :)

Dzięki za wyjaśnienie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2020, o 14:54 
Offline
Moderator
Avatar użytkownika

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

Jarecki napisał(a):
uint16_t zamiast uint8_t

to by ci starczyło tylko na skasowanie DWÓCH bajtów panie kochany ... no jak inaczej ? A przecież widzisz i pisałem że mamy TRZY bajty w strukturze

to musiałbyś zrobić zmienną status typu uint32_t ;) czterobajtową - wtedy by skasowała wszystkie trzy bajty z tej unii a jeden bajt leżałby odłogiem (ten najstarszy zmiennej status) ;) Tyle że w wypadku tej biblioteki - jak wspominałem nie jest dobrym pomysłem kasowanie tych dwóch pozostałych bajtów, dlatego to zostało tak zorganizowane jak jest. No ale mam nadzieję, że dzięki temu już wiesz w czym rzecz i przyda ci się to później w pisaniu swoich kodów ;)

_________________
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: 14 sty 2020, o 07:28 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 986
Pomógł: 69

mirekk36 napisał(a):
to by ci starczyło tylko na skasowanie DWÓCH bajtów panie kochany ... no jak inaczej ? A przecież widzisz i pisałem że mamy TRZY bajty w strukturze


dlatego napisałem

Jarecki napisał(a):
Czyli, żeby jednym ruchem skasować wszystkie pola bitowe i tx_count trzeba by użyć zmiennej status uint16_t zamiast uint8_t :)


czyli dwa bajty a chcąc skasować jeszcze rx_count wtedy trzeba by użyć trzech bajtów :)

------------------------ [ Dodano po: kilkunastu sekundach ]

mirekk36 napisał(a):
No ale mam nadzieję, że dzięki temu już wiesz w czym rzecz i przyda ci się to później w pisaniu swoich kodów ;)


Na pewno się przyda, dzięki Mirku :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2020, o 12:16 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 369
Pomógł: 18

A czy już zaczęły się wysyłki bibliotek z can?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2020, o 12:45 
Offline
Moderator
Avatar użytkownika

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

już wyszły do wszystkich z PP teoretycznie. Jeszcze nie wyszły do ludzi którzy zakupili to w sklepie ale na dniach też wyjdą

_________________
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: 14 sty 2020, o 12:58 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 369
Pomógł: 18

no to muszę się odezwać do Pani Anety w tej sprawie.
już nie aktualne, przejrzałem skrzynkę pocztową i była w spamie .przepraszam za kłopot.



Ostatnio edytowano 14 sty 2020, o 13:03 przez tonygryps, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2020, o 12:59 
Offline
Moderator
Avatar użytkownika

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

tonygryps napisał(a):
no to muszę się odezwać do Pani Anety w tej sprawie.

Napisz do mnie na biuro@atnel.pl i podaj maila z jakiego logowałeś się na PP

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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