Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Kalibracja oscylatora - co to takiego?

A_C
-
-
Posty: 15
Rejestracja: 16 sty 2004, o 19:11
Lokalizacja: Bydgoszcz
Kontaktowanie:

Kalibracja oscylatora - co to takiego?

Postautor: A_C » 8 cze 2005, o 16:13

Sprawa jak w temacie, na razie spotkałem się z tym przy programowaniu procesorów PIC i za bardzo nie wiem jak do tego tematu podejść. Programowanie przy użyciu ICprog nie udaje się mi bo pyta o kalibrację oscylatora jak to ugryźć - może ktoś wie to bardzo proszę o odpowiedź na ten temat.
pzdr

czarutek

Postautor: czarutek » 10 cze 2005, o 22:59

Nie znam PICów, ale przy AVRach kojarzyłbym to z kalibracją oscylatora wewnętrznego. Może o to chodzi?

skorpik
-
-
Posty: 10
Rejestracja: 26 lut 2005, o 17:47
Lokalizacja: Warszawa

Postautor: skorpik » 21 sie 2005, o 10:36

Kalibracja oscylatora w procesorach PIC dotyczy wewnętrznego generatora. Polega na załadowaniu do rejestru OSCAL wartości kalibracji. Wartość zapisujemy np. w ostatnim bajcie pamięci programu i na początku programu piszemy tekścik:
bsf STATUS,RP0 ; bank 1
; Kalibracja oscylatora
call ROMEND
movwf OSCCAL
Z doświadczenia wiem, że wartość kalibracji zapisana w kupionym procku jest prawidłowa i nie warto jej zmieniać podczas programowania. (Zastosować wartość domyślną). Jednak, jeśli używasz wewnętrznego generatora, powyższy kod należy dołączyć do programu.

Gienek1
-
-
Posty: 56
Rejestracja: 8 wrz 2003, o 16:27
Lokalizacja: Tarn-Góry

Postautor: Gienek1 » 5 wrz 2005, o 08:28

W AVR-ch robi się to w sytuacji kiedy do procka masz podpięty "niski kwarc" (np: 32kHz) a rdzeń chcesz aby pracował na dokładnej częstotliwości np: 8MHz

a_antoniak
-
-
Posty: 645
Rejestracja: 13 sty 2005, o 18:38
Lokalizacja: Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 5 wrz 2005, o 10:44

Generalnie chodzi o to, że częstotliwośc pracy oscylatora zależy od wartości pewnego rejestru A (nie pamiętam nazw bo dawno zajmowałem się PICami). Jednak ze względu na rozrzuty parametrów w różnych egzemplarzach kostek żądaną częstotliwość uzyskujemy dla różnych wartości rejestru A. Dlatego producent dla każdego egzemplarza dokonuje przed wypuszczeniem na rynek pomiaru i ustala, że żądaną częstotliwość pracy uzyskuje się dla pewnej wartości rejestru A równej x. Wartość x wpisywana jest w pewne miejsce pamięci nieulotnej B dostepne programowo. Można ją na początku programu odczytać z B i wpisać do A.

Należy też pamiętać, że oscylator uzyskuje żądaną częstotliwość dla A=x w określonej temperaturze (zwykle 25C). Zmiany temp. zmienią częstotliwość.

W AVR-ach jest o tyle gorzej, że B nie jest dostępne programowo i podczas programowania mikrokontrolera (programatorem) wartość zapisaną w B należy wpisać w pewne wybrane przez siebie miejsce w pamięci Flash lub EEPROM danych i stamtąd odczytywać.

Gienek1
-
-
Posty: 56
Rejestracja: 8 wrz 2003, o 16:27
Lokalizacja: Tarn-Góry

Postautor: Gienek1 » 8 wrz 2005, o 12:05

Generalnie chodzi o to, że częstotliwośc pracy oscylatora zależy od wartości pewnego rejestru A (nie pamiętam nazw bo dawno zajmowałem się PICami). Jednak ze względu na rozrzuty parametrów w różnych egzemplarzach kostek żądaną częstotliwość uzyskujemy dla różnych wartości rejestru A. Dlatego producent dla każdego egzemplarza dokonuje przed wypuszczeniem na rynek pomiaru i ustala, że żądaną częstotliwość pracy uzyskuje się dla pewnej wartości rejestru A równej x. Wartość x wpisywana jest w pewne miejsce pamięci nieulotnej B dostepne programowo. Można ją na początku programu odczytać z B i wpisać do A.

Należy też pamiętać, że oscylator uzyskuje żądaną częstotliwość dla A=x w określonej temperaturze (zwykle 25C). Zmiany temp. zmienią częstotliwość.

W AVR-ach jest o tyle gorzej, że B nie jest dostępne programowo i podczas programowania mikrokontrolera (programatorem) wartość zapisaną w B należy wpisać w pewne wybrane przez siebie miejsce w pamięci Flash lub EEPROM danych i stamtąd odczytywać.
To nie jest kwestia tylko wpisania "jakiejś" wartości. Ją trzeba najpierw zmierzyć a potem można ją wpisać tak jak powiedziałeś. Ale bez sensu jest umieszczanie jej w programie skoro ją należy najpiewr zmiezrzyć, najlepiej po każdym resecie procka.

a_antoniak
-
-
Posty: 645
Rejestracja: 13 sty 2005, o 18:38
Lokalizacja: Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 8 wrz 2005, o 12:54

