AVR205 Detektor przejścia przez zero (8 bit) – OPIS pl

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 1/14

AVR205: Detektor przejścia
przez zero (8-bit)

– OPIS.

AVR: AVR205 -

Pomiar częstotliwości to proste

z Atmel TinyAVR i Atmel mega

Właściwości

o

Pomiar częstotliwości od 10Hz do

Timer_Clock_frequency/2.5.

o

Dokładny pomiar: do 99% lub więcej, w

zależności od źródła zegara urządzenia
AVR®

o Dwie metody pomiaru:

Zajęty czekać

(odpytywania) i sterowane przerwaniami.

1. Wstęp

Cykle pomiarowe okresowo zmiennego sygnału
w jednostce czasu to -

częstotliwość - jest jedną

z podstawowych działalności w dziedzinie
budowany

ch układów elektroniki. Niniejsza nota

opisuje jak mierzyć częstotliwość każdego typu
fali - sinus, kwadrat, itp - ze zmiennym cyklem
pracy. Podstawowym wymogiem jest aby sygnał
mieł amplitudę, która jest w zakresie poziomów
I/O pin dla wybranego urządzenia AVR.

Drugie wymaganie dla kodu Prezentowanego tu
przykładu pracy jest, aby wybrane urządzenie
AVR miało co najmniej dwa liczniki, a jedna z
nich może być stosowany z zewnętrznym
sygnałem zegarowym. Jeden z tych timerów
może być tworzony przez pętlę opóźniającą w
oprogramowaniu. Chodzi o to, podawać
mierzony sygnał na wejściu zegarowym przez
jeden timer, a następnie użyć innego timera jako
czasu odniesienia.

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 2/14

Rysunek 1-

1. Licznik częstotliwości z roku 1970.

2 Wymagania aby uruchomić kod

Kod rea

lizowane w ramach niniejszej noty aplikacji oparty jest na urządzeniach Atmel®

TinyAVR® i Atmel megaAVR®

. Dla urządzeń Atmel XMEGA®, patrz uwaga aplikacji

AVR1617: Atmel XMEGA

wykorzystuje system zdarzeń.

Jak krótko wspomniano powyżej, dwa pomiary czasu muszą być dostępne na wybranym
urządzeniu, a jeden zegar musi być taktowany z zewnętrznego źródła.

Rysunek 2-

1. Wejście zegara AVR program używany jako obwód synchronizatora.

Rysunek 2-

1 pokazuje, jak sygnał wejściowy jest próbkowany. Maksymalna częstotliwość

zegara zewnętrznego, które mogą być wykrywane jestrówna połowie częstotliwości
próbkowania (twierdzenie Nyquista o próbkowaniu). Jednakże, ze względu na zmiany
częstotliwości cyklu zegara systemowego i obowiązujące cykle powodowane wybraniem
tolerancji

źródła zegarowego (kryształ rezonatora i kondensatory), to zaleca się, aby

maksymalna częstotliwość zegara zewnętrznego źródłamierzonego może być mniejsza niż
Timer_Clock_frequency/2,5

. W tej nocie aplikacyjnej, częstotliwość oscylatora to 8MHz z

oscylato

ra RC jest podawana do licznika zegara. Dlatego też, w tym szczególnym

przykładzie wykonania, zalecana maksymalna częstotliwość do pomiaru powinna być
mniejsza niż 3.2MHz.

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 3/14

Sygnały wejściowe symetryczne (wypełnienie 50% cyklu roboczego), mogą być mierzone w
zakresie do 3,2MHz

, jak opisano powyżej. Dla niesymetrycznych sygnałów wejściowych,

wysokie lub niskie poziomy na wejściu musi być większa niż okres jedego zegara
sterującego szerokością impulsu lub obwódy synchronizacji przedstawione powyżej mogą
przega

pić impulsu wejściowy i powodować niedokładności pomiaru częstotliwości sygnału

mierzonego.

Na przykład, jeśli zegar 8MHz służy do uruchamiania stopera, zegarowe wysokie i niskie
okresy mogą dodać do 125ns. Dlatego też sygnał wejściowy o wysokiej lub niskiej szerokość
impulsów musi być większa niż 125ns.

Zobacz tinyAVR lub megaAVR

w arkuszach danych. Więcej informacji na temat tej techniki

