FAQ | Points | Add... | Recent posts | Search | Register | Log in


sekundy w at89s51 lub at89c51


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> sekundy w at89s51 lub at89c51
Author
Message
drg
Poziom 8
Poziom 8


Joined: 13 Dec 2003
Posts: 31

Post#1 Post from the author of the topic 21 Dec 2003 01:50   

sekundy w at89s51 lub at89c51


hi,
jak w atmelach 89s51 albo 89c51 zaimplikować odmierzanie sekund? mam zamiar zrobić na tym zegarek i zależy mi na dokładności.

pozdrawiam,
paweł.
Back to top
   
Nemo
Poziom 22
Poziom 22


Joined: 03 Feb 2003
Posts: 2025
Location: Radom/Lublin

Post#2 21 Dec 2003 02:49   

Re: sekundy w at89s51 lub at89c51


Podziel częstotliwość zegara przez 12, a potem przez tyle, ile zostanie więcej. Czyli: kwarc 6MHz :12 = 500 kcykli. Czyli musisz zrobić pętlę, która będzie się wykonywać przez 500 000 cykli. No i potem modlić się, aby kwarc faktycznie taktował na takiej częstotliwości.
Inny sposób, to zastosować specjalizowany układ do pomiaru czasu z wyjściem 1 Hz (lub PPS - Pulse Per Second). Może być np. PCF8283 (o ile dobrze pamiętam, ale on chyba nie ma wyjścia PPS).
Jeszcze inaczej - moduły GPS mają wyjście PPS.
Jeszcze inaczej - scalak 4060, do tego np. 4013 i kwarc z zegarka (32,768kHz), sygnał podzielony przez 2^15 to 1 PPS.
Pozdrawiam.
Back to top
   
GienekS
Poziom 22
Poziom 22


Joined: 12 Oct 2003
Posts: 1964
Location: Tarnowskie Góry

Post#3 21 Dec 2003 12:21   

Re: sekundy w at89s51 lub at89c51


Zrobienie takiej pętli jest nie możliwe. To raczej chodzi o licznik który będzie Ci zliczał impulsy z kwarcu. Dla '51 najlepiej jest użyć 12 lub 6 MHz bo ten procek dzieli kwarc przez 12. I tak dla 12 MHz kwarcu procek jest taktowany 1 mikro sekundą. Licznik T0 kofigurujesz jako 8 bit auto-reload i TH0 ładujesz wartością 256-250. Dalej włączasz przerwanie od T0 i tu robisz kolejny, ale już programowy licznik do 40, który daje Ci impulsy dokładnie co 0,01 sekundy. No a z tąd do 1 sekundy to tylko jeszcze jeden licznik do 100. Jeżeli Ci nie zależy na impulsach mniejszych od jednej sekundy to oczywiście te dwa ostatnie liczniki możesz połączyć w jeden 2 bajtowy (int) i zrobić go do 4000.
W ten oto prosty sposób na '51 robisz stabilny czas 1 sekundy. A jeżeli procek jest mocno obciążony to dobrze jest to przerwanie od T0 dać na wysoki priorytet.
Back to top
   
ACULA
Poziom 23
Poziom 23


Joined: 11 Apr 2003
Posts: 3025
Location: Bydgoszcz

Post#4 21 Dec 2003 12:38   

Re: sekundy w at89s51 lub at89c51


ja użyłbym tak jak Nemo pcf8583, chcesz zrobić zegarek z budzikiem, dodatkowo miałbyś kalendarz ;)
za 4zł ATmel i 8zł pcf znikają wszystkie Twoje problemy ;)

PS zrobienie pętli 500000 jest łatwe, więc nie niemożliwe, jednak na liczniku ładniej wygląda ;)
Back to top
   
GienekS
Poziom 22
Poziom 22


Joined: 12 Oct 2003
Posts: 1964
Location: Tarnowskie Góry

Post#5 21 Dec 2003 13:42   

Re: sekundy w at89s51 lub at89c51