To nie jest kwestia tylko wpisania "jakiejś" wartości. Ją trzeba najpierw zmierzyć a potem można ją wpisać tak jak powiedziałeś. Ale bez sensu jest umieszczanie jej w programie skoro ją należy najpiewr zmiezrzyć, najlepiej po każdym resecie procka.
Co to znaczy "jakiejś wartości"? Gdzie ja to napisałem?

Coś Ci się pomyliło kolego. Jest dokładnie tak jak napisałem. Producent dokonuje pomiaru w typowych warunkach i wartość rejesrtu A odpowiadającą tej częstotliwości w tych warunkch (czyli x) zapisuje w tym lub innym miejscu zależnie od mikrokontrolera (producenta).

Gienek1
-
-
Posty: 56
Rejestracja: 8 wrz 2003, o 16:27
Lokalizacja: Tarn-Góry

Postautor: Gienek1 » 8 wrz 2005, o 19:44

Producent zmierzył to w warunkach X a twój procek pracuje w warunkach Y. Dlatego twierdzę że kalibracja jest poto aby skalibrować a nie poto żeby uruchomić wewnętrzny generator na parametrach domniemanych (przypuszczalnych).

a_antoniak
-
-
Posty: 645
Rejestracja: 13 sty 2005, o 18:38
Lokalizacja: Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 8 wrz 2005, o 21:08

Producent zmierzył to w warunkach X a twój procek pracuje w warunkach Y. Dlatego twierdzę że kalibracja jest poto aby skalibrować a nie poto żeby uruchomić wewnętrzny generator na parametrach domniemanych (przypuszczalnych).
Mylisz się. Kalibracja jest po to aby zniwelować rozrzuty parametrów. Zależność częstotliwości pracy gen. RC od warunków (zwłaszcza temperatury) jest nieunikniona i nawet zmierzenie tuz po resecie niewiele da - warunki moga się zmieniać w trakcie pracy. Generator RC jest przewidziany do średnio wymagających zastosowań. Do bardziej wymagających się nie nadaje i tam stosuje się kwarce.

Mylisz rejestr A (ten od którego zależy częstotliwośc pracy) z wartością x która jest ustalona w procesie produkcyjnym na pdst. pomiarów (tzw. bajt kalibracyjny - calibration byte). Czy naprawdę uważasz, że inżynierowie z Microchipa i Atmela zaszywaliby w pamięci nieulotnej wartośc ustaloną x gdyby to było bez sensu??

Oczywiście można zastosować bardziej elastyczne metody ustalania wartości A, ale zysk będzie w sumie nieznaczny. Jak pisze Atmel - zastosowanie "firmowego" bajta kalibracyjnego pozwala osiągnąć dokł. ok. 3%, zaś dodatkowe zabiegi - 1%. Gra nie jest warta świeczki.

ROM
-
-
Posty: 293
Rejestracja: 5 lis 2004, o 10:48
Lokalizacja: Poznań

Postautor: ROM » 9 wrz 2005, o 00:05

Hmmm...to jak to w koncu jest ?, należy w IcProg wcisnąć tą kalibrację, czy nie?, bo jakoś w tej dyskusji nie mogę się tego doszukać :| .
Ja, w każdym razie, kalibrację przeprowadzałem i wszystko działało prawidłowo.

Gienek1
-
-
Posty: 56
Rejestracja: 8 wrz 2003, o 16:27
Lokalizacja: Tarn-Góry

Postautor: Gienek1 » 9 wrz 2005, o 08:14

Osobiście bawiłem się z kalibracją na ATtiny2313 i wystarczyło że zmieniłem podział zegara przez zminę ustawienia fuza a częstotliwość wcale nie była osiem razy mniejsza jak wynikało z tego dzielnika i generator wymagał innej wartości bajtu kalibracyjnego.
Jak do tego ma się ta optymalizacja na jednym bajcie ?

a_antoniak
-
-
Posty: 645
Rejestracja: 13 sty 2005, o 18:38
Lokalizacja: Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 9 wrz 2005, o 10:02

Gienku - mimo najlepszej woli nie rozumiem ostatniego posta. Może my po prostu o czym innym mówimy?

Gienek1
-
-
Posty: 56
Rejestracja: 8 wrz 2003, o 16:27
Lokalizacja: Tarn-Góry

Postautor: Gienek1 » 9 wrz 2005, o 20:28

Wydawało mi się że rozmawiamy o kalibracji generatora wewnętrznego w procesorach jednoukładowych. Nie wiem jak to dokładnie wygląda w PIC-ach dlatego omawiałem to zagadnienie na podstawie znanych mi AVR-ow. Oczywiście kalibracja może być mniej lub bardziej dokładna. Ja miałem na myśli tą dokładniejszą wzorowaną na generatorze kwarcowym zewnętrznym. Z tąd te moje wywody na temat samej kalibracji.

KaW
-
-
Posty: 9
Rejestracja: 17 gru 2007, o 15:04
Lokalizacja: LODZ

Postautor: KaW » 17 gru 2007, o 15:54

Kalibracja jest zabiegiem normującym pracę mikroprocesora -dane podaje producent -i o ile dobrze pamiętam -należy je wcześniej odczytac z wnętrza uP -przed-programowaniem sim programem. Jeśli tego sie nie zrobi -nie odczyta sie
tych danych wcześniej -to mikroprocesor nie będzie pracował stabilnie /może nawet nie da się zaprogramować/
Autorem mogącym dać odpowiedż jest Pan PIETRASZKIEWICZ./zajmuje się tym/
Możliwe ,że fabryczny programator sam odczytuje dane i potem wstawia przy programowaniu /na fabrycznym programatorze/.....

Wróć do „Pozostałe mikrokontrolery (PIC, MSP430, PSoC, 8051 ...)”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 29 gości