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



Teraz jest 29 mar 2024, o 02:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 10 lis 2018, o 00:33 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Proszę o pomoc przyznam się szczerze że się trochę pogubiłem próbuję skalibrować attiny10 do lampki projektu Mirka i zejść z taktowaniem F_CPU do poziomu „+” „-” 31,250 kHz wprowadziłem pewne zmiany w kodzie Mirka z filmiku nie wiem czy dobrze na razie co mi się udało jedna lampka świeci około 40 min druga nie gaśnie pojawiły się też kłopoty z przyciskiem czyli jak przypuszczam długi czas delay po prostu nie mogę się z ty uporać
ostatnie ustawienia OSCCAL = 1;
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Obrazek

Poz.Darek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2018, o 10:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Z tego co wyżej wrzuciłeś to na pewno wiadomo jedno - w kodzie masz preskaler timera ustawiony na "1" a Mirka program do przeliczania ma ustawiony preskaler na 256 więc wyliczenia F_CPU nie są właściwe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2018, o 11:00 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Kod Mirka z filmiku " #0365 ATTiny - KALIBRACJA analizator stanów logicznych" już sobie przećwiczyłem wiem że pleskaler tam jest ustawiony na 256 a w kodzie do lampki Quechua pleskaler jest na 1 więc pomyślałem że muszę to właśnie tak samo ustawić żeby dojść do taktowania procesora 31,25 kHz ale chyba nie tędy droga
ustawienia lampki
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2018, o 12:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Z powyższego wynika że chyba nie do końca wiesz co i jak.
Timer zupełnie nie ma wpływu na częstotliwość taktowania uC. Jego ustawienia są poczyniane w taki a nie inny sposób by częstotliwość taktowania wyrzucić na pin procka by można ją było analizatorem zmierzyć. Preskaler timera się ustawia tylko po to by ta częstotliwość nie była za dużo bo analizator ma skończoną szybkość próbkowania więc im częstotliwość uC będzie bliższa częstotliwości próbkowania analizatora tym pomiar będzie bardziej przekłamany. Dla tego w Mirka pomocniku wogule nie ma preskalera 1 tylko 256 i 1024.
Co do kalibracji procesora to tu również należy rozróżnić dwie rzeczy, jedna to preskaler systemowego wewnętrznego oscylatora RC, druga to układ kalibracji wewnętrznego oscylatora RC.
Preskaler CLKPSR powoduje podział wbudowanego generatora RC przez 1,2,4,8,16,32,64,128,256. A wartość nominalna to 8Mhz, ustawienie domyślne preskalera to 8 więc procesor domyślnie taktowany jest 1MHz.
Jeśli chcesz taktować procesor 31.25kHz to preskaler musisz ustawić na 256 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 co do kalibracji to widzisz wewnętrzny generator RC nie jest super dokładnym źródłem taktowania, jego częstotliwość również zależy od napięcia zasilania, temperatury i pewnie jeszcze wielu innych czynników. Producent kalibruje ten generator na 8MHz ale robi to w pewnych ściśle określonych warunkach. Może się okazać że Twój egzemplarz procka u Ciebie na stole będzie bardzo odbiegał od idealnego 8MHz. Producent to przewidział i dał narzędzie w postaci układu kalibracji którym steruje się poprzez rejestr OSCCAL. Wpisanie do niego wartości bliższych 0x00 obniża częstotliwość taktowania a bliższych 0xFF podwyższa częstotliwość taktowania. Nie zawsze jednak trzeba w tym rejestrze grzebać by dostroić zegar do 8MHz, czasem programista celowo może chcieć obniżyć albo podwyższyć taktowanie procesora.

Podsumowując jeśli chcesz skalibrować zegar na równiutkie 31,25kHz to możesz to zrobić albo na fabrycznym taktowaniu i przy fabrycznym CLKPSK (czyli wtedy wogule nic nie zapisujesz przy inicjalizacji do tego rejestru) i tak zmieniasz OSCCAL by Mirkowy pomocnik wyliczył wartość najbliższą 1MHz.
Albo też od razu ustawić CLCPSK = 0x08 i wtedy dostrajać wartość OSCCAL tak by pomocnik wyliczył wartość najbliższą 31250.
Póżniej w docelowym układzie w którym wyląduje ten egzemplarz uC w programie wpisujesz uzyskaną wartość OSCCAL tak by przy każdym uruchamianiu układu wartość ta była ładowana (tak musi być ona ładowana przy każdym starcie ponieważ ten rejestr jak i wszystkie pozostałe leżą w obszarze ulotnej pamięci RAM!)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2018, o 21:41 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Z tego co zrozumiałem attiny fabrycznie ustawione jest na 8MHz poleceniem CLKPSR = 0x08 dziele ją przez 8 czyli 8:1 mam teraz 1MHz
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a poleceniem OSCCAL = „1 – 255” mogę ją dostroić w dół i górę
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

teraz zaczyna sie problem w lekcji Mirka ustawienia są 8MHz
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

