Forum www.nestor-electronic.pl Strona Główna www.nestor-electronic.pl
Forum sterowników procesorowych- programy BASCOM
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Jeden timer zliczający w dół

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Pomoc w programowaniu BASCOM
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
dd323
Nowy


Dołączył: 11 Lut 2009
Posty: 4

PostWysłany: Sro Lut 11, 2009 5:28 pm    Temat postu: Jeden timer zliczający w dół Odpowiedz z cytatem

Witam serdecznie!
Potrzebuje porady kogoś doświadczonego w temacie:
Timer0 i Timer1
Więc od początku: sterownik ma obsługiwać cztery niezależne urządzenia(A,B,C,D) które po wprowadzeniu ręcznie czasu z przycisków dla każdego z urządzeń i wysterowaniu przypisanemu portowi wejściowemu do każdego z nich (np:a1,b1,c1,d1), będzie odliczało czas od jakiejś liczby X (wprowadzonej wcześniej z przycisków) do 0 niezależnie dla każdego urządzenia.
Moje pytanie to czy jest możliwośc używając funkcji timer0 lub timer1
zliczać w dół jednocześnie cztery czasy których start był aktywowany nie w tym samym momencie.
Być może trochę zagmatwałem problem jednak jeśli tak to proszę o sugestie a poprawię się. Jestem dopiero troszkę więcej niż początkującym dlatego nie znam tak dobrze zasad pisania w Bascomie. Proszę o porady lub ewentualne rozwiązania tego problemu.
Pozdrawiam
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
rafal
Site Admin


Dołączył: 08 Lis 2007
Posty: 1180
Skąd: Olkusz

PostWysłany: Sro Lut 11, 2009 8:29 pm    Temat postu: Odpowiedz z cytatem

oczywiście ze jest taka możliwość, timer liczy Ci w góre jak należy i powiedzmy ze to zmienna "sekundy" a pozostałę zmienne będąw postaci :
sekundy1=ustawiona_wartość-sekundy

Banalnie proste i tak dla każdego urządzenia
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
dd323
Nowy


Dołączył: 11 Lut 2009
Posty: 4

PostWysłany: Sro Lut 11, 2009 9:34 pm    Temat postu: Odpowiedz z cytatem

Wielkie dzięki ! Będę próbował
Pozdrawiam !
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
dd323
Nowy


Dołączył: 11 Lut 2009
Posty: 4

PostWysłany: Sro Lut 25, 2009 1:33 am    Temat postu: Odpowiedz z cytatem

Witam ponownie !
Mam pytanie odnośnie dosyć dokładnego odliczania sekund.
Napisałem program w oparciu o procedurę odliczania zawartą w programie
zegara w/g ustawień:

Config Timer1 = Timer , Prescale = 256
'konfiguracja Timer1 jako timer
'z podziałem preskalera przez
'256
---------
---------

Enable Interrupts 'odblokowanie globalnego systemu
'przerwań
Enable Timer1 'odblokowanie przerwania od
'przepełnienia Timer1
Counter1 = 34286 'wartość początkowa wpisywana do
'Timer1 (65536 - 31250 = 34286)
----------
----------
----------
----------

Odmierz_1s: 'podprogramu obsługi przerwania
'przepełnienia od Timer1
Counter1 = Counter1 + 34286

Problem polega na tym iż zegar spieszy się nieco (ok.5 sekund na 3 minuty), a odliczanie zadanych minut i sekund dodatkowo co pewien czas powoduje niekontrolowane ledwie zauważalne przyspieszenie (czyli sekunda nie jest równa sekundzie).
Czy jest jakiś sposób aby to ustabilizować bez dołączania zewnętrznego generatora?
Zależy mi na dokładności 5-6 sekund na 20-25 minut. Czy jest to możliwe na kwarcu 8Mhz?
Czy zmieniając liczbę np.:34286 będę mógł sobie wykalibrować zegar?
Pozdrawiam
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Scofield
Lekko zaangażowany


Dołączył: 19 Gru 2008
Posty: 48
Skąd: -----

PostWysłany: Sro Lut 25, 2009 8:41 am    Temat postu: Jeden timer zliczający w dół Odpowiedz z cytatem

Najlepiej będzie jak podłączysz do mikro kontrolera zewnętrzny kwarc np. 8MHz. Zegarek będzie działał dokładnie. Ja właśnie mam tak zrobione i mój zegarek z budzikiem działa bez zarzutów. Jeszcze możesz spróbować ustawić wewnętrzny kwarc procesora na 8MHz. Ale to nie będzie to samo.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
rafal
Site Admin


Dołączył: 08 Lis 2007
Posty: 1180
Skąd: Olkusz

PostWysłany: Sro Lut 25, 2009 2:09 pm    Temat postu: Odpowiedz z cytatem

Jak wspominał kolega- wewnętrzny oscylator nie nadaje sie do odmierzania czasu!, bo dziła niestabilnie.
Dlatego w kazdym z moich projektów stosuję oscylatory zewnętrzne na kwarcu.
Taki oscylator jak byś się bardzo uparło możesz nawet "podregulować" sprzętowo, stosując kondensator nastawny zamiast jedngo z kondensatorków przy kwarcu.
Takiej regulacji mozna dokonać również programowo, wystarczy tylko obliczyć o ile przspiesza ci lub zwalnia zegar na dobe na przykład a potem policzyć ile to impulsów zegarowych na sekunde a dalej to tylko zmiana nastawów Timera
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
dd323
Nowy


Dołączył: 11 Lut 2009
Posty: 4

PostWysłany: Sro Lut 25, 2009 10:03 pm    Temat postu: Odpowiedz z cytatem

Na wstępie chciałbym trochę sprostować problem.
Dziś po wielu próbach z pomiarem czasu zauważyłem, iż sam zegar pracuje poprawnie do chwili gdy uruchomi się jeden z podprogramów odliczający zadany czas w dół (ustawiona liczba minut zliczana w dół z wyświetleniem odliczanych minut i sekund).
Podejrzewam że coś za bardzo namieszałem w programie i timer chyba się gubi lub program się niepotrzebnie zapętla. Spróbuję coś znaleść ale każde sugestie mile widziane.
Pozdrawiam
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Scofield
Lekko zaangażowany


Dołączył: 19 Gru 2008
Posty: 48
Skąd: -----

PostWysłany: Sro Lut 25, 2009 11:41 pm    Temat postu: Jeden timer zliczający w dół Odpowiedz z cytatem

Jeżeli uruchamiasz ten podprogram co zlicza minuty i sekundy w dół i on pracuje na tych samych zmiennych czasowych (minut, sekund) co zegar to spróbuj zadeklarować nowe zmienne dla tego podprogramu. Najlepiej wrzuć kod programu.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Pomoc w programowaniu BASCOM Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


Powered by phpBB © 2001, 2005 phpBB Group