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



Teraz jest 16 lis 2024, o 15:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 3 wrz 2012, o 19:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 mar 2012
Posty: 52
Lokalizacja: Silesia
Pomógł: 0

Wszystko będzie ci działać :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 wrz 2012, o 19:11 
Offline
Moderator
Avatar użytkownika

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

Już chyba w innym wątku podawałem ci ten link

http://mirekk36.blogspot.com/2011/09/fa ... mow-z.html

ale widzę, że nie oglądałeś ??? nie czytałeś ? .... czy to nie tobie go podawałem ? ;)

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

Poza tym - jak to zwykle bywa - warto dokładnie przeanalizować działanie bibliotek i przynajmniej je zrozumieć - żeby zaraz nie pisać ich sobie od początku.

_________________
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: 3 wrz 2012, o 19:52 
Offline
Moderator
Avatar użytkownika

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

Pisałem w książce że autorem tych bibliotek jest ktoś inny niż ja, ja tylko je dosyć mocno zmodyfikowałem i poprawiłem kwestie związane z zaokrąglaniem wyniku do jednego miejsca po przecinku.

a zapis delay_us(60-15) pewnie byłby dla ciebie jaśniejszy gdybyś poczytał n/t timeslotów w 1wire. Pewnie że niczym to się nie różni od delay_us(45) .... ale mnie to wygląda na to że autor w ten sposób sobie pomagał dobierając czasy i widać jaki zapas sobie tu pozostawiał ok 15us .... Na pewno żadnego innego znaczenia to nie ma ;)

_________________
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: 3 wrz 2012, o 20:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8586
Pomógł: 337

SREG to po prostu Rejestr statusu

W rejestrze SREG znajdują się informacje o rezultacie ostatnio wykonywanej operacji arytmetycznej.
Informacja taka może zostać wykorzystana przez instrukcje warunkowe sprawdzające stan wyniku poprzedniej operacji.
SREG jest aktualizowany przez operacje wykonane przez ALU.
Nie zawsze zmienia się cała zawartość SREG, w zależnie od instrukcji, może to być np. jeden bit.
Wartość bitowa SREG nie jest automatycznie zapamiętywana przy przejściu do wykonywania przerwania i odzyskiwana po jego wykonaniu i dlatego trzeba to wykonać programowo.

zawartość SREG :

---- Bit: 7 6 5 4 3 2 1 0
Znaczenie: I T H S V N Z C

Wszystkie bity SREG mają wartość początkową 0

Znaczenie :
I = Global Interrupt Enable
T= Bit Copy Storage
H= Half Carry Flag
S= Sign Bit
V= Two’s Complement Overflow Flag
N= Negative Flag
Z= Zero Flag
C= Carry Flag

Ot i tyle :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 wrz 2012, o 20:27 
Offline
Moderator
Avatar użytkownika

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

Ok już wyjaśniam - tego wyłączania przerwań na czas obsługi najważniejszych timeslotów nie da rady uniknąć w takim sposobie obsługi 1wire z uwagi na to że inne przerwania jak się domyślasz mogłyby łatwo zakłócić czas tych timeslotów.... więc to już chyba zrozumiałe.

Są one jednak te rozkazy cli() wykonywane aby wyłączanie przerwań następowało na możliwie najkrótsze momenty i jak najmniej. Zwykle jak ktoś sam pisze obsługę 1wire to na końcu dowala cli() np na transmisję całego bajtu i potem jest lipa ;) i zakłócenia np w multipleksowaniu - a tu są bardzo zmyślnie przemyślane że tak powiem - przeanalizuj to dokładnie to ci się do końca w głowie poukłada.

odnośnie SREG - to jest rejestr w prockach AVR z najbardziej istotnymi flagami odnośnie jego działania. Normalnie nie używa się go w C. Nawet i tutaj zamiast tych cli() czy sei() można było użyć tzw "atomic block" atomowego dostępu jaki serwuje przecież AVR GCC ale jak ktoś zna asembler to często zrobi to sobie sam - ręcznie w taki właśnie sposób

w skrócie rzecz biorąc w rejestrze SREG jest informacja o tym czy są włączone globalne przerwania czy nie

bo teraz pomyś

jeśli np nie były włączone przerwania a my w kodzie napiszemy tak:

Kod:
cli();
//... jakiś kod
sei();

to co ? na siłę włączysz przerwania prawda ? a wcześniej ich nie było włączonych więc może zdarzyć się brzydka rzecz ;)

dlatego najpierw zapamiętywany jest w zmiennej sreg rejestr SREG, który zawiera flagę przerwań globalnych a po zakończeniu kodu odtwarzamy stan tego rejestru więc jeśli wcześniej były włączone to się znowu włączą, a jeśli nie były wcześniej włączone to się i tak nie włączą

Kod:
sreg=SREG; // zapamiętujemy stan przerwań globalnych
cli();
//... jakiś kod
SREG=sreg; // odtwarzamy poprzedni stan przerwań


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

