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



Teraz jest 12 lis 2024, o 20:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 27 lut 2017, o 16:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lip 2013
Posty: 208
Lokalizacja: Kielce
Pomógł: 15

Witam

Czy któryś z forumowiczów "walczył" z odczytywaniem daty z RDS na avr-ach?

Żeby uniknąć typu float, wykonuję mnożenia tak,aby mieć tylko liczby całkowite. Niestety i tak mi wychodzi np. rok odczytany z mjd jako 116,99 - a skoro to liczba całkowita - zostaje mi 116, więc jak potem dodam 1900, to otrzymuję rok 2016 niestety.

Wieczorem załączę kod jak to u mnie wygląda.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2017, o 17:41 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 32
Pomógł: 1

Witam,

poczytaj ten wpis Mirka o zaokrąglaniu wyniku podczas przeliczania float na int. To Ci powinno pomóc.http://mirekk36.blogspot.de/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

Pozdrawiam,
Marcin


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2017, o 23:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2014
Posty: 37
Pomógł: 2



Tak mi się skojarzyło :twisted:

Przepraszam za off-topic...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2017, o 01:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lip 2013
Posty: 208
Lokalizacja: Kielce
Pomógł: 15

marcin_c napisał(a):
Witam,

poczytaj ten wpis Mirka o zaokrąglaniu wyniku podczas przeliczania float na int. To Ci powinno pomóc.http://mirekk36.blogspot.de/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

Pozdrawiam,
Marcin


Dziękuje Panowie, już wiem gdzie tkwił błąd w moim rozumowaniu.

Dla daty 2017-02-27 rds odbierze wartość mjd = 57811.
Rok = utcYear (odczytany z MJD) + 1900 + (jak kolega dambo nakierował mnie offset 1 lub 0). W naszym przypadku utcYear powinno wynosic 116.

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


Tu wychodzi 116,99. Zmyliła mnie funkcja floor. Teraz już wiem, ze obcina ona to co po przecinku - zaokragla zawsze w górę. Wiec floor(116,99) = 116

Nie wiedząc o tym, postanowiłem pozbyć się floatów - małe mnożenie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wyszło znowu 116,99 - i elegancko, bo przeciez utcYear u mnie to liczba całkowita wiec mam 116!

Brakujaca jedynka "offset" jest liczony z wartosci utcMonth - jeśli otrzymamy (juz po zaokragleniu) wartość... 14 lub 15 - wtedy dodajemy do roku 1.

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


Za utcYear podstawiamy Inta 116 i wychodzi 15,88 czyli 15. Więc odnalazł mi się brakujący rok :)

Wartość miesiąca = utcMonth - 1 - offset * 12 = 15-1-12 = 2. Luty :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2017, o 09:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

danny napisał(a):
Zmyliła mnie funkcja floor. Teraz już wiem, ze obcina ona to co po przecinku - zaokragla zawsze w górę.
Czepiam się, ale funkcja floor zaokrągla zawsze W DÓŁ, nie w górę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2017, o 15:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lip 2013
Posty: 208
Lokalizacja: Kielce
Pomógł: 15

dambo napisał(a):
ciesze się, że pomogło to co wrzuciłem :)

Na jakim moduliku masz odczyt tego RDSa?


Moduł si4703 breakout board od Chińczyka z ebaya.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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