Witam
Jak można zrobić precyzyjny generator korzystając z timera który by generował np. na porcie d.3 częstotliwość kwarcu podzieloną np. 1024.
A następnie dodać program który by tą częstotliwość odczytywał i wyświetlał na LCD.
pozdrawiam
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ęGenerator
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Domyslam sie ze chodzi o '2313. Trzeba po prostu wlaczyc Timer1 i do rejestru OCCR1A wpiasc 16-bitowa wartosc, ktora okresli okres pracy generatora. Trzeba tez ustawic Timer jako polaczony z pinem OC1 - toggle (bity COM1A0 i COM1A1 rejestru TCCR1A). Wtedy za kazdym razem gdy timer bedzie mial taka sama wartosc jak rejestr 16-bitowy OCCR1A nastapi przelaczenie w stan przeciwny koncowki OC1 (PB3).
Trudno wyjasnic ot tak wszystko. Wszystkie informacje znajdziesz w nocie katalogowej AT90S2313 na str. 30...36. W bascomie chyba jest to jakos ulatwione, poszukaj w helpie. Nie wiem tego bo pisze w C.
Trudno wyjasnic ot tak wszystko. Wszystkie informacje znajdziesz w nocie katalogowej AT90S2313 na str. 30...36. W bascomie chyba jest to jakos ulatwione, poszukaj w helpie. Nie wiem tego bo pisze w C.
$regfile = "2313def.dat"
$crystal = 4000000
Config Portd = &B11111111
Portd = &B11111111
Config Timer0 = Timer , Prescale = 1024 'inicjalizacja
' timera0 jako generatora
On timer0 generator 'włącza timer0 i skacze to etykiety generator
Config Timer1 = Counter , Edge = Rising , Noice Cancel = 1
Dim Czestotliwosc As Word
Dim C As Long
Dim B As Byte
Dim G As Single
Dim Maks As Word
Enable Timer0
Enable Interrupts
Do
Cls
Lcd "FRQ=" ; Czestotliwosc ; "Hz" ; "max=" ; Maks ' " S:" ; G
Czestotliwosc = 0
Counter1 = 0
Start Counter1
Wait 1
Stop Counter1
Czestotliwosc = Counter1
G = 2.112 * Czestotliwosc
If Czestotliwosc > Maks Then
Maks = Czestotliwosc
End If
Loop
Generator:
Load Timer0 , 25 'tu jest załadowana
'wartość 25 do której ma zliczac timer0 a w wyniku przepełnienia
'inkrementuje zmienna C
Toggle Portd.3 'oznacza to że 4000000/'
'(1024*25)= 156,25Hz taka jest generowana częstotliwość
' tak mi się zdaje
Return
Tu przedstawiłem program który generuje na porcie portd.3 czestotliwość 156,25Hz która jest brana z podziału czestotliwości przez preskaler i timer0.
Dodatkowo program ten czyta na porcie portd.5 jaka jest czestotliwosc podana na ten port (pomiar nie jest zbytnio za dokładny ponieważ do odmierzania czasu użyłem funkcji wait 1.
Dodatkowo przedstawilem jak mozna wykonywac operacje na liczbach zmienno przecinkowych.
U mnie to dziala jak by cos było nie tak to prosze dac znac.
Pozdrawiam wszystkich
$crystal = 4000000
Config Portd = &B11111111
Portd = &B11111111
Config Timer0 = Timer , Prescale = 1024 'inicjalizacja
' timera0 jako generatora
On timer0 generator 'włącza timer0 i skacze to etykiety generator
Config Timer1 = Counter , Edge = Rising , Noice Cancel = 1
Dim Czestotliwosc As Word
Dim C As Long
Dim B As Byte
Dim G As Single
Dim Maks As Word
Enable Timer0
Enable Interrupts
Do
Cls
Lcd "FRQ=" ; Czestotliwosc ; "Hz" ; "max=" ; Maks ' " S:" ; G
Czestotliwosc = 0
Counter1 = 0
Start Counter1
Wait 1
Stop Counter1
Czestotliwosc = Counter1
G = 2.112 * Czestotliwosc
If Czestotliwosc > Maks Then
Maks = Czestotliwosc
End If
Loop
Generator:
Load Timer0 , 25 'tu jest załadowana
'wartość 25 do której ma zliczac timer0 a w wyniku przepełnienia
'inkrementuje zmienna C
Toggle Portd.3 'oznacza to że 4000000/'
'(1024*25)= 156,25Hz taka jest generowana częstotliwość
' tak mi się zdaje
Return
Tu przedstawiłem program który generuje na porcie portd.3 czestotliwość 156,25Hz która jest brana z podziału czestotliwości przez preskaler i timer0.
Dodatkowo program ten czyta na porcie portd.5 jaka jest czestotliwosc podana na ten port (pomiar nie jest zbytnio za dokładny ponieważ do odmierzania czasu użyłem funkcji wait 1.
Dodatkowo przedstawilem jak mozna wykonywac operacje na liczbach zmienno przecinkowych.
U mnie to dziala jak by cos było nie tak to prosze dac znac.
Pozdrawiam wszystkich
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 40 gości