teraz muszę przestroić taktowanie attiny do lampki Mireka projektu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ustawił OSCCAL = 114 czyli na 31250 Hz i tą wartość wpisałem w eclipsie tylko że jego lampka świeci około 2,5godz a moja tylko 45min wiem że poszczególne egzemplarze różnią się od siebie tylko chyba nie o tyle więc mój licznik pracuje szybciej :?: .
Teraz samo dostrajanie F_CPU przykład OSCCAL = 50 i OSCCAL = 10 //dostrajanie F_CPU tylko daleko mi jeszcze do 31250kHz które uzyskał Mirek więc może wynik z z ustawienia OSCCAL = 10 to jest 3 616 923 Hz mam podzielić przez 8 czyli 452 115 kHz i to taktowanie wpisać properties w eclipse przyznam się że już trochę się w tym pogubiłem :(
OSCCAL = 50
ObrazekOSCCAL = 10 Obrazek
Poz.Darek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2018, o 22:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Ech i masz ci los, czytałeś co napisałem wyżej?
Daro68 napisał(a):
Z tego co zrozumiałem attiny fabrycznie ustawione jest na 8MHz poleceniem CLKPSR = 0x08 dziele ją przez 8 czyli 8:1 mam teraz 1MHz
No właśnie nie, podział przez 8 jest włączony domyślnie czyli po uruchomieniu procek zawsze staruje z 1MHz.
Zaglądałeś do noty?
Obrazek
Z powyższego wynika że domyślnie w rejestrze siedzi wartość 0x03 odpowiadająca podziałowi przez 8.

Mylisz pewne pojęcia - zapisanie do rejestru CLKPSR wartości 0x08 nie włącza podziału przez 8 a włącza podział przez 256 ponieważ wartość tam wpisana nie jest wartością rzeczywistą preskalera tylko wartością pozycji w tabelce która włącza właściwy preskaler.
Druga rzecz to bez kalibracji będziesz miał około 31,25kHz po ustawieniu CLKPSR=0x08. Jedynie możesz mieć pewną odchyłkę - ale bez przesady.
Trzecia sprawa to czas świecenia lampki, jeśli dobrze pamiętam, jest wyznaczany przez WatchDog który wybudza się co 8s i inkrementuje (bądź dekrementuje zmienną - nie pamiętam) 8 bitową, czyli zmienna 8 bitowa daje 256 * 8 sekund = 2048 sekund czyli około 34minuty. WatchDog pracuje i tak na innym taktowaniu więc kalibracja nie ma tu najmniejszego wpływu na pomiar czasu.
Czwarta sprawa to Mirek przyznał że jego lampki świecą około 0,5h https://forum.atnel.pl/post212211.html#p212211 więc z Twoją jest wszystko OK.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2018, o 00:55 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Dzięki za cierpliwość ( za chwilę to będzie chyba moją ksywką ) przyznam że nie szukałem i nie sprawdziłem tego w nocie PDF attiny10 mój angielski jest 0! jedynie czym się wspomagam to porównania i tłumacz google i jeszcze nie do końca nie wiem czy dobrze zrozumiałem to na tyle wymówek teraz do rzeczy odrobiłem zadanie domowe i troszkę wiem więcej
opis tabelki
Obrazek
teraz kolejna sprawa przetestowałem moje attiny10 na programie Mirka
moje ustawienia ale nie mam pewności czy ustawienia są prawidłowe !!!
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Mirkowe attiny zeszło do 31 250 Hz które wpisał w eclipse moje pokazało 25 821 Hz czy może być taka rozbieżność
Obrazek

i jeszcze jedna rzecz a nie chcę otwierać kolejnego wątku rozchodzi się o przedłużenie czasu świecenia lampki Mirka podałeś mi adres wąteku w którym trzeba powołać dodatkowa zmienną i jeśli dobrze zrozumiałem wstawić ją w te miejsce kodu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Poz.Darek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2018, o 19:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Daro68 napisał(a):
Mirkowe attiny zeszło do 31 250 Hz które wpisał w eclipse moje pokazało 25 821 Hz czy może być taka rozbieżność
Oczywiście że może, to tylko generator RC a nie kwarc. Jak chcesz to możesz dokalibrować do tych 31250Hz - zawsze to trochę więcej zabawy i więcej doświadczenia wyniesionego z niej. Tak na dobrą sprawę faktyczna wartość zegara F_CPU ma wpływ tylko na 2 rzeczy w tym konkretnym przypadku:
1 - częstotliwość sygnału PWM - jeśli będzie zbyt niska to lampka będzie lekko mrugać szczególnie przy słabszym świeceniu - to akurat można ocenić gołym okiem.
2 - przeliczanie czasu oczekiwanie dla _delay_ms, ale tu tylko jeśli inna wartość będzie faktyczna, a inna wpisana w properitsy projektu. Jeśli wartość którą zmierzyłeś czyli 25821Hz wpiszesz do właściwości projektu i zrobisz clean i build to eclipse właściwie przeliczy delaye i czasy będą takie jak w założeniach.
Daro68 napisał(a):
i jeszcze jedna rzecz a nie chcę otwierać kolejnego wątku rozchodzi się o przedłużenie czasu świecenia lampki Mirka podałeś mi adres wąteku w którym trzeba powołać dodatkowa zmienną i jeśli dobrze zrozumiałem wstawić ją w te miejsce kodu

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

Normalnie przerwanie WDT jest wywoływane co 8s i w każdym wywołaniu jest zliczany "segment" odliczanego czasu. Dodając tę zmienną cały mechanizm będzie się wywoływał rzadziej o tyle razy na ile nastawiona będzie ta zmienna.

------------------------ [ Dodano po: 16 minutach ]

Jest jeszcze jedno ale - w tym przerwaniu jest jeszcze tryb błyskania. Po takim zabiegu błyskanie się również mocno rozjedzie, Trzeba by trochę przebudować warunki mode_... tak by zmienna wpływała tylko na wykonywanie kodu tylko dla trybu świecenia, a nie dla błyskania.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2018, o 00:13 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Jeszcze raz dzięki za wyjaśnienie :D a co się tyczy lampki Mirka moim pierwszym pomysłem było powiększenie tablicy tylko jak ją powiększyłem to program nie zmieścił się do procka przeanalizuje twoją podpowiedz chociaż nie wiem czy to wszystko ogarnę przy moim stanie wiedzy :mrgreen: i znów nowe wezwanie
Poz. Darek



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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