Pomiar temperatury przy pomocy Ds18B20 na kilku portach

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
simrowit
-
Posty: 29
Rejestracja: 11 kwie 2012, 20:41
Lokalizacja: Żywiec

Post autor: simrowit » 23 wrz 2013, 20:18

W podanym przykładzie numer seryjny czujnika jest pomijany (1 czujnik - 1 pin) więc nie ma potrzeby rejestracji czujników, odpada część kodu poświęcona temu problemowi.

Do linii może być podpięte wiele DS-ów i poprawnie odczytamy ich serial, w Bascomie służą do tego polecania :

1WSEARCHFIRST, 1WSEARCHNEXT.

Oczywiście Bascom bardzo nie szanuje zasobów ale i tu znowu powiem, że nie jest ani gorszy ani lepszy, ma swoje wady i zalety, swoich zwolenników i przeciwników, natomiast podaje przykład w Bascomie chociaż faktycznie kolega endurasek nie podał w jakim języku pisze swój program.

Co do wykorzystania dwóch pinów, świetny pomysł, bardzo by to uprościło rejestrację czujnika. Z menu wybieramy miejsce pomiaru, podłączmy czujnik do "linii serwisowej", zczytujemy jego ID , a później podpinamy do magistrali roboczej gdzie mierzy już to co ma mierzyć i to też jest OK.

Awatar użytkownika
matrix
Użytkownik
Posty: 1803
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 23 wrz 2013, 21:41

A poniżej (zdaje się) 6 czujników na jednej linii i bascom

http://mirley.firlej.org/sterownik_domowy

Awatar użytkownika
kayron
Użytkownik
Posty: 2090
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 24 wrz 2013, 17:16

Problemem przy tworzeniu takiego systemu, jest stworzenie rozwiązań uniwersalnych.
Czyli trzeba, tak pisać procedury, aby same, pobierały argumenty kalibracyjne, jak ilość odczytywanych w systemie czujników. To już nam mówi że procedura/ funkcja musi być jakąś pętlą, a nie CASEm czy IFem. dane stale należy przechowywać w EEPROM.
Ogólnie trzeba stworzyć miniaturowy system operacyjny, w ktorym jeden timer odmierza nam czas systemowy, w takt tego czasu wykonujemy, pomiary, detekcje, czy sterujemy procesami.
A wiec tak wybieramy jeden Timer, najlepiej najsłabszy, i robimy z niego RTC.
Teraz wybieramy sobie wygodną podstawę czasu. Wygodna jest tutaj podstawa będąca potęgą liczby dwa, bo wtedy jeden licznik może, łatwo mierzyć kilka czasów, ponieważ wystarczy śledzić tylko wartości poszczególnych bitów w jego bajcie.
Teraz poszczegulne, operacje w programie, wykonujemy w takt zegara systemu, i tyle.

ODPOWIEDZ