ATNEL tech-forum https://forum.atnel.pl/ |
|
Jak ustawić funkcję budzika https://forum.atnel.pl/topic22246.html |
Strona 1 z 2 |
Autor: | miki53 [ 10 maja 2019, o 18:43 ] |
Tytuł: | Jak ustawić funkcję budzika |
Witam szanownych kolegów Myślę że temat budzików na PCF8583 był wielokrotnie przerabiany ale nie mogę nigdzie trafić na przykładowy kod ustawiania alarmów w prockach ( a nie w układach PCF8583 ) Chciałbym zbudować zegar sterujący różnymi urządzeniami o różnych godzinach ale nie wiem jak to zrobić w przykładowym kodzie Prosiłbym o podpowiedz. |
Autor: | Kaz K [ 10 maja 2019, o 21:18 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Różnica jest taka że alarmy zapisujesz i odczytujesz z pamieci eprom avr. Przejrzyj poradniki Mirka o Dawcy Czasu. |
Autor: | mirekk36 [ 11 maja 2019, o 07:34 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
rzeczywiście w poradnikach o dawcy czasu chyba była o tym mowa https://www.youtube.com/watch?v=7qfm6aelHM8 https://www.youtube.com/watch?v=VHVQbjZon4k https://www.youtube.com/watch?v=Pi4xI6CcZrU ------------------------ [ Dodano po: 6 minutach ] a jeśli w nich nie było mowy - to po prostu tak jak pisze kolega wyżej, zapisujemy sobie własne czasy alarmu w pamięci EEPROM, przy starcie wczytujemy do RAM i po prostu cyklicznie co sekundę co przerwanie od RTC gdy pobieramy czas to sprawdzamy czy aktualny czas jest równy z czasem jednego z alarmów w RAM. A gdy jest równy no to CYK włączamy budzik |
Autor: | miki53 [ 11 maja 2019, o 13:16 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Poradniki przeglądałem wielokrotnie Jedyną informację jaką napotkałem w nich na temat ustawiania alarmów była taka że Mirek robi je w inny sposób i na razie nie będzie to temat tego poradnika A szkoda Jest w nich zawarta taka ogromna dawka informacji na temat czasu synchronizacji przez wifi i nie tylko że można by było się pokusić o przerobienie czy dopasowanie jakiejś funkcji do potrzeb ustawiania alarmów, ale jak to zrobić Jak wyprowadzić ten fragment kodu do poniższej postaci w którym mógłbym porównać czas ustawiany z czasem aktualnym na zegarze język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Czy gdy przed flagą wstawię ten kod to będzie ok? |
Autor: | mirekk36 [ 11 maja 2019, o 19:39 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
zapisuj sobie czas jako np jedną liczbę - do porównania np: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. i później możesz porównywać co sekundę: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Nie wspomnę już że można od razu czas zapisywać jako czas unixowy żeby jeszcze zawierał datę - wtedy można ustawiać alarmy na konkretne dni |
Autor: | Kaz K [ 11 maja 2019, o 21:06 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
A po co sekundy doliczać (czyżby czas budzenia o dokładności atomowej miał być ) , wystarczy godziny i minuty np: czas= (godz*60) + minuty |
Autor: | mirekk36 [ 12 maja 2019, o 01:57 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Kaz K napisał(a): A po co sekundy doliczać (czyżby czas budzenia o dokładności atomowej miał być ) , wystarczy godziny i minuty np: czas= (godz*60) + minuty to zastanów się nad porównywaniem przez całą minutę - to zaskoczysz |
Autor: | Kaz K [ 12 maja 2019, o 10:07 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Ale Kolega chce zrobić sterowanie urzadzeniami o określonych godzinach a więc będzie czas załączenia i wyłączenia jak sądze. Pomijam fakt że nie trzeba porównywać co obieg pętli a np. co jakiś czas. |
Autor: | mirekk36 [ 12 maja 2019, o 12:03 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Kaz K napisał(a): Ale Kolega chce zrobić sterowanie urzadzeniami o określonych godzinach a więc będzie czas załączenia i wyłączenia jak sądze. Pomijam fakt że nie trzeba porównywać co obieg pętli a np. co jakiś czas. Zamiast to mówić napisz sobie krótki pseudo kod i sprawdzaj co minutę - to dopiero zobaczysz problemy i jak one później znikają nagle jak nożem uciął gdy zastosujesz metodę podobną o której mówiłem wyżej. Zamiast wyjaśniać - mówię ci sprawdź - będziesz wiedział i zapamiętasz. |
Autor: | miki53 [ 12 maja 2019, o 12:32 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Panie Mirku myślałem o tym aby można byłoby jeszcze ustawiać na poszczególne dni zwiększyło by to bardzo możliwości układu Podpowiedzi mile widziane ale najpierw muszę się dowiedzieć jak ustawiać czas aby od czegoś zacząć Chodzi mi po głowie taki projekt urządzenie zegarowe które będzie włączało i wyłączało o ustalonych porach różne urządzenia ,oświetlenie ,TV czy tam coś. było by fajnie aby miało możliwość sterowania odbiornikami w poszczególnych pokojach za pośrednictwem modułów radiowych i moduł wifi do komunikacji zdalnej z zewnątrz i odbierania informacji na telefonie co układ zrobił Chata zdalnie sterowana, albo symulator obecności lokatora Projekt ogromny tym bardziej że wiedza potrzebna do osiągnięcia tego celu marna |
Autor: | mirekk36 [ 12 maja 2019, o 12:37 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
ale za to bardzo fajny CEL i po drodze można się dużo nauczyć |
Autor: | miki53 [ 12 maja 2019, o 18:31 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Ja myślałem o porównaniu czasu który wyśle mi układ RTC do zmiennej godziny (hh) czy minuty (mm) z tym którym ustawię jako czas alarmu dla godzin czy minut bo wychodzi mi z rtc już gotowa godzina i minuta tylko porównać z nastawą i ok - tak mi się wydaje jak wyprowadzić z tego fragmentu kodu możliwość porównania tego co daje układ rtc czyli godziny , minuty z nastawą alarmu język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Mirku z ustawianiem alarmów w konkretnych dniach super pomysł Na razie zbieram wiedzę jak to zrobić więc każda pomoc dla mnie jest cenna potem zajmę się próbą napisania kodu |
Autor: | mirekk36 [ 12 maja 2019, o 20:01 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Cytuj: jak wyprowadzić z tego fragmentu kodu możliwość porównania tego co daje No ale przecież pisałem wyżej jak to można zrobić - powołujesz zmienną uint16_t i pakujesz do niej czas wg sposobu jaki opisałem, i podobnie robisz z alarmami - możesz ich mieć ile wlezie |
Autor: | miki53 [ 13 maja 2019, o 09:47 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Panie Mirku wydaje mi się że rozumiem powyższy sposób który pan opisuje jest to sposób jak bym chciał zrobić zegar na samym procku A układ RTC wykorzystać jako generator zewnętrzny dla ułatwienia ale nie koniecznie bo taktowanie może być też ustawione z procka wtedy mam zgrupowane w jednej zmiennej minuty ,godziny i sekundy czyli - uint16_t czas = (hh*360)+(mm*60)+ss; zmienna - czas = 5.520 dla godziny 12:20:00 tak coś wyszło z kalkulatora ale to będzie ok bo ten wynik będzie się zmieniał z każdą sekundą i porównanie wyjdzie poprawnie ale dla zmiennej którą napełni układ RCT czyli do zmiennej hh - rtc wstawi mi gotowy czas 12 dla mm - 20 dla ss - 00 wtedy nie mogę zastosować powyższego sposobu Ale cały czas chodzi mi w jaki sposób wyłuskać z powyższego kodu sposób porównania W którym miejscu w kodzie wpisać fragment kodu umożliwiający porównanie czasu bieżącego z moją nastawą alarmu |
Autor: | Marhef [ 13 maja 2019, o 10:03 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Odczytujesz z RTC wartości hh, mm, ss. Obliczasz za pomocą wzoru od Mirka (uint16_t czas = (hh*360)+(mm*60)+ss;). Alarm konwertujesz w dokładnie taki sam sposób. Porównujesz obie liczby. I masz alarm |
Autor: | akenes [ 13 maja 2019, o 10:06 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
360 czy 3600 ? |
Autor: | Marhef [ 13 maja 2019, o 10:31 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
3600. Skopiowałem z wpisu wyżej (w poście Mirka też było 360 i wszyscy jak baranki przepisujemy ) |
Autor: | mirekk36 [ 13 maja 2019, o 10:45 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Tak ja literówkę zrobiłem przepraszam - powinno być 3600 oczywiście - już poprawiłem |
Autor: | miki53 [ 14 maja 2019, o 13:38 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Wstawiłem wzór od Mirka w sposób zamieszczony w kodzie bez rezultatu ale co się dziwić skoro nie mam zielonego pojęcia jak to właściwie zrobić JEDEN PRZYKŁAD BYŁBY WIĘCEJ WART JAK 1000 SŁÓW |
Autor: | mirekk36 [ 14 maja 2019, o 14:16 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
miki53 napisał(a): czas = (hh*3600)+(mm*60)+ss; Nie dziwne, że nie działa skoro w twoim kodzie hh,mm,ss to są stałe dosłowe - wartości typu enum, czyli język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. a więc w twoim kodzie wyżej - zawsze będzie tak: Cytuj: ss=1 mm=2 hh=3 z czego wychodzi ci stała godzina 3:2:1 - a chyba nie takiej chcesz a godziny, minuty i sekundy masz właśnie w zmiennych o tych nazwach, zamień że więc to prawidłowo |
Autor: | miki53 [ 14 maja 2019, o 17:44 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Mirku jesteś naprawdę WIELKI !! Fajnie kod zadziałał mogę włączać i wyłączać diodę testową o ustalonych godzinach DLA KOLEGÓW PRZYKŁADOWY KOD DO TESTOWANIA ZACZERPNIĘTY Z BB Mikrokontrolery AVR Język C podstawy programowania Wszystkie potrzebne biblioteki są zawarte w lekcji o nazwie - 08_I2C_SOFT DZIAŁAJĄCY KOD Z ALARMEM to tylko testowy kod a nie ostateczny program |
Autor: | miki53 [ 15 maja 2019, o 17:09 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Proszę o wybaczenie za moje marudzenie ale mam jeszcze parę pytań związanych z alarmem ale w związku z poniższym kodem tym razem dotyczącego układu DS3231 kod napisany dla tego układy jest trochę w innej formie i nie bardzo potrafię się odnieść do zastosowania Mirka wzoru z górnego listingu do tego kodu, prosiłbym o dalsze podpowiedzi Czy mógłbym jeszcze prosić o przykład z zastosowaniem nie tylko alarmu ustawianego na konkretną godzinę ale jeszcze na konkretny dzień ? |
Autor: | mirekk36 [ 15 maja 2019, o 19:17 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Poszukaj sobie informacji o kodowaniu czasu unixowego - to bardzie rozbudowane niż to co ci podałem i co już uruchomiłeś - ale zawiera również datę |
Autor: | miki53 [ 16 maja 2019, o 13:51 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Jeśli wstawię procedury obsługi alarmu w sposób jak poniżej w kodzie to to mi zadziała ? Przepraszam że zadaję tego typu pytanie ale nie posiadam jeszcze układu DS3231 na który jest napisany ten kod i nie mogę tego fizycznie sam sprawdzić proszę o wyrozumiałość |
Autor: | mirekk36 [ 16 maja 2019, o 16:40 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
miki53 napisał(a): Przepraszam że zadaję tego typu pytanie ale nie posiadam jeszcze układu DS3231 na który jest napisany ten kod i nie mogę tego fizycznie sam sprawdzić Jak można pisać, że nie da się tego sprawdzić bez DS3231 ??? no panie kochany, a co za problem sztucznie napędzać sobie czas w procku i sprawdzać alarm ? toż to tylko inkrementowanie godzin, minut i sekund - gdzieś w timerze programowym co sekundę i już masz sztuczny zegarek do sprawdzania ------------------------ [ Dodano po: kilkunastu sekundach ] programowanie nie polega tylko na pisaniu gotowego kodu ale pisaniu fragmentów do testowania swojego kodu |
Autor: | Kaz K [ 16 maja 2019, o 17:02 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Nie zadziała! Pomieszane zdrowo w kodzie . Pierwsze to definicje diody wyrzuć przed int main, a po drugie co Ci ma załaczyć diodę jak w petli main nie masz odpowiednich funkcji . Przeczytaj od początku ksiąke Mirka i zacznij od migania diodą i zrozumienia podstaw, bo tutaj przepisałeś kod i powstawiałeś przypadkowo. |
Autor: | miki53 [ 16 maja 2019, o 17:13 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Mirku mógłbyś spojrzeć na powyższy kod czy on ma prawo zadziałać kod ten jest pisany w podobny sposób jak biblioteka dla PCF8583 jeśli w tym kodzie to zadziała to i w kodze biblioteki jeśli w ten sposób wstawię to powinno zadziałać tak mi się wydaje Nie chcę nadużywać cierpliwości ale starczy jak powiesz że będzie działać lub nie |
Autor: | mirekk36 [ 16 maja 2019, o 19:05 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
miki53 napisał(a): Mirku mógłbyś spojrzeć na powyższy kod czy on ma prawo zadziałać Ja nie jestem (przykro mi) analizować długich kodów - tylko i wyłącznie krótkie wyekstrachowane fragmenty kodów testowych ... nie mam po prostu aż tyle czasu ale widzę, że kolega wyżej zrobił tą analizę i napisał tobie kilka uwag - proszę pochyl się nad nimi ------------------------ [ Dodano po: kilkunastu sekundach ] Poza tym tak jak pisałem wyżej napisz krótki main.c ze sztucznym zegarkiem wg opisu jaki ci podałem i sam potestuj - no to nie powinno być trudne - a i kod do analizy na forum ci się skróci drastycznie |
Autor: | miki53 [ 11 cze 2019, o 14:49 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Witam serdecznie Po wielkich bojach udało mi się dzięki Mirka poradnikom Dawca czasu i RTC programowanie w C zrobić zegar z wyświetlaczem LCD, chciałem wstawić funkcję budzika do biblioteki PCF8583 aby móc ją w pużniejszym czasie przerobić na sterownik z większą ilością wyjść sterowanych czasowo wstawiłem funkcje budzika w kod i nawet niema błędów tylko że ne wiem jak z niej wyjść aby włączyła mi diodę testową Prosiłbym o pomocne podpowiedzi plik mk_pcf8583.h zmienne globalne język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. plik mk_pcf8583.h deklaracja funkcji dla alarmu język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. mk_pcf8583.c definicja funkcji alarmu język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Testowa dioda PC7 nie chce mi się włączyć nawet jeśli wpiszę warunek jej zapalania do funkcji main.c po uprzednim za komentowaniu if w funkcji to znaczy język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Czy koledzy mogliby mi podpowiedzieć co zrobić aby to zadziałało |
Autor: | miki53 [ 12 cze 2019, o 12:10 ] |
Tytuł: | Re: Jak ustawić funkcję budzika |
Zapomniałem dodać jak ustawiam alarmu plik main.c |
Strona 1 z 2 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |