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



Teraz jest 24 lut 2025, o 00:10


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 30 mar 2015, o 17:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

Cześć wszystkim

Tworząc jeden z projektów na czujniku temp wykorzystałem metodę 1wire ale problem jaki się tam pojawia to to że gdy chcę wysterować jakieś urządzenie, czas potrzebny na konwersję pomiaru zatrzymuje mi również podłączone urządzenie na ten krótki, ale jednak istotny czas.
Postanowiłem to rozwiązać za pomocą przerzutnika typu D - UCY7474. Wszystko podłączyłem, lecz nie działa, proszę o sprawdzenie schematu czy nie mylę się w ogóle w swoim pomyśle. I pytanie czy to rozwiązanie nie trafione i od razu przerzucić się na ADC.

Dokumentacja UCY7474 mówi, że wystarczy sterować pinami D oraz CLK aby wysterować wyjście:

CLK 0->1, D=0, Q=0
CLK 0->1, D=1, Q=1

zamieszczam zdjęcie schematu, pobieżne bo tylko układ wykonawczy nie działa. Dzięki za pomoc.

Obrazek

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 19:50 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 205
Lokalizacja: Poznań
Pomógł: 22

Nie dokońca rozumiem o co Ci chodzi, po co używać przerzutnika? Przecierz na pinie procesora możesz tak samo ustawić stan jaki chcesz i on nie zniknie. Pozatym możesz zlecić konwersję, w czasie konwersji obsługiwać urządzenie i po zakończeniu konwersji odczytać wynik.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 20:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

Zniknie ponieważ przy konwersji temperatury na DS18b20 jest linijka:

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


która zamraża mikroprocesor i takim trafem mój pin wyjściowy na ten czas przechodzi w zero. Cały w tym problem, że czujnik potrzebuje ten czas dla siebie.

Chciałbym aby pomiar i konwersja w ogóle nie miały wpływu na pin wyjściowy, który ma być względem danej temp wysterowany albo nie - z stąd przerzutnik.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 20:57 
Offline
Nowy

Dołączył(a): 05 lis 2013
Posty: 13
Pomógł: 1

a może zamiast delay ,napisać kilka instrukcji zeby odmierzył te 750ms.Osobiście staram się tak robić ,zajmuje troche pamięci bo to i dodatkowe zmienne ,ale pomaga. Delay używam w plikach h. Można to zrobić ,ja piszę takie procedurki dla czasów od 10ms do 1s. nie ma żadnych opóznień,żadnych zamrożeńW trakcie takiego odliczania zmienna ana poczatku ma 0 po upływie czasu 750ms przyjmuje 1 i wtedy może nastąpić odczytu,może być nawet 800ms lub więcej.W międzyczasie procek może wykonać inne zadanie..Uwierz mi warto pomyśleć na tym.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 21:20 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 205
Lokalizacja: Poznań
Pomógł: 22

Czy Ty masz podłączony ds18b20 i to urządzenie do jednego pinu procesora?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 21:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

mar0791: chętnie zobaczyłbym taki kod.
gumeni: nie, są połączone na zupełnie różnych pinach. Po prostu delay powoduje to, że mikroprocesor gubi stan na pinie który mnie interesuje.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Ostatnio edytowano 30 mar 2015, o 21:32 przez Lex_, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 21:32 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 205
Lokalizacja: Poznań
Pomógł: 22

No to w jaki sposób obsługa czujnika może powodować zmiane stanu na innym pinie niż na tym do którego jest on podłączony.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 21:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

Mnie też to zaskoczyło dlatego pytam z czy przerzutnik da radę.

edit: sprawdziłem to i urządzenie cyklicznie się wyłącza i włącza. Taki bug.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Ostatnio edytowano 30 mar 2015, o 21:34 przez Lex_, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2015, o 21:34 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 205
Lokalizacja: Poznań
Pomógł: 22

Pokaż cały kod i narysuj schemat jak masz wszystko podłączone.



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

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

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


Obrazek

Dzięki za pomoc.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 mar 2015, o 00:12 
Offline
Użytkownik

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

Witam,

daj sobie spokój z tym przerzutnikiem, nie jest Ci do niczego potrzebny. Zakładam, że masz BB, przyjrzyj się dokładnie rozdziałowi z Projektem Wielozadaniowym.

Jest już późno, więc w skrócie:

1. _delay_ms(750), nie jest w pętli głównej do niczego potrzebny.
2. Niepotrzebnie wywołujesz funkcję DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL ) w kółko.
3. Masz timer programowy, użyj go właściwie. Wyrażenie sekundy%x oznacza resztę z dzielenia sekundy przez x, czyli tak jak masz w kodzie poniżej, dla parzystych sekund będzie pomiar, dla nieparzystych interpretacja ( uruchamianie tej pompy ).
4. Coś co jest większe od 49 jest też i większe od 46, poprawiłem warunek. Domyślam się, że pewnie chciałeś histerezę dla pompy, tak ?
5. Do tego pinu, do którego masz podłączone wejście przerzutnika D, podłącz bezpośrednio ten rezystor od anody diody optotriaka.

Poniżej kod z poprawkami:

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


Pozdrawiam, QuadMan.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 mar 2015, o 07:09 
Offline
Użytkownik

Dołączył(a): 11 wrz 2013
Posty: 709
Zbananowany użytkownik

Pomógł: 23

Hej.
O boniu, ale ludzie lubią sobie życie utrudniać ;).
Przecież sam używasz timera programowego/heart beat czy jak tam zwał więc wywal delay-a i masz wszystko bez żadnego blokowania.
Jeśli nie masz książek Mirka, a znasz trochę angielski to poczytaj jak się takie "bicie serca" wykonuje.

Poza tym powiem tak bez analizy kodu nawet - jak może Ci się zmieniać stan na pinie podczas delay-a, przecież wówczas połowa (albo i więcej) urządzeń opartych o uC by wariowało?

--
Grzegorz...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 mar 2015, o 11:14 
Offline
Nowy

Dołączył(a): 05 lis 2013
Posty: 13
Pomógł: 1

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

i dalej normalnie
i w przerwaniu timera


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

oczywiscie musisz dac na poczatku
volatile uint8_t flag750;

albo dac pomiar co 2 lub 3 sekundy w którymś warunku
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
sig off ;(



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

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

Dzięki panowie, po raz kolejny mi pomogliście.

Pozdrawiam.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



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

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