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



Teraz jest 6 sie 2026, o 21:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 22 paź 2015, o 09:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 cze 2014
Posty: 42
Pomógł: 0

Witam,

Mam dosyć dziwny problem z obsługą czujników DS18B20.
Procesor Atmega 128 zasilany z przetwornicy LM2596 5V.
Czujniki DS18B20 (8 sztuk) podpięte do jednego pinu PC0.
Pin Data podciągnięty do zasilania poprzez rezystor 1k
Obrazek

Każdy z czujników był podłączony osobno i odczytano ROM Code z jego adresem.
Wszystkie adresy są prawidłowe bo każdy z nich poprawnie pokazywał temperaturę.
Czujniki umieszczona na takich samych przewodach, lecz o różnych długościach od 1m do 7m.
Biblioteka do obsługi DS zaczerpnięta z niebieskiej Biblii.

I teraz mam taki problem, że jak podłączę 4/5 czujników to wszystko działa poprawnie.
Obrazek

Natomiast jak podłączę pozostałe to już pojawiają się błędy w transmisji:
Obrazek

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.

Czy ktoś wie co mogę na to zaradzić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2015, o 09:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 cze 2014
Posty: 42
Pomógł: 0

Transmisja wydaje mi się że działa poprawnie bo przesyłam różnej wielkości Stringi w jedną i w drugą stronę a takich bubli nie ma.
Co do temperatura1-8 to nic nie dodaje i może tutaj tkwi problem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tylko jak mam dodać tego nulla?

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


i wygląda na to że działa poprawnie
Obrazek

Dzięki za naprowadzenie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2015, o 09:40 
Offline
Moderator
Avatar użytkownika

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

tominio_1 napisał(a):
Tylko jak mam dodać tego nulla?

Prosto zajrzeć do Bluebooka i poczytać o tablicach ... znakowych .... Wtedy będziesz wiedział, że skoro przygotowujesz tablicę na 4 znaki swojej temperatury ( a faktycznie wkładasz tam różną ich ilość (zastanów się dlaczego) ... to tego NULL'a .... zero po prostu - SAM MUSISZ dokładać, albo zerować tablicę przed wpisem nowej wartości.

Ale i tak to co przyprawia o dreszcze w tym kodzie to używanie volatile float temp1; brrr masakra :(

jakby tego nie można było wysłać na terminal bez tego kociego floata .... a już kompletnie nie wiadomo po co jeszcze doklepałeś volatile ?

Co za problem wysłać sobie na rs232 po kolei

subzero
cel
.
cel_fract_bits

czyli znak, później dziesiątki, później kropkę i później dziesiętne części stopnia ?

------------------------ [ Dodano po: 11 minutach ]

tominio_1 napisał(a):
Zmieniłem trochę deklaracje tablic temperatura1-8

To ci nie pomaga a wręcz przeszkadza i poza tym też w końcu dostaniesz dziwne wyniki ;) jak zaczną skakać temperatury np z -12.1 a 3.7 - to się zdziwisz co dostaniesz czasem za dziwną temperaturę ;) .... Zrobienie tych tablic ze spacjami to już pomijam że marnotrawstwo pamięci (chociaż możesz powiedzieć że to cię mało obchodzi bo masz m128 ;) .... ) ..... ale po prostu tak się nie robi i jeszcze będziesz miał przez to babole

poza tym, w tym twoim kodzie można byłoby magazynować te temperatury bez ŻADNYCH tablic znakowych, TYLKO i WYŁĄCZNIE jako liczby ;) np

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


wkładać do nich temperatury tak:

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


a wysyłać je jakąś fajną funkcją zamiast dziesiątkami mega IF()'ów

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



pomyśl ile się kod uprości, o ile będzie czytelniej a do tego nie ma ANI JEDNEGO floata w programie ani niepotrzebnych tablic znakowych

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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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