Na '51 też można zrobić kalendarz i nie trzba żadnego PCF-a
Co do pętli. Może się źle zrozumieliśmy, pętla zajmuje na jakiś czas procek aż się nie zakończy a licznik jest incrementowany ze sprawdzeniem i to wszystko, procek może lacieć dalej.
Back to top
   
marchewa101
Poziom 16
Poziom 16


Joined: 04 Jan 2003
Posts: 303
Location: Poznań

Post#6 21 Dec 2003 13:48   


Jaki maja procent bledu kwarce do uC ze niemozna ich zastosowac w roli zegarkow, po co stosowac pcf'a za 8zł jesli mozna go niestosować
Program staje sie bardziej skomplikowany, ale koszty sie zmniejszaja.
A tez trzeba opracowac wymiane danych na i2c, chyba ze sie ma juz ja opracowana :)
Back to top
   
Google

Google Adsense


Post# 21 Dec 2003 13:48   





Back to top
   
Nemo
Poziom 22
Poziom 22


Joined: 03 Feb 2003
Posts: 2025
Location: Radom/Lublin

Post#7 21 Dec 2003 13:52   

Re: sekundy w at89s51 lub at89c51


Obsługa I2C - 5 minut. Poza tym przeładowywanie licznika trwa kilka cykli, raz np. 6 raz 7. Jeśli policzymy np. 1000 przeładowań na sekundę (albo 500) to po pomnożeniu przez np. 24h*3600s wychodzi niezłe opóźnienie dobowe. Proponuję rozważyć i to.
Pozdrawiam.
Back to top
   
arcu
Poziom 18
Poziom 18


Joined: 17 Apr 2003
Posts: 531
Location: Kraków

Post#8 21 Dec 2003 14:12   

Re: sekundy w at89s51 lub at89c51


Ja mam zegar na przerwaniu i z dokladnoscia swietnie sobie radzi, choc kupilem wczesniej pcf'a ale wolalem zrobic na przerwaniu
Back to top
   
Wilku
Poziom 16
Poziom 16


Joined: 23 Jun 2002
Posts: 333
Location: Warszawa

Post#9 21 Dec 2003 14:49   

Re: sekundy w at89s51 lub at89c51


:arrow: Acula

Gdzie są takie przyjemne ceny tych układów?
Back to top
   
drg
Poziom 8
Poziom 8


Joined: 13 Dec 2003
Posts: 31

Post#10 Post from the author of the topic 21 Dec 2003 15:22   


arcu, a chciałoby ci się zeskanować jakieś szkice tego układu i je tu teges, albo coś?
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 21 Dec 2003 15:22   





Back to top
   
marchewa101
Poziom 16
Poziom 16


Joined: 04 Jan 2003
Posts: 303
Location: Poznań

Post#11 21 Dec 2003 18:04   

Re: sekundy w at89s51 lub at89c51


Nemo:
Przeciez nie ma to znaczenia gdyz przerwanie nastepuje co rowny okreslony czas, tylko ze z opuznieniem
a opuznienie zedu mikrosekund nikomu chyba nieprzeszkadza ;)

Zgloszenie przerwania --> skok do timer
0,1s
Zgloszenie przerwania --> skok do timer
0,1s
Zgloszenie przerwania --> skok do timer
0,1s
...

Timer:
czeka pare cykli
wykonuje procedury

i funkcja timer jest wywolana w: x * 0,1s
natomiast procedury wykonuje w: (x * 0,1s) + pare cykli,
a nie jak ty piszesz: x * (0,1 + pare cykli)

gdzie x jest nr kolejnego przerwania
Back to top
   
Nemo
Poziom 22
Poziom 22


Joined: 03 Feb 2003
Posts: 2025
Location: Radom/Lublin

Post#12 21 Dec 2003 18:47   

Re: sekundy w at89s51 lub at89c51