w opisie wprowadzania próbki.

2.1 Lista urządzeń firmy Atmel AVR z zewnętrznym wejściem na zegar
zegar/licznik.

Prostym

sposobem, aby ustalić, czy wejście zewnętrzne mogą być wykorzystane do zegara

zegar/licznik jest obserwować schemat pinout urządzenia Atmel AVR i poszukaj oznaczenia
pinowy, T0. Patrz Rysunek 2-

2 na przykład.

Nie kompletna lista urządzeń Atmel AVR z tą funkcją obejmuje:

Atmel ATtiny10,

ATtiny13,

ATtiny20,

ATtiny26,

ATtiny28,

ATtiny2313,

ATmega48/88/168,

ATmega8,

ATmega16,

ATmega32,

ATmega8515/8535,

ATmega162,

ATmega164/324644/1284

ATmega165/325/3250/64
56450
.

Rysunek 2-2. Atmel ATtiny13A Wyprowadzenia.

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 4/14

3 Zasada pomiaru.

W tej nocie aplikacji, "gate-

open" (bramka otwarta) przedział został wybrany na 0,1 s lub 100

ms, a więc sygnał należy mierzyć zegarem licznik w tym przedziale czasowym, a wytwarzają
wynik zliczania częstotliwość 100ms. Pomiar częstotliwości Otrzymany będzie jedną
dziesiątą rzeczywistej częstotliwość.
To był również wybrany do skorzystania z 16-bitową rozdzielczością Timer/Licznik jest; w
tym przypadku, pomiar częstotliwości tylko od 500Hz do 5000Hz. Jeśli częstotliwość 500kHz
ma b

yć mierzona, czasu bramy 1ms spowodowałoby dobre wykorzystanie zakresu

16-

bitowego rejestru Tmer/Licznik użytkownika.

Rysunek 3-

1. Schemat logiczny wskazujący sterowanie bramkowaniem

4 dwie techniki: Zajęty czekać i druga sterowane przerwanimi.

4.1

Busy pętla czekania

Zajęty pętli oczekiwania - jest to pętla, która wielokrotnie sprawdza, czy wystąpiło zdarzenie.
Niektóre aplikacje mogą czekać na 0.1s (100ms) w pętli kolejnego do cyklu, i nie wymagają
stosowania przerwania.

Figura 4-

1 jest siecią działań dla głównej części programu. Rysunek 4-2 jest to schemat

blokowy dla wywołania funkcji C, które w rzeczywistości mierzy częstotliwość sygnału
przychodzącego i zwraca wynik do głównego programu (wywołując go)

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 5/14

Rysunek 4-

1. Główny schemat blokowy.

Włącz i reset może być również aktywny
przez niski sygnał stosowane do urządzeń
AVR na pin reset.

Zmienne użytkownika zostaną również
zainicjowany tutaj.

Zawartość timera jest wyczyszczona.

Kod użytkownik wykonuje się w momencie,
kiedy jest akurar potrzebny do pomiaru
częstotliwości, połanczanie wybranej funkcji.

Wywołanie funkcji rozpoczyna się w tym
momencie.

Wyniki wywołania funkcji są zwracane w
16-

bitowy rejestr jeśli liczba niezerowa. Jeśli

zwracany jest 0xFFFF (65535 dziesiętnie),
oznacza

to przepełnienie timera. Rezultat

oznacza ”pomiar częstotliwości jest nie
ważny
”. Może to nastąpić w przypadku zbyt
wysokiej częstotliwości mierzonej przyłożonej
do wtyku wejściowego urządzenia AVR.

Wyjście z wywołanej funkcji

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 6/14

Rysunek 4-2. Schemat blokowy funkcji.

Punkt wejścia funkcji.

Wyczyść wynika z licznika.

Inicjalizacja timera 0 liczenie.

Jeśli timer ma 0 jest taktowany raz
uruchomić bramkę licznika na 0.1s
(100ms).

Po upływie 100 ms, odłącz timer 0 z
sygnału wejściowego.

Czy przepełnienia timera? Jeśli tak, to
zwraca wartość 0xFF; w przeciwnym
razie zwróci aktualną wartość licznika
16-bitowego.

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 7/14

Rysunek 4-3. Schemat blokowy

