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



Teraz jest 19 kwi 2024, o 20:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 13 maja 2017, o 14:00 
Offline
Nowy

Dołączył(a): 12 lut 2017
Posty: 9
Pomógł: 0

Witam!
Mam pewien problem związany z wyżej wymienionymi czujnikami, a raczej w pewnym zakresie z ich obsługą. 2 czujniki na jednej magistrali, odczytywanie kodów ROM, i odczyt temperatury z maksymalną rozdzielczością, no wszystko gra. Zdziwił mnie jednak fakt, który zauważyłem ostatnio. Po podgrzaniu czujnika do temperatury powyżej 90-95 stopni wyświetlają mi się "kwiatki" w postaci dodatnich i ujemnych liczb z zakresu setek i nawet tysięcy występujących na przemiennie. Oczywiście sprawa cichnie po ostudzeniu czujnika poniżej "temperatury błędu". Czy mógłby ktoś mnie naprowadzić w którym miejscu popełniam błąd? Pragnę zaznaczy że nie używam bibliotek z książek i odczytane wartości temperatury zapisuję w tym paskudnym :twisted: , zajmującym czas i zasoby procesora formacie float. Robię to ze względu na wymaganą dokładność regulacji temperatury w tworzonym projekcie i łatwość operowania danymi przy wprowadzaniu do regulatora na obecnym poziomie wtajemniczenia ;) . Konwersja w celu wyświetlania opiera się o funkcję dtostrf.

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

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


kod w funkcji main odpowiedzialny za konwersję i wyświetlanie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wynik1 i 2 to 11 elementowe tablice typu char, T1 i T2 to zmienne typu float



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2017, o 14:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Może coś się dzieje z zakresami zmiennych przy konwersji dla potrzeb wyświetlacza

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2017, o 15:13 
Offline
Nowy

Dołączył(a): 12 lut 2017
Posty: 9
Pomógł: 0

Kombinowałem już trochę w tym temacie, ale bez skutku :cry:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2017, o 17:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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

tu bym szukał przyczyny - jako czwarty argument masz podać wskaźnik a nie stałą tak przynajmniej wynika z opisu funkcji
natomiast pierwszy argument to "double __val" ale jak masz float to powinno być ok. bo AVR-GCC double i tak zamieni na float

poza tym pokaż jak masz zadeklarowane zmienne T1,T2 oraz wynik1,wynik2

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2017, o 09:54 
Offline
Nowy

Dołączył(a): 12 lut 2017
Posty: 9
Pomógł: 0

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


extern, bo zostały zadeklarowane w innym pliku, podpatrując w poradnikach styl Mi(rka)strza zrobiłem sobie plik common, żeby w mainie porządek mieć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2017, o 11:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Kurczę no niby wszystko ok.
Ja bym spróbował zobaczyć zmienne T1 i T2 na LCD lub w terminalu jak to wygląda przed błędem i po. Może będzie jakiś trop

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2017, o 14:17 
Offline
Nowy

Dołączył(a): 12 lut 2017
Posty: 9
Pomógł: 0

Podstawienie wskaźnika nic nie zmieniło. Terminala brak, T1 i T2 są typu float, bezpośrednio ich nie wyświetlę. Rzutować na jakiś inny typ pomijając to co po przecinku?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2017, o 06:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

ja bym zadeklarował T1 i T2 jako int8_t i zobaczył jak to się zachowuje

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2017, o 09:28 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

z tego co pamietam obliczenie temperatury u mnie wygladalo tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Nie sprawdzałem powyżej 90 stopni, ale chyba działało bez problemu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2017, o 11:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

wchpikus napisał(a):
Nie sprawdzałem powyżej 90 stopni, ale chyba działało bez problemu


:lol:

_________________
Pomóżcie mi stanąć na nogi



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