O widzisz Sun ładnie ci wyżej rozpisał nawet znaczenie bitów w SREG - więc sam widzisz co znaczy pierwszy bit ;)

_________________
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: 4 wrz 2012, o 20:33 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
Mirku, 7 bit ;) :D


Pierwszy bit ..... pierwszy opisany bit przez SunRivera

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

Antystatyczny napisał(a):
Eclipse twierdzi, że ten średnik jest podejrzany. To jest prawidłowy zapis, czy jakiś błąd i mam szukac np. erraty?


A szukaj erraty ;) .... może znajdziesz ..... tylko nie pytaj mnie gdzie bo ja nie wiem ...

a jak nie znajdziesz to poczytaj to:

post13899.html#p13899

może ci to pomoże - tzn powinno pomó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: 4 wrz 2012, o 20:41 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

W tym IFie zrobiłeś porównanie, ale nie wykonujesz żadnej akcji, tylko zakończyłeś warunek średnikiem więc co się dziwić że kompilator się "obraża" ;)

Właśnie patrzę na kod z DVD pierwszej książki Mirka i dokładnie z tym średnikiem jest tak jak pokazałeś.

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2012, o 21:21 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Przepraszam. Po napisaniu posta dopiero mnie tknęło aby sprawdzić kod na DVD z 1 książki i zobaczyłem że korzystasz z tego kodu. Dlatego poprawiłem post. :) P.S. Po tym ifie to wystarczy nawiasy klamrowe {} wstawić i ten średnik wywalić i już będzie OK :D

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2012, o 21:33 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Po twoim poście przeanalizowałem kod tylko pod wzglendem składni bo DS18B20 kodami Mirka jeszcze nie męczyłem ;)

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2012, o 22:03 
Offline
Moderator
Avatar użytkownika

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

A ja podpowiem, że to nie jest żaden błąd kompilatora ponieważ on dopuszcza taką sytuację i jest ona prawidłowa. Czy nie widzicie panowie że tam z lewej strony jest taka jakby pchła ? obrazek pchełki ? to są błędy nie kompilatora - bo one objawiałyby się w konsoli ;) .... Pchła oznacza TYLKO i WYŁĄCZNIE że wbudowane dopiero od wersji JUNO tzn mechanizm "Code Analysis" uważa że to jest coś nie tak. Więc są dwa znowu rozwiązania albo i trzy:

1. wziąć starsze Eclipse i błędu (pchły) nie będzie
2. wstawić nawiasy klamrowe puste i błędu nie będzie
3. WYŁĄCZYĆ komunikowanie tego durnego błędu albo w ogóle wyłączyć ten cały Code Analysis w Juno ;)
(a przecież jak przytrzymasz mychę na tej pchle to zobaczysz właśnie błąd podkreślony na obrazku niżej

Obrazek

_________________
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: 4 wrz 2012, o 22:16 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Mirku, z całym szacunkiem. Sam wiesz że pomagając w nauce języka C powinno się zwracać uwagi bardziej na poprawność składni niż na "ptaszki" w ustawieniach środowiska?

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2012, o 22:46 
Offline
Moderator
Avatar użytkownika

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

Piotrek_P napisał(a):
Mirku, z całym szacunkiem. Sam wiesz że pomagając w nauce języka C powinno się zwracać uwagi bardziej na poprawność składni niż na "ptaszki" w ustawieniach środowiska?


Proszę my wyjaśnić co ma na celu ta uwaga do mnie zanim odpowiem źle ją interpretują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: 4 wrz 2012, o 23:37 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
Chodziło mi o porządek w kodzie, stąd to pytanie. Wszystko juz jest jasne i temat można uznać za zamknięty ;)


Kłopot tylko w tym jak widzę, że kolega Piotrek_P nie za bardzo wie co to błąd składni a co to jest mechanizm "Code Analysis" wbudowany w Eclipse od wersji Juno. Ale co tam - lepiej zwrócić mi uwagę ;) że źle tłumaczę - zamiast samemu chociaż spróbować dojść o co chodzi ....

To co tłumaczyłem jest ważne, bo w przeciwnym wypadku niedługo będzie cały wysyp takich zgłoszeń DZIWNYCH błędów w Eclipse Juno albo w kodach z książki i pewnie zaraz do erraty będą zgłaszane ? ;) ..... eeeeeh panowie panowie - zanim takie uwagi napiszecie to postarajcie się chociaż odrobinę najpierw własnego wysiłku włożyć - albo chociaż dopytać .... zamiast pouczać (to do kolegi Piotrek_P).

_________________
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: 5 wrz 2012, o 18:56 
Offline
Moderator
Avatar użytkownika

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

rozumiem ale dlatego opisałem drugi przypadek czyli:

"Suspicious semicolon"

;) czyli podejrzany średnik

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

Strefa czasowa: UTC + 1


Kto przegląda forum

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