A widziałeś kwarc oscylujący z częstotliwością 6 000 000 ± 1Hz ?
Czepiam się, bo sam coś takiego robiłem. W moim opracowaniu chodziło o wytworzenie impulsu dodatniego (H) o długości 1s. Z praktyki wynika, że w przypadku licznika było to o tyle niewygodne, że nie mogłem zapanować nad całym czasem, tylko nad jednym okresem. Zmiana wartości licznika pociągała za sobą zmianę wszystkich przeładowań. Prościej było zbudować wielokrotnie powtarzaną pętlę i kilka rozkazów dodatkowych. Masa liczenia, ale opłaciło się. Wystarczyła jednak zmiana temperatury o 2°C i wszystko trzeba było zestawiać od nowa. Ale to nie temat na ten post.
Pozdrawiam.
Back to top
   
olekewaagata
Poziom 19
Poziom 19


Joined: 08 Nov 2003
Posts: 641
Location: Kielce

Post#13 21 Dec 2003 21:11   

Re: sekundy w at89s51 lub at89c51


Byłem na Twojej stronie www i widzę, że masz spore możliwości.
Mam program w asemblerze mcs51 z funkcją zegara, ale jest to program,
który robi jeszcze kilkanaście innych rzeczy. Zegar to tylko mały fragment
jego możliwości (w sumie to 8k asemblera). Dane wyświetlane są na
lcdx2linie po 20 znaków. Mogę Ci ten program wysłac wraz z komentarzami w zródle. będziesz miał na czym się uczyć. Jeśli chcesz
napisz.
Back to top
   
drg
Poziom 8
Poziom 8


Joined: 13 Dec 2003
Posts: 31

Post#14 Post from the author of the topic 21 Dec 2003 21:16   


Bardzo chętnie, dzięki. Jeszcze jak by Ci się udało schemat części hardware'owej walnąć, byłoby jeszcze milej.
Back to top
   
olekewaagata
Poziom 19
Poziom 19


Joined: 08 Nov 2003
Posts: 641
Location: Kielce

Post#15 21 Dec 2003 21:33   

Re: sekundy w at89s51 lub at89c51


No to pięknie. Tylko ja nie wiem jak ten plik Ci wysłać.
Back to top
   
Google

Google Adsense


Post# 21 Dec 2003 21:33   





Back to top
   
drg
Poziom 8
Poziom 8


Joined: 13 Dec 2003
Posts: 31

Post#16 Post from the author of the topic 21 Dec 2003 21:37   


Może po prostu na drg(malpa)secprog.org ?
Back to top
   
olekewaagata
Poziom 19
Poziom 19


Joined: 08 Nov 2003
Posts: 641
Location: Kielce

Post#17 21 Dec 2003 22:17   

Re: sekundy w at89s51 lub at89c51


Jak wysyłam na ten adres to dostaję odpowiedz, że wymagana
autoryzacja SMTP błąd ileśtam i wiadomość nie może być wysłana.
Back to top
   
ACULA
Poziom 23
Poziom 23


Joined: 11 Apr 2003
Posts: 3025
Location: Bydgoszcz

Post#18 21 Dec 2003 22:19   

Re: sekundy w at89s51 lub at89c51


olekewaagata wrote:
Jak wysyłam na ten adres to dostaję odpowiedz, że wymagana
autoryzacja SMTP błąd ileśtam i wiadomość nie może być wysłana.

masz źle ustawione opcje autoryzacji w kliencie poczty
spróbuj przez PW ;)

PS. Takie dwustronne rozmowy ustalające szczegóły prowadzcie na PW a nie na forum
Back to top
   
arcu
Poziom 18
Poziom 18


Joined: 17 Apr 2003
Posts: 531
Location: Kraków

Post#19 22 Dec 2003 02:18   

Re: sekundy w at89s51 lub at89c51


drg: no problem, ale jak bede u siebie w kraku, to ci podesle, czyli po swietach.

A jaka jest strona Nemo?


pozdrawiam
Back to top
   
Tdv
Poziom 22
Poziom 22


Joined: 27 Aug 2002
Posts: 2263
Location: Śląsk

Post#20 22 Dec 2003 08:16   

Re: sekundy w at89s51 lub at89c51


