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



Teraz jest 24 wrz 2025, o 14:15


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 27 mar 2016, o 21:12 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Witajcie,

od pewnego czasu molestuję RTC w tym ARM i mnie już krew zalewa. Mam prawdziwą sieczkę z mózgu, z tego powodu czy ktoś będzie tak dobry i ludzkim językiem (jak do debila) powie jak odpalić RTC by wszystko dobrze chodziło? Głównie zależy mi na odpaleniu alarmu. Haczyk jest mały: chcę to robić na rejestrach a nie gotowych funkcjach :P

Poniżej wklejam kod, który skleciłem. Zdaje sobie sprawę ile on jest wart, jest tam równie duży bałagan jak w mojej głowie na temat RTC w tym STM32F051R8T6... Niemniej jednak bardzo chcę go zrozumieć i potrzebuję kogoś kto dosłownie opowie o nim ze wskazaniem na co zwracać uwagę i w jakich rejestrach grzebać.

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


Będę wdzięczny za wszelką pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2016, o 10:04 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8616
Pomógł: 338

w związku z rozwojem technologi i narzędzi niestety
ale nie bedę w stanie udzielić panu satysfakcjonującej odpowiedzi
w nawiązaniu do archaicznych czasów kucia rejestrów

niemniej podpowiem że tam gdzie pan tego szuka to tego niema to M0 a nie M0+ czy choćby M3
dodatkowo .... ten zestaw chyba nie posiada kwarca 32768Khz na pokładzie ...
ale to drobny szczegół techniczny --- da to na rejestrach ominąc :P

Ale nie w ten sposób co kolega napisał ...
Niemniej analiza tego .... kodu jest --- widziałem ładniejsze brzydkie rzeczy

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2016, o 10:55 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Czemu archaicznych? Jeżeli będę wiedział jak coś działa od środka na rejestrach, to będę w stanie analizować gotowe biblioteki bądź sam je tworzyć :P

Chyba w takim razie odpuszczę tego RTC :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2016, o 12:37 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8616
Pomógł: 338

widzisz ... nie po to starają się wszyscy czyli ARM i producenci krzemu dostarczać standardy rozwiązań
by się męczyć jak za czasów atmegi kopanej .... panie kolego doceń zalety CMSIS
:)

jak chcesz wiedzieć jak to działą od środka to zostaw C i rejestry , a zainteresuj sie assemblerem

jak chcesz zobaczyć co jest i jak zajmij się podstawowymi bibliotekami STL

Poczytaj ... http://www.sunduino.pl/wordpress/cmsis-standard/ -- dowiesz się że nie jest to prawda co piszą
rzekomi spece o dłubaniu w rejestrach ... a gdy poprosisz o pomoc to ci dają linka do DS

http://www.sunduino.pl/wordpress/kurs-p ... discovery/ i zobacz na rdzeniu referencyjnym jak się co robi :)

potem popiszemy i jak będziesz miał pytania odpowiem :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2016, o 12:50 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Przejrzę to w wolnej chwili. Dzięki. Widzę tam nawet jedną rzecz, którą za jakiś czas będę potrzebował (ethernet :P ).

Co do bibliotek, kiedyś chciałem używać to też nie znalazłem dobrych opisów a jak był przykłady to często dla wszystkich innych tylko nie tego F0. Sam też próbowałem i kończyło się jak się kończyło :P Do tego nie uważam, że biblioteki to zło. Wiem że są bardzo pomocne. Chciałem tylko tego jednego ARMa zrozumieć dogłębniej a potem na innych bym trzaskał po bibliotekach (bo ogólnie zasadę działania w środku jako tako bym znał).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2016, o 12:55 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8616
Pomógł: 338

do poznania ... polecam VL Discovery ... czyli rdzeń referencyjny M3
nie M0 ....

a dlaczego ...???

dlatego że okroili M3 i odarli z wszystkiego co było tym rdzeniem
i atmega jest wydajniejsza momentami ,.,.,,

na szczescie poszli po rozum do głowy ... i wypuscili rdzeń m0+
:)

o czym pisałem też gdzieś ....

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2016, o 13:01 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Problem w tym, że gdy kupowałem STM32F0DISCOVERY nie miałem bladego pojęcia na co zwracać uwagę :P Ponieważ też ktoś ukradł mi kurę znoszącą złote jajka nie mogę sobie pozwolić na kupno innego tylko dla tego że chcę się go pouczyć :P Tym bardziej, że ostatnio musiałem kupić układ FPGA Altera DE0 Nano ;/

No nic, RTC odpuszczę sobie :P Dzięki



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2016, o 22:34 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Widzę, że kolega nie dostał innej odpowiedzi niż w stylu "Bez spl'a się nie uda" a, że jeszcze nie obsługiwałem RTC F0 a akurat jedna płytka leżała, to zmusiło mnie to do testów. I tak oto w niecałe 40 minut mam gotowe procedurki i ogólne pojęcie :D Więc w sumie muszę podziękować za zmuszenie do poszukiwań, sam na tym skorzystam ;)
Proszę - testuj modyfikuj do woli. I daj znać czy działa :P
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tak po za tym wszyscy na tą F0 tak narzekają ale patrząc na obsługę peryferii itp. to F1 to jest jakaś tragedia dopiero, jakieś dziwne remapy na pinach a RTC na przykład to jakaś kpina nie RTC.


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2016, o 23:06 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Bardzo dziękuję :) jutro się za to zabiorę, bo dziś chcę dokończyć IWDG :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 12:36 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Właśnie to przerobiłem, przemyślałem itd. i mam kilka pytań.

