zadanie 2


Częstotliwość zegara jest to 5,12 Mhz, połowa okresu przebiegu to 100 ms.
W tym czasie będziemy mieli 5,12*0,1=512000 taktów zegara.
Mamy do dyspozycji szesnastobitowy licznik, więc za mały, żeby doliczyć do 512000.
Ja wybrałem sobie prescaler 64, czyli 512000/64 = 8000.
w *TIMER1_C. Należy wpisać 8000d = 0x1F40, natomiast w *TIMER1_A należy wpisać 1/3 tej
wartości, tj. 2666d = 0xA6A
void timer1_init(void)
{
*TIMER1_PRESCALER = 0x8
*TIMER1_A = 0xA6A
*TIMER1_C = 0x1F40
...
}
licznik=0
void timer1_irq(void)
{
licznik++;
if(licznik==1000) timer_stop() ; \\ każde przerwanie trwa 0,1s, czyli żeby wyłączyć po stu s,
\\ należy wykonać 1000 przerwań
if (licznik%2 != 0)
{
*TIMER1_A = 0x14D4 (2*0xA6A);
*TIMER1_C = 0x1F40;
}
else
{
*TIMER1_A = 0xA6A ;
*TIMER1_C = 0x1F40;
}
}
Przebieg jest symetryczny, więc jeśli jestem w nieparzystym przerwaniu, to zmieniam wyjście po
66 ms, a w parzystym po 33 ms.


Wyszukiwarka

Podobne podstrony:
Analiza Matematyczna 2 Zadania
ZARZĄDZANIE FINANSAMI cwiczenia zadania rozwiazaneE
ZADANIE (11)
zadanie domowe zestaw
Zadania 1
W 4 zadanie wartswa 2013
Sprawdzian 5 kl 2 matematyka zadania
zadania1
Zadania 2015 9
Logika W8 zadania
Logika troch teorii zadania
06 Zadania z rozwiązaniamiidd47
zadania4
zadania 1 5 10

więcej podobnych podstron