Generator impulsów na bazie mikrokontrolera ATtiny13

Generator impulsów na bazie mikrokontrolera ATtiny13
Autor wielokrotnie potrzebował kilku różnych sygnałów cyfrowych do testowania swoich obwodów, a prosty generator funkcyjny nie zapewniał satysfakcjonującego rozwiązania.

r_211_07_1
Szybko opracował projekt generatora impulsów z trzema wyjściami, jak opisano tutaj, który może generować różne ciągi impulsów z regulowaną częstotliwością.
Sercem obwodu jest mikrokontroler ATtiny13.
Ten kompaktowy mikrokontroler AVR ma pięć zewnętrznych pinów I/O, z których trzy (PB0, PB1 i PB2) są używane, jako wyjścia impulsowe, a dwa (PB3 i PB4) są używane, jako wejścia dla przetwornika A/D.

Przełączniki Select 1 to Select 3, a sieć R/2R (R5, R6, R7, R8, R13 i R14) są używane do ustawienia napięcia na PB4, które wybiera tryb impulsowy (0–7) w oprogramowaniu.
Częstotliwość impulsów jest sterowana przez napięcie na PB3, które można regulować potencjometrem R11 w celu pokrycia zakresu od 290Hz do około 8kHz.

Wykresy czasowe ilustrują sekwencje impulsów generowane w trybach od 0 do 6:
Modes 1 i 2: nienakładające się impulsy z regulowaną częstotliwością (normalna lub odwrócona) Modes 2 i 3: w pełni zachodzące na siebie impulsy z regulowaną częstotliwością (normalna lub odwrócona) Modes 4 i 5: częściowo nakładające się impulsy z regulowaną częstotliwością (normalna lub odwrócona) Mode 6:

trzybitowy licznik binarny z regulowaną częstotliwością Tryb 7 to specjalny tryb, w którym sygnały PWM o częstotliwości 2300Hz są wyprowadzane na piny PB0 i PB1.
PB1 dostarcza sygnał PWM, który okresowo zwiększa się od 0 do 100% (0–255) i ponownie obniża, z częstotliwością powtarzania około 0,5Hz.
Sygnał PWM na PB0 może być sterowany przez wejście ADC3.
Impulsy z Timera0 są wysyłane na PB2.

r_211_07_2

W dalszej części mamy więcej do powiedzenia na temat Timer0.
Oprogramowanie dla generator impulsów zostało napisane w języku asemblera przy użyciu Atmel AVR Studio 4.
Szybkie wykonanie jest tutaj szczególnie ważne, ponieważ impulsy wyjściowe są generowane przez oprogramowanie w procedurze przerwania Timer0.
Sekwencja impulsów jest generowana za pomocą licznika cyklicznego o zakresie od 0 do 7, a wartości trzech sygnałów wyjściowych są przechowywane w tablicy indeksowanej według trybu (od 0 do 7) i stanu cyklu.

Za każdym razem, gdy wystąpi przerwanie, odpowiednie wartości są odczytywane z tablicy PULSE [MODE, CYCLE] i podawane na wyjścia.
Mikrokontroler ATtiny13 jest taktowany przez swój wewnętrzny oscylator RC z częstotliwością 4,8MHz, a bity bezpiecznika muszą być odpowiednio skonfigurowane:
Bezpieczniki: CKSEL = 0,1 → 4,8 MHz
CKDIV8 = 0 → bez dzielenia przez 8
SUT = 1,0 → powolny wzrost mocy
Kod źródłowy oraz plik hex można pobrać tutaj:

kod_generator_ATtiny13
Autor: Wilfried Waetzig (Niemcy)

Komentarze z Facebooka

Komentarze obecnie - OFF.