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



Teraz jest 12 mar 2025, o 16:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 25 lip 2014, o 17:42 
Offline
Użytkownik
Avatar użytkownika

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

cześć Koledzy

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


ma to działać następująco:
impulsy z wrzutnika monet zlicza timer0 i wartości wyświetla na lcd
oprócz tego na lcd wyświetlana jest informacja odnośnie ilości płynu jaki można otrzymać po wrzuceniu np.5zł

po naciśnięciu przycisku start uruchamiana jest pompa i timer1, który zlicza impulsy z wodomierza (60/l)
wodomierz został przerobiony tak, że na wyjściu ma piękne impulsy TTL
odcinane jest równierz zasilanie wrzutnika monet

jeżeli wartość rejestrów licznika TCNT0 zrówna się z założoną wartością TCNT1 pompa jest odłączana, a rejestry liczników zerowane
włączany jest też wrzutnik monet i tu zaczyna się problem ponieważ w czasie włączenia generuje ciąg przypadkowych impulsów które zlicza timer0, a to powoduje, że na lcd mamy nie zera a przypadkową wartość

próbowałem zastosować opóźnienie (delay) na zerowanie liczników, ale wtedy nie wszystkie impulsy z prawidłowo wrzuconych monet są zliczane

może macie jakiś pomysł jak to obejść? inicjalizacja wrzutnika to 30ms

z góry dziękuję za zainteresowanie
pozdrawiam Marek

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 17:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Liczniki zeruj normalnie, a tylko timery włączaj z opóźnieniem. Przecież Timer1 możesz wyłączyć z chwilą startu pompy, nawet jeszcze przed odcięciem zasilania do wrzutnika żeby w chwili wyłączania nie wygenerował czegoś.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 18:27 
Offline
Użytkownik
Avatar użytkownika

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

timer1 zlicza impulsy z wodomierza więc wtedy gdy pompa pracuje
wyłączyć mogę timer0 z chwilą startu pompy i wyłączenia wrzutnika

w którym miejscu dać opóźnienie włączenia timera0?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 19:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Tak patrzę sobie na ten kod i myślę, że chyba trzeba by trochę zmienić podejście.
Ale najpierw prześledźmy algortym.
1. Ktoś wrzuca monety. Impulsy od monet podawane są na wejście T0. Timer0 jest aktywny jako licznik, Timer1 nieaktywny.
2. Klient zakończył wrzucanie monet. TCNT0 zawiera ich liczbę. TCNT1 zawiera zero. Timer0 jest nadal aktywny. Timer1 nieaktywny.
3. Klient wciska START. Włącza się Timer1 jako licznik, oraz pompa, wodomierz wysyała impulsy na wejście T1. Timer0 trzeba wyłączyć.
Odłączmy zasilanie wrzutnika.
4. TCNT1 zrównało się TCNT0. Pompa zostaje zatrzymana. Zerujemy TCNT0 i TCNT1. Włączamy wrzutnik. Włączamy Timer0.

W tym ostatnim punkcie dałbym opóźnienie miedzy włączeniem wrzutnika a włączeniem Timer0. Ale uzależniłbym te zwłokę od jakiejś flagi, że pętla główna nie czekała za każdym obiegiem.
Dałbym dotakową zmienną któa oznacza włączenie wrzutnika. Może to być nawet nie zmienna, tylko stan pinu kontrolującego wrzutnik. Ale zmienna będzie bardziej czytelna.
Warunek o którym mówię ma się wykonać tylko wtedy gdy wrzutnik jest wyłaczony. I wtedy możesz tam dać opóźnienie nawet 1000ms. Bo to się wykona tylko raz na jeden cykl pracy urządzenia.

Być może coś pominąłem, jakiś szegół pracy tego urządzenia...
Tak na prawdę to dobrze by było podzielić te fazy na jakieś funkcje. Można dodac odmierzanie czasu używając Timera2 i jego przerwania COMPARE.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 19:13 
Offline
Użytkownik
Avatar użytkownika

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

no właśnie bo jak pętla czeka to w tym czasie jak wrzucisz monety to nie zostaną zliczone więc tu jest pies pogrzebany

to co napisałeś ma sens - jutro posiedzę i może coś wykombinuję
tak w ogóle to wrzutnik nie musi być odłączany i nawet w czasie pracy pompy można dorzucić moniaka i zostanie on policzony, ale pierwotnie założyłem, że odłączam i to mnie męczy :)

dzięki "sq8dsr" że się zainteresowałeś tematem
ja jeszcze mało wiem bo to dopiero drugi miesiąc z AVR-ami

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 19:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Zliczyć zliczy. Bo timer działa niezależnie od programu. Ale porównania mogą się nie wykonać. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 19:25 
Offline
Użytkownik
Avatar użytkownika

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

sprawdzałem
po dorzuceniu monety wszystko jest ok.
czyli dodaje się do licznika0 i wtedy leci więcej i w prawidłowej ilości

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 19:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

No właśnie zastanawiałem po co wyłaczanie wrzutnika. W sumie to ograniczanie funkcjonalności ;)
Jeśli porównujesz bezpośrednio rejestry liczbników to zawsze będzie dobrze. Co innego gdybyś kopiował do zmiennych.

No jest jeszcze jedna sytuacja "brzegowa", ale zakładam, że nikt nie wrzuci więcej niż 255 monet :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 21:44 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

A takie pytanie z innej strony: Jakiego wrzutnika kolega używa?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 22:43 
Offline
Użytkownik
Avatar użytkownika

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

dostałem kiedyś taki prosty wrzutnik CH-923
można zaprogramować trzy monety i do 50 impulsów wyjściowych dla każdej
do profesjonalnych zastosowań raczej się nie nadaje, ale do zabawy jak znalazł

co do wyłączania wrzutnika to trzeba przewidzieć sytuację, że zabraknie towaru i wtedy muszę go wyłączyć :roll:

nie robię konkretnego urządzenia - to tylko doświadczenia z różnymi dziwnymi rzeczami - po prostu nie chce mi się migać diodą za pomocą procka bo to można zrobić na jednym lub dwóch tranzystorach ;)

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