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



Teraz jest 19 mar 2026, o 02:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
 Tytuł: DS18B20 - UART
PostNapisane: 14 gru 2015, o 22:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam!
W jaki sposób przesłać do terminala wynik pomiaru temperatury z DS18B20
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

tak aby w fukcji display_temp znalazło się polecenie uart_puts() (biblioteka MK_UART z GB).
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 22:49 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam.

Po prostu zamień cel i cel_fract_bits na asci za pomocą funkcji itoa(), sprawdź subzero i jeśli wynik jest ujemny to zrób z niego '-' z całość sklej np. za pomocą np. strcat() i takiego stringa możesz już wyświetlić za pomocą uatr_puts(). Nie mam w tej chwili czasu, by napisać kod, ale myślę, że dasz radę.

Pozdrawiam, QuadMan



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2015, o 22:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

QuadMan napisał(a):
Witam.

Po prostu zamień cel i cel_fract_bits na asci za pomocą funkcji itoa(), sprawdź subzero i jeśli wynik jest ujemny to zrób z niego '-' z całość sklej np. za pomocą np. strcat() i takiego stringa możesz już wyświetlić za pomocą uatr_puts(). Nie mam w tej chwili czasu, by napisać kod, ale myślę, że dasz radę.

Pozdrawiam, QuadMan


Witam!
Bardzo dziękuję, będę próbował. Jeszcze krótkie pytanie (korzystam z uprzejmości). Wyświetlam w terminalu godzinę po parsowaniu danych z GPS - do rtc zapisuje się "godzina=godzina+1", a w terminalu wyświetla się "godzina" gdzie robię błąd?
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.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 07:50 
Offline
Użytkownik

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

avrfun napisał(a):
Witam!
Bardzo dziękuję, będę próbował. Jeszcze krótkie pytanie (korzystam z uprzejmości). Wyświetlam w terminalu godzinę po parsowaniu danych z GPS - do rtc zapisuje się "godzina=godzina+1", a w terminalu wyświetla się "godzina" gdzie robię błąd?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pozdrawiam

A to Ci w ogóle coś sensownego wyświetla w terminalu? A kompilator nie krzyczy o niezgodność typów?
Chodzi mi o miejsca w kodzie gdzie dodałem komentarze
Bo może wysyłasz w dwóch miejscach i dlatego coś przed zwiększeniem o 1 wyświetla?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 10:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Można ale nie trzeba zamieniać i łączyć.
Wyślij cel,
Wyślij znak "."
Wyślij cel_fract_bit
Wyślij znak entera i nowej linni
Przepraszam że tak bez kodu ale z pamięci mogę byków narobić a nie mam nic pod ręką. Po południu gdy nikt nie pomoże to podam moją myśl ubraną w kod.

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 13:30 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

W nawiązaniu do 2 postów Kolegów powyżej, Kolego avrfun masz zakomentowane itoa(), dlaczego? Przecież chcesz wyświetlać string, bo jeśli liczbę to musisz użyć uart_putint(). A.. już widzę, to będzie tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Kolego tomson5, można tak jak piszesz, ale albo zamienisz te zmienne cel i fract_bit na ascii, albo użyjesz uart_putint().
Ja osobiście nie lubię takich kombinacji, wolę najpierw przygotować sobie odpowiednio sformatowanego stringa w tablicy i "jednym ruchem" go wyświetlić. To moje podejście wynika głównie z tego, że ja często coś piszę pod FreeRTOS-em i tak jest mi łatwiej chronić dostęp do zasobów - w tym wypadku do sprzętu UART-a.

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 14:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

Witam!
Dziękuję. W chwili obecnej nie mam dostępu do kodu, ale widząc wielką życzliwość i zainteresowanie napiszę co mam i co chcę uzyskać. Po parsowaniu danych z GPS uzyskuję stringi hh, gg, ss i mogę je bez problemu wyświetlić zarówno na LCD: lcd_str(hh) lub wysłać do terminala uart_puts(hh) itd. Zmienne godzina, godzina+1 minuta, sekunda wyświetlam na LCD za pomocą funkcji lcd_int(godzina). Schody zaczęły się gdy dostrzegłem w terminalu, że hh różni się od rzeczywistej o godzinę i zacząłem na razie bez powodzenia kombinować jak wyświetlić "hh+1". Podobnie jest z temperaturą. Tu niestety jeszcze nic nie zdziałałem. Mam dane typu uint8_t np cel. Rozumiem, że należy ją przekonwertować na char za pomocą itoa i będzie ok? Przpraszam, ale nie mam dostępu do eclipse.Czy tak będzie dobrze?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Podobnie można chyba przekonwertować uint8_t godzina na char godzina za pomocą funkcji itoa?
Pozdrawiam

P.S.
MirkoT napisał(a):
A to Ci w ogóle coś sensownego wyświetla w terminalu? A kompilator nie krzyczy o niezgodność typów?

Nie wyświetla nic, a w stosownej linii w eclipse jest żółty trójkącik niezgodności typów niestety



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 14:45 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam ponownie.

Dla godzin masz kod powyżej - operacje dodawania godziny wykonujesz na zmiennych uint8_t, wynik itoa() jako string ( 2 znaki + 0 ) wyświetlasz na terminalu za pomocą uart_puts();

Dla temperatury masz 2 funkcje: tą "sklejającą" stringa i pomocniczą, zerującą bufor:

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


Wywołanie:

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


Myślę, że teraz wszystko jest jasne.

Pozdrawiam, QuadMan.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 15:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

QuadMan napisał(a):
Myślę, że teraz wszystko jest jasne.

Wielkie dzięki. Jak tylko dotrę do domu i odpalę kod napiszę natychmiast o efektach.
Pozdrawiam serdecznie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2015, o 19:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 450
Pomógł: 3

QuadMan napisał(a):
Myślę, że teraz wszystko jest jasne.

Witam ponownie!
Bardzo dziękuję za pomoc! Klikam "pomógł" - szybko i konkretnie! :D
Niech obrazki zastąpią słowa i wyrażą moją wielką radość ...
ObrazekObrazek
Pozdrawiam serdecznie
avrfun



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

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO