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.

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

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

Składnia: [ Pobierz ] [ Ukryj ]
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?


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

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:

Składnia: [ Pobierz ] [ Ukryj ]
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ę:

Składnia: [ Pobierz ] [ Ukryj ]
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 :oops:

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


Składnia: [ Pobierz ] [ Ukryj ]
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

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

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

Składnia: [ Pobierz ] [ Ukryj ]
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

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

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 :D :D


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

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

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ń ?

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

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ść

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

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

Strona 1 z 2 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/