4.1.1 Jak uruchomić
projekt korzystając
zajęty oczekiwania
Atmel

AVR Studio 4.18 zostało wykorzystane do opracowania tego
kodu. Późniejsze wersje mogą lub nie mogą skompilować
kod poprawnie. WinAVR kompilator C wersję 20100110 był
również używany.
Późniejsze wersje mogą lub nie mogą skompilować kod
poprawnie. Jest on dostępny (kod) pod adresem:

http://sourceforge.net/projects/winavr/files/

o Patrz na Rysunek 4-

1. Podłącz źródło sygnału do

wejścia, pin AVR T

0

o

•Korzystając z wejścia AVR Studio 4, otwórz projekt,
freq_meter_busy_wait_demo.apx.

o Budowanie projektu
o

Korzystanie z JTAGICE mkII, rozpocząć sesję
debugowania z AVR Studio i ustawić punkt przerwania
na delay100ms instrukcji C (2);

o

Uruchom projekt, a po osiągnięciu punktu przerwania,
wynik zliczania częstotliwości będzie w zmiennej
freq_div_by_10 C

o

Otrzymaną wartością będzie jedna dziesiąta aktualnej
częstotliwości, ponieważ zegar AVR zlicza przez
100 ms. Jeśli częstotliwość przekracza możliwości
algorytmu, wynik zwracany będzie jako 0xffff, wskazując
przepełnienie

T

0

-

jest nadrzędne wejście do AVR

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 8/14

4.1.2 Jak zbudowa

ć

projekt korzystając
procedury zajęty
czekać.

Wymagania:

znajomość sposobów budowania, kompilowania i

debugowania projektu AVR Studio 4.

o

Trzy pliki będą potrzebne do budowy tego projektu. W tym
przykładzie są to:

avr205_frequency_meter_busy_wait_demo.c, gdzie

znajduje się główna funkcja ()

freq_meter.c

, gdzie znajdują się inne funkcje

freq_meter.h

, gdzie znajduje się specyfika takich

zmiennych jak nazwy portu i rejestru które zostały w
nim określone, w tym takżr i prędkości zegara
procesora, w tym przypadku jest to 8 000 000Hz
(8MHz)

o

• Określ rodzaj AVR, takich jak ATtiny861 lub ATmega48

4.1.3 Jak wywołać je i
korzystać z tych
funkcji, używając
konfiguracji
zajęty czekać

w pliku freq_meter_demo.c

o Funkcja freq_meter init(); inicjuje odpowiednie rejestry

AVR

o Funkcja user_init function(); inicjuje zmienne

użytkownika

o Przerwania AVR

nie są używane w tym demo

o

Wywołanie freq_cntr_get_frequency(); ustawia zmianę

poziomu na pinie przernie_T

0

aby umożliwić pomiar

częstotliwości i zacząć od zmiany na pinie T

0

. Wewnątrz

tej funkcji jest wywołanie (procedury opóźnienia)
delay100ms (1);

o

• Oczekiwanie technicznie jest realizowane przez

wywołanie funkcji: zajęty_delay100ms (1);

o Procedura delay100ms (2)

symuluje kod użytkownika

przed wywołaniem funkcji freq_cntr_get_frequency(); i
jest wywoływana ponownie

4.2 Przerwanie
Sterowane

Implementacja, która używa systemu przerwań może używać
sygnału zajęty_czekać, wtedy wejście jest blokowane. A nie
czeka na synchronizację zegara do zakończenia cyklu, i może
po prostu przerwać i zatrzymać blokując bramekę licznika. Patrz
ilustracje poniżej, aby uzyskać szczegółowe informacje.


background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 9/14

Rysunek 4-

4. Główna pętla.

Włączenia zasilania powoduje procedurę reset
przez aktywny niski sygnał stosowany do
urządzeń AVR pin-reset.

Zmienne użytkownika zostaną również
zainicjowane tutaj.

Przerwanie od Użytkownika zostaje włączone w
odpowiednim czasie w tej aplikacji.
Ten punkt to tylko propozycja.

Sprawdzenie, Czy kod użytkownika potrzebuje
pomiaru częstotliwości w tej chwili?

Jeśli tak, należy podać sygnał przerwania na
PIN-

Zmień.

