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



Teraz jest 28 mar 2026, o 20:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 10 gru 2014, o 08:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Witam wszystkich,

Borykam sie z pewnym problemem. Wiec uzywajac Mirkowskich bibliotek do I2C staram sie odczytac wartosc komorki i wczytac ja do UNIO/STRUKTURY :) przygotowanej przeze mnie.

Aby odpowiedziec na pytanie dlaczego - poniewaz komorka ktora odczytuje przechowuje 2 rozne parametry. Pierwsze 2 bity to parametr "A" a pozostale 6 to parametr "B"

Przygotowalem sobie unie

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


Nastepnie staram sie odczytac te wartosci uzywajac komendy (rzutowanie na wskaznik uint8_t)

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 w tym miejscu niestety moj program umiera. Wiec zastanawiam sie czy gdzies nie popelniam jakiegos bledu ? Bo jesli odczytam komorke po prostu jako uint8_t - to nie mam zadnego problemu :O

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 11:05 
Offline
Moderator
Avatar użytkownika

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

Moim zdaniem powinno to działać poprawnie, bo rzutowanie prawidłowe i & ... więc powinno śmigać

_________________
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 gru 2014, o 11:15 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

gdyby napisać

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

to nie trzeba by rzutować ;-) (zakladając że TWI_read_buf przyjmuje uint8_t * )

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 13:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

A może zbyt wysoki poziom optymalizacji? Ja kiedyś coś robiłem na wskaźnikach i przy -O1 jeszcze program dawał radę ale przy -O2 już się wysypywał. Może masz tak samo?

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 13:51 
Offline
Moderator
Avatar użytkownika

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

Na 100% takie rzutowanie musi zadziałać jak zrobił - to TYLKO rzutowanie na adres w pamięci ;)

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

jedynie nie można stwierdzić co się dzieje - po tym opisie :(

RafPe napisał(a):
No i w tym miejscu niestety moj program umiera.


co to znaczy ?

_________________
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 gru 2014, o 14:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Hey wszystkim ,

Zbyt szybko napisalem ,ze nie dziala. Dokonywalem zbyt wielu zmian w zbyt wielu miejscach w kodzie i przeoczylem fakt , ze probuje odczytac zmienna uzywajac innej uni niz opsiana tutaj.

Sposob opisany przeze mnie na poczatku z rzutowaniem dziala od reki :) Sorry za zamieszanie :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 16:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

mokrowski napisał(a):
Z kronikarskiego obowiązku tylko przypomnę że w argumencie funkcji powinien być typ TUMOJA a nie uintCOŚtam. Ale to C więc to tylko ,,czepialstwo dla człowieka" :) Kompilator ma to gdzieś...



A ze zapytam czy moglbys rozwinac mysl ? Bo zaciekawiles mnie tutaj

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 17:39 
Offline
Moderator
Avatar użytkownika

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

RafPe napisał(a):
A ze zapytam czy moglbys rozwinac mysl ? Bo zaciekawiles mnie tutaj


Mógłbyś napisać sobie np funkcję:

Cytuj:
TWI_read_buf( uint8_t adr, uint8_t madr, uint8_t len, TUMOJA par);


wtedy nie musiałbyś robić takiego dzikiego rzutowania

ale ..... tworzenie kolejnej instancji funkcji tylko na potrzebę czytania tej jednej zmiennej może się mijać z celem

więc zdecydowanie lepiej było zastosować sposób podany przez kolegę xor - bo wtedy typ ci się zgadza i nie trzeba rzutować ... i teoretycznie działa z twoim zamysłem pierwotnym

bo to :

Cytuj:
TWI_read_buf( I2C_Address, 1, 1, (uint8_t * ) &zmienna);


pomimo że zadziała - to jest nieczytelne ;)

_________________
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 gru 2014, o 19:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

mirekk36 napisał(a):
RafPe napisał(a):
A ze zapytam czy moglbys rozwinac mysl ? Bo zaciekawiles mnie tutaj


Mógłbyś napisać sobie np funkcję:

Cytuj:
TWI_read_buf( uint8_t adr, uint8_t madr, uint8_t len, TUMOJA par);


wtedy nie musiałbyś robić takiego dzikiego rzutowania

ale ..... tworzenie kolejnej instancji funkcji tylko na potrzebę czytania tej jednej zmiennej może się mijać z celem

więc zdecydowanie lepiej było zastosować sposób podany przez kolegę xor - bo wtedy typ ci się zgadza i nie trzeba rzutować ... i teoretycznie działa z twoim zamysłem pierwotnym

bo to :

Cytuj:
TWI_read_buf( I2C_Address, 1, 1, (uint8_t * ) &zmienna);


pomimo że zadziała - to jest nieczytelne ;)


To pewnie dla czytelnosci dla potomnych.... jako , ze pisze biblioteke dla forumowiczow pewnie uzyje porady kolegi xor

_________________
sig off ;(



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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