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


AVR205: 8-bit Microcontrollers Nota Applikacyjna
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 zró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
budowanych 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ózniają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.
Strona 1/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
Rysunek 1-1. Licznik częstotliwości z roku 1970.
2 Wymagania aby uruchomić kod
Kod realizowane 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 zró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 zródła zegarowego (kryształ rezonatora i kondensatory), to zaleca się, aby
maksymalna częstotliwość zegara zewnętrznego zródłamierzonego może być mniejsza niż
Timer_Clock_frequency/2,5. W tej nocie aplikacyjnej, częstotliwość oscylatora to 8MHz z
oscylatora 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.
Strona 2/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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ą
przegapić 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, ATtiny2313, ATmega8515/8535,
ATtiny13, ATmega48/88/168, ATmega162,
ATtiny20, ATmega8, ATmega164/324644/1284
ATtiny26, ATmega16, ATmega165/325/3250/64
56450.
ATtiny28, ATmega32,
Rysunek 2-2. Atmel ATtiny13A Wyprowadzenia.
Strona 3/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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 być 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)
Strona 4/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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
Strona 5/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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.
Strona 6/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
Rysunek 4-3. Schemat blokowy
T0 - jest nadrzędne wejście do AVR
4.1.1 Jak uruchomić AVR Studio 4.18 zostało wykorzystane do opracowania tego
projekt korzystając kodu. Pózniejsze wersje mogą lub nie mogą skompilować
zajęty oczekiwania kod poprawnie. WinAVR kompilator C wersję 20100110 był
Atmel również używany.
Pózniejsze 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 zródło sygnału do
wejścia, pin AVR T0
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
Strona 7/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
4.1.2 Jak zbudować Wymagania: znajomość sposobów budowania, kompilowania i
projekt korzystajÄ…c debugowania projektu AVR Studio 4.
procedury zajęty
o Trzy pliki będą potrzebne do budowy tego projektu. W tym
czekać.
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 w pliku freq_meter_demo.c
korzystać z tych
o Funkcja freq_meter init(); inicjuje odpowiednie rejestry
funkcji, używając
AVR
konfiguracji
o Funkcja user_init function(); inicjuje zmienne
zajęty czekać
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_T0 aby umożliwić pomiar
częstotliwości i zacząć od zmiany na pinie T0. Wewnątrz
tej funkcji jest wywołanie (procedury opóznienia)
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 Implementacja, która używa systemu przerwań może używać
Sterowane 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.
Strona 8/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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
odpowiedz 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.
Strona 9/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
4.2.1 Jak uruchomić Atmel AVR Studio 4.18 został wykorzystany do
freq_meter_interrupt opracowania tego kodu. Pózniejsze wersje mogą lub nie
(pomiar częstotliwości mogą skompilować ten kod poprawnie. WinAVR kompilator
demo C wersja 20100110 był również używany.
Pózniejsze 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 zródło sygnału do wejścia
AVR pin T0
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ć Wymagania:
projekt przy użyciu wiedza na temat, jak budować, kompilować i debugować
przerwań 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
Strona 10/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
4.2.3 Jak wywołać i Funkcje są w freq_meter_demo.c
korzystać z tych
o funkcja freq_meter_init function(); inicjuje
funkcji, przy użyciu
odpowiednie rejestry AVR
przerwań
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-T0 wymusza
przerwanie, aby umożliwić pomiar częstotliwości,
pomiar zaczyna sie od zmiany na pinie T0
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
(przepeł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.
Strona 11/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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
Strona 12/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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 dostępne.
Strona 13/14
AVR205: 8-bit Microcontrollers Nota Applikacyjna
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
Strona 14/14


Wyszukiwarka

Podobne podstrony:
Jak przejść przez autostradę Najlepiej zielonym mostem
Ebook Valerio Albisetti Jak przejść przez cierpienie i wyjść z niego zwycięsko
Miernik czestotliwosci 1MHz przez port RS232 opis
HELLA kamery cofania opis PL
Symantec Endpoint Protection 11 0 4014 MR4 MP1 32 bit PL Full OPIS PROGRAMU
CIVILIZATION 5 PL GOTOWY OPIS
Zero napisy PL
PL Instrukcja zmiany oprogramowania odbiorników serii X4 i X7 przez RS 232
Symulator TTL PL opis
opis film pacyfik the pacific 10 lektor pl
INSTALACJA AutoCAD 2010 PL 32 bit
Final Fantasy II opis przejścia
KARTA Przejście światła przez granicę ośrodków
308 opis paneli pl
Opis czytnika Mifare TRD DESK PS2 ver1 0 PL

więcej podobnych podstron