Zobacz następy schemat który pokazuje
odpowiedź urządzenia AVR pierwsza zmiana
poziomu sygnału na pinie przerwania.

Jeśli nie jest wymagany pomiar częstotliwości
w tym momencie kontynuuj wywołany program
użytkownika.

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 10/14

4.2.1 Jak uruchomić
freq_meter_interrupt
(pomiar częstotliwości
demo

Atmel AVR Studio 4.18

został wykorzystany do

opracowania tego kodu. Późniejsze wersje mogą lub nie
mogą skompilować ten kod poprawnie. WinAVR kompilator
C wersja 20100110 był również używany.
Późniejsze wersje mogą lub nie mogą skompilować kod
poprawnie. Jest on dostępny oddzielnie na

http://sourceforge.net/projects/winavr/files/

o Patrz Rysunek 4-

1. Podłącz źródło sygnału do wejścia

AVR pin T

0

o

Korzystając z AVR Studio 4, otwórz projekt, plik
frequency_meter_interrupt_demo.apx

o Zbuduj projekt

o Korzystanie z JTAGICE mkII

, rozpocząć sesję

debugowania z AVR Studio i ustaw punkt przerwania
instrukcji C w funkcji freq_cntr_clear_result();

o

Uruchom projekt, a po osiągnięciu punktu przerwania,
wynik zliczania częstotliwości będzie w zmiennej
freq_cntr_result C

o

Otrzymana tam wartość będzie jedna dziesiąta
aktualnej częstotliwości wejściowej, ponieważ czas
bramy to 100 ms

. Jeśli częstotliwość przekracza

możliwości algorytmu, wynik zwracany będzie jako

0xffff

, wskazując przepełnienie

4.2.2 Jak zbudować
projekt przy użyciu
przerwań

Wymagania:
wiedza na temat, jak budować, kompilować i debugować
projekt w AVR Studio 4.

o

Trzy pliki będą potrzebne do budowy tego projektu. W
tym przykładzie są to:

avr205_frequency meter_busy_wait.c, gdzie

main()

Funkcja się znajduje.

freq_meter.c

, gdzie znajdują się funkcje

freq_meter.h, gdzie jest specyfika takich

zmiennych jak port i zarejestrowane ich nazwy,
w tym także częstotliwości taktowania procesora,
w tym przypadku to 8 000 000Hz (8MHz).

• Określ urzycie AVR, takich jak Attiny861 lub Atmega48

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 11/14

4.2.3 Jak wywołać i
korzystać z tych
funkcji, przy użyciu
przerwań

Funkcje są w freq_meter_demo.c

o funkcja freq_meter_init function(); inicjuje

odpowiednie rejestry AVR

o funkcja user_init function(); inicjuje zmienne

użytkownika

o Przerwania AVR

są włączane przez użytkownika

o

Wywołanie funkcjai freq_cntr_start_measurement();

konfiguruje zmiana sygnału na pin-T

0

wymusza

przerwanie, aby umożliwić pomiar częstotliwości,
pomiar zaczyna sie od zmiany na pinie T

0

o

Wywołanie funkcji freq_cntr_get_result(); zwraca

albo 0x00

, jeśli pomiar częstotliwości nie jest jeszcze

gotowy, albo liczbę szesnastkowa mniejszą niż 0xffff
(pr

zepełnienie) jako pomierzoną częstotliwość.

Informacja o Błędzie jest przekazywanych jako wynik
w postaci 0xffff

o

Wywołanie funkcji freq_cntr_clear_result(); czyści
wynik zwrócany wcześniej w celu przygotowania do
następnego pomiaru częstotliwości.

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 12/14

Rysunek 4-5. Zmiana na PIN-ie przerwania jako odpowiedzi.

Jest to zmiana na pinie
przerwania jako
odpowiedzi kodu
programu.

Sprawdzenie Czy sygnał
wejściowy jest w
wysokim stanie
logicznym? Jeśli nie
Zmieniłna PIN-e, to
powrót z z obsługi
przerwania.

Jeśli dodatnie zbocze
zostało wykryte.
Zatrzymaj oba liczniki.

Korzystajac z dostępu do
instrukcji rejestru,
włączyć sygnał
zezwolenia na
zewnętrzne przerwanie
skierowane do Timera0
na pin zegara.

Kasowanie timera do 0
zapewnia najlepszą
możliwą dokładność.

Timer 1 steruje okresem
bramy100ms i jest
ładowany z jego
wartością początkową
liczyć aż do
przepełnienia, OVF

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 13/14

Rysunek 4-

6. Timer1 kod obsługi przerwania dla przepełnienia.

Włączenie zasilania może
również aktywować niski
poziom sygnału stosowany
dla

urządzeń AVR na pinie

resetu.


Zmienne użytkownika
zostaną również
zainicjowane tutaj.

Czy Zawartość timera jest
wyczyszczona.

Kod użytkownika jest
wykonywany w tym
momencie, kiedy istnieje
potrzeba pomiaru
częstotliwości, wywołanie
funkcji jest dos

tępne.

background image

AVR205: 8-bit Microcontrollers Nota Applikacyjna

Strona 14/14

5 Słowo o wychwytywaniu wejściowego (nie używane w niniejszej nocie
wniosku)

Wiele urządzeń AVR zawiera liczniki które używają zestawu
8-

bitowych zatrzasków, które oferują "przechwytywanie i

zatrzaskiwanie sygnału wejściowego",. Gdy taktowane zatrzaski
(przerzutniki typu Lach) zapisują chwilowe zawartości timera.
Przechwytywanie Wejścia to zaawansowana funkcja, która nie jest
dostępna w prostszych urządzeniach, takich jak AVR Atmel ATtiny13.
Wejściowe rejestry przechwytyujące są taktowane przez pinowe
specjalne wejście. Ale do pomiaru częstotliwości, akcja taka nie musi
być uruchamiane przez pin wyjściowy, więc ta technika wymaga
zastosowania dwóch pinów (I/O

) we/wy, które często nie są dostępne

w urządzeniach o mniejszej liczby PIN-ów.

Implementacja Atmel XMEGA

licznika częstotliwości może korzystać z

systemu zdarzeń do wyzwalania momentu przechwytywania
(zatrzaskiwania) sygnału.

6. Wnioski

Większość urządzeń Atmel tinyAVR i Atmel megaAVR mieć możliwość sterowania zegara
timer/licznik za

pomocą sygnału zewnętrznego. Funkcja ta pozwala na to aby wewnętrzny

licznik być taktowany przez szybki zewnetrzy zegar 2.5MHz lub jeszcze wyszej
częstotliwości (w zależności od częstotliwości zegara głównego AVR).
Jeżeli brama czasowa 100 ms jest stosowany jako czas na liczenie, to następnie licznik
zawiera tylko wartość która jest jedną dziesiątą częstotliwości sygnału wejściowego.
Technika ta może być zrealizowana z lub bez systemu przerwań. Obie te techniki są
przedstawione w tej nocie.

tłum.:

saj5


Wyszukiwarka

Podobne podstrony:
Microsoft Windows 10 Home x 64 bit Final [PL] [ iso] [aktywator] OPIS
nero burnig rom v5 opis pl PLYEWGQLKCQ7VJ3LLPUF2L3BVMGLDNQFW2ORDNI
Jak przejść przez autostradę Najlepiej zielonym mostem
AVR182 Zero Cross Detector pl i Nieznany (2)
Wybrane zagadnienia dorzucone przez ARTURA-[ www.potrzebujegotowki.pl ], Ściągi i wypracowania
Albisetti Valerio - Jak przejść przez cierpienie i wyjść z niego zwycięsko (fragmenty), Psychoterap
Jak bezpiecznie przejść przez ulicę scenariusz, Szkoła-bezpieczeństwo
Samsara dzielona przez zero, Buddyzm, Teksty
HELLA kamery cofania opis PL
Seksowna mamuska czyli jak przejsc przez macierzynstwo na wysokich obcasach sekmam
opis PL VAG COM 2
Zwięzły opis PL programu Microsoft Math
Seksowna mamuska czyli jak przejsc przez macierzynstwo na wysokich obcasach sekmam
słownictwo prawnicze 13 LA DENUNCIA DEI PRIVATI zawiadomienie o popełnieniu przestępstwa przez oso
Przyspieszenie Internetu przez DNS www idg pl
10 rzeczy, które pomogą szybciej i łatwiej przejść przez studia
Błędy VAG opis PL

więcej podobnych podstron