GienekS wrote:
Zrobienie takiej pętli jest nie możliwe. To raczej chodzi o licznik który będzie Ci zliczał impulsy z kwarcu. Dla '51 najlepiej jest użyć 12 lub 6 MHz bo ten procek dzieli kwarc przez 12. I tak dla 12 MHz kwarcu procek jest taktowany 1 mikro sekundą. Licznik T0 kofigurujesz jako 8 bit auto-reload i TH0 ładujesz wartością 256-250. Dalej włączasz przerwanie od T0 i tu robisz kolejny, ale już programowy licznik do 40, który daje Ci impulsy dokładnie co 0,01 sekundy. No a z tąd do 1 sekundy to tylko jeszcze jeden licznik do 100. Jeżeli Ci nie zależy na impulsach mniejszych od jednej sekundy to oczywiście te dwa ostatnie liczniki możesz połączyć w jeden 2 bajtowy (int) i zrobić go do 4000.
W ten oto prosty sposób na '51 robisz stabilny czas 1 sekundy. A jeżeli procek jest mocno obciążony to dobrze jest to przerwanie od T0 dać na wysoki priorytet.


Nie zgodzę się z tym. Jeżeli chcesz zegarek na '51 to o wiele lepsze są kwarce 11,0592MHz. Do typowych zastosowań zegar zrobiony na kwarcu i przerwaniach jest wystarczająco dokładny. Co do doboru wartosci początkowych do licznika proponuję zajrzeć na moją stronę, tam jest FAQ, w któym jest to opisane (także to dlaczego kwarc 11,0592 a nie 12). Ten plik jest też na elektoda.pl wystarczy poszukać.
Back to top
   
GienekS
Poziom 22
Poziom 22


Joined: 12 Oct 2003
Posts: 1964
Location: Tarnowskie Góry

Post#21 22 Dec 2003 09:36   

Re: sekundy w at89s51 lub at89c51


6 lub 12MHz dzieli się bez reszty i nie ma żadnego "ogona" zero korekty. Mam kilka już zegarów zrobinych na tej zasadzie liczenia i chodzą jak "Atom" Aregulacja kwarcu to na sygnale ALE można ustawić z taką dokładnością jak Ci się wumaży, kwestia dokładności częstotliwościomierza.
Back to top
   
Tdv
Poziom 22
Poziom 22


Joined: 27 Aug 2002
Posts: 2263
Location: Śląsk

Post#22 22 Dec 2003 09:51   


No ja nie twierdze, że to się nie da ale, że znacznie prościej na kwarcu 11059200...
Z kwarcami 12MHz ta komplikacja polega na konieczności wpisywania nie tylko do THx ale też do TLx, w którym już coś może być (nigdy nie wiesz czy Ci przerwanie tre trafi w 1 cyklu maszynowym wykonywania instruscki DIV albo MUL) i trzeba o tym pamiętać, przy 11,0592MHz przeładowuje się tylko THx i nie ma problema ;-D
Back to top
   
drg
Poziom 8
Poziom 8


Joined: 13 Dec 2003
Posts: 31

Post#23 Post from the author of the topic 23 Dec 2003 00:09   


A tak przy okazji, temat programatorów był już poruszany nie raz, ale poszukuję sprawdzonego, jak najtańszego programatora do omawianego w temacie at89c51 (lub at89s51). Ktoś może podzielić się swoimi przeżyciami? ;-)
Back to top
   
marmur99
Poziom 16
Poziom 16


Joined: 01 Dec 2003
Posts: 288
Location: Zielona Góra

Post#24 23 Dec 2003 00:29   


Tu masz rację TDV z tym trafieniem przerwania. Wiecie czym różnią się zwykłe banany od bananów ... (reklamowanej marki)? Tym samym czym programista od programisty przewidującego nieszczęśliwe trafnienia przerwań.
Diabeł zawsze tkwi w szczegółach. Sam robiłem wiele rzeczy na przerwaniach i pomimo tego, że są bardzo potrzebne to zwykle zdarzają się w najmniej odpowiednim momencie. Im mniej okazji żeby narozrabiały tym lepiej. Ja optuje za PCF8583.

Marmur99
Back to top
   
arcu
Poziom 18
Poziom 18


Joined: 17 Apr 2003
Posts: 531
Location: Kraków

Post#25 22 Feb 2004 17:09   