1) Nie bardzo rozumie o co chodzi w tej linii (co jest tam robione itd.):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


2) Czy dobrze rozumie o co chodzi z tym zapisem:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tak jak tam w komentarzu napisałem rozumie, że wpisujac cokolwiek innego niż klucz (0xCA i 0x53) powoduję zablokowanie możliwości modyfikacji rejestrów dla RTC?

3) Czy konieczne jest dawanie tego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
przy ustawianiu RTC? Po resecie ten rejestr ma wszędzie zera więc na tym bicie również. Jest to robione może po to by ustawił się bit ALRAWF w rejestrze ISR? Z tego co widzę w dokumentacji wynika, że taki jest powód, jednak wolę się upewnić.

4) Czy w obsłudze przerwania, nie warto sprawdzić najpierw od czego w RTC wystąpiło przerwanie? Przykładowo stosując taki zapis:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Poniżej wklejam kod, który teraz powstał na bazie tego tego co napisał @krafin. Jeszcze raz bardzo dziękuję. Widzę że minimalnie miałem to dobrze, ale jednak za mało by zadziałało. Teraz uporządkowałem sobie tą wiedzę i chyba jako tako rozumie co i jak z RTC. Oczywiście pełne zrozumienie przyjdzie z czasem jak zrobię kilka projektów w oparciu o ten układ, lecz mam już na czym bazować.

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


------------------------ [ Dodano po: 1 minucie ]

Zapomniałem dopisać (miałem dać znać czy działa): DZIAŁA :) dziękuję :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 14:56 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Więc tak:

1. Taki zapis z tego powodu, że mamy 2 preskalery dla RTC. Asynchroniczny 7-bitowy, na pozycjach 22-16 rejestru RTC_PRER, więc wpisuje do niego 10 po czym przesuwam o te 16 bitów w lewo. I drugi 15 bitowy na pozycjach 14-0 tegoż rejestru, więc robię OR i wpisuje do niego 2700.

2. 0xff dla tego, że tak pisali w nocie aby zablokować rejestry. Może można cokolwiek innego od 0xca i 0x53. Ale z takim pytaniem to raczej do ST aniżeli do mnie :D

3. Nawet nie testowałem czy bez tego ustawi się ALRAWF, dałem bo zazwyczaj czytając notę i widząc, że dany bit musi być ustawiony lub skasowany po prostu to robię. Dzięki temu jeżeli później coś nie działa mam pewność, że na pewno nie przez to.

4. Oczywiście twoja obsługa przerwania jest jak najbardziej poprawna. Jeżeli jednak włączaliśmy przerwanie tylko od alarmu rtc to mamy pewność, że pochodzi ono od niego i możemy na ślepo kasować właśnie tą flagę. Gdyby obsługiwać jescze inne jak np. od sabotażu (tamper), albo wake-upa timera to twoja obsługa jest wręcz konieczna.

5. Twój kod oczywiście jest OK ;)


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 16:21 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

1) Chyba już rozumie. Patrzę właśnie na schemat z RM dla RTC i widzę że ten asynchroniczny taktuje synchroniczny. Jak Da się asynchronicznemu 10 a synchronicznemu 2700 to dla LSI ok 30kHz daje to 1,11Hz więc w przybliżeniu sekundę. OR robimy by nie skasować wcześniejszej wpisanej danej do tego rejestru :)

2) Nigdzie nie widziałem tego, że trzeba dawać 0xFF. Poszukam jeszcze, pewnie przeoczyłem. Z ciekawości chyba przetestuję przy okazji różne opcje. Jeżeli czas na to pozwoli.

3) Dobre podejście :P ale w ramach czysto edukacyjnych sprawdzę co się stanie jak to pominę :) i znowu, o ile czas pozwoli.

4) Uczę się ARMów z pewnego poradnika, który znalazłem w sieci i tam właśnie autor zwracał na to uwagę. Pisał, że nawet dla pewności lepiej to dać niż potem żałować. Wolałem jednak dopytać, czy nie ma tutaj jakiegoś ciekawego zjawiska (np. że nie można bo coś tam).

5) Jeszcze raz dziękuję :) Dzięki temu nauczyłem się więcej niż odpuszczając ten temat.

Przeprowadziłem testy i wygląda na to, że 0xFF nie ma znaczenia, musi być po prostu czymś innym niż dwoma magicznymi liczbami odblokowującymi możliwość modyfikacji.

Dodatkowo sprawdziłem czy bit ALRAE w RTC_CR robi różnicę, nie trzeba było go kasować by działało wszystko, niemniej jednak warto to zrobić niż potem żałować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 21:29 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

1. Prawie dobrze. Prawie bo do preskalera dodajemy 1. Po to aby przy wpisanej wartości 0 dzieliło przez 1 więc nie dzieliło :D I wtedy wychodzi 30000 / 11 / 2700 = 1.01 Hz

2. Sam dokładnie nie pamiętam na której to było stronie, ale skoro piszesz, że działa to zapewne nie robi to różnicy.

3. Co do obsługi przerwań to oczywiście twoje podejście i nawyk jest bardzo dobry, więc na mnie nie zwracaj tu uwagi bo poszedłem na łatwiznę.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 23:01 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Chyba więcej pytań już nie mam :) Jeszcze raz dziękuję.



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: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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