Re: sekundy w at89s51 lub at89c51


GienekS:
A nie lepiej skonfigurowac licznik T0 na 16 bitowy?
potem co przerwanie ladowac do niego roznice 65535 - 50000 (dla kwarcu 6MHz) i zostaje uaktywniane przerwanie co 0,1sec
I teraz pozostaje zrobic licznik do 10 ktory odmierzalby 1 sekunde
Hm?

Po drugie, T0 chyba domyslnie jest ustawiane na najwyzszy priorytet, po nim jest T1, a po nim T2
Back to top
   
Tdv
Poziom 22
Poziom 22


Joined: 27 Aug 2002
Posts: 2263
Location: Śląsk

Post#26 23 Feb 2004 08:39   

Re: sekundy w at89s51 lub at89c51


arcu wrote:
GienekS:
A nie lepiej skonfigurowac licznik T0 na 16 bitowy?
potem co przerwanie ladowac do niego roznice 65535 - 50000 (dla kwarcu 6MHz) i zostaje uaktywniane przerwanie co 0,1sec
I teraz pozostaje zrobic licznik do 10 ktory odmierzalby 1 sekunde
Hm?

Po drugie, T0 chyba domyslnie jest ustawiane na najwyzszy priorytet, po nim jest T1, a po nim T2


Piszesz co wiesz, ale nie wieszc o piszesz... Jak chcesz ładować liczbę 16 bitową w '51?
Back to top
   
Google

Google Adsense


Post# 23 Feb 2004 08:39   





Back to top
   
viki
Poziom 15
Poziom 15


Joined: 21 Mar 2003
Posts: 250
Location: częstochowa

Post#27 23 Feb 2004 10:02   

Re: sekundy w at89s51 lub at89c51


Tdv - żółta kartka:
mov DPTR,#data16
Back to top
   
bolek
Poziom 23
Poziom 23


Joined: 04 Jun 2002
Posts: 3876
Location: stolica

Post#28 23 Feb 2004 10:09   

sekundy w at89s51 lub at89c51


a może by zrobic korekcje czasu? np o trzeciej w nocy dodać albo odjać 3 sekundy (czy ile tam)...
Back to top
   
Tdv
Poziom 22
Poziom 22


Joined: 27 Aug 2002
Posts: 2263
Location: Śląsk

Post#29 23 Feb 2004 10:19   

Re: sekundy w at89s51 lub at89c51


viki wrote:
Tdv - żółta kartka:
mov DPTR,#data16


Taa, szczewgólnie, że DPTR słuzy do ładowania tajmera, co?
Przeczytaj może najpierw o czym się dyskutuje zanim zabierzesz głos...
Back to top
   
radek.kaba
Poziom 13
Poziom 13


Joined: 07 Sep 2003
Posts: 122
Location: Inowrocław

Post#30 23 Feb 2004 23:44   

sekundy w at89s51 lub at89c51


Robiłem zegarki programowo i na RTC, rzeczywiście robiąc to programowo trzeba dokładnie panować praktycznie nad każdym cyklem.
Ale chciałem zwrócić uwagę na problem z działaniem zegarka po wyłączeniu zasilania, a to sensownie można tylko zrobić za pomocą RTC - wystarczy bateryjka 1,5V i zegarek działa po wyłączeniu zasilania, procesorek nie zadowoli się takim rozwiązaniem (chyba że ktoś dołoży mu bateryjkę 4,5V :-) ).
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> sekundy w at89s51 lub at89c51
Page 1 of 3 Go to page 1, 2, 3  Next
Similar topics
at89s51 rezystory (2)
Miernik AT89c51 a AT89s51 - czy są istotne różnice (3)
Czy się różnią AT89S51 od AT89C51 ???? (3)
programowanie AT89S51 w C (6)
AT89S51 + STK200 + ISPProg (4)
dwa pytania o AT89S51... (4)
AT89s51 + ISPPROG + ASEMBLER (9)
Dokumentacja Programatora do AT89S51 (3)
AT89S51 - w czym to programować? (6)
Problem z zaprogramowaniem AT89S51 (15)

Page generation time: 0.102 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed