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

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:
Generator

Postautor: slawcio » 28 wrz 2004, o 07:45

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

Arrek
-
-
Posty:117
Rejestracja:18 wrz 2003, o 20:41
Lokalizacja:wawa

Postautor: Arrek » 28 wrz 2004, o 09:36

Chdzilo ci moze o port b3? Bo jesli na b3 to mozna sprzetowo korzystajac z dosc rozbudowanych mozliwosci sprzetowych timera1.

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Postautor: slawcio » 28 wrz 2004, o 10:08

Ale napisz w jaki sposób może być port b.3 nie przeszkadza

Pozdrawiam

Arrek
-
-
Posty:117
Rejestracja:18 wrz 2003, o 20:41
Lokalizacja:wawa

Postautor: Arrek » 28 wrz 2004, o 14:38

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.

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Postautor: slawcio » 28 wrz 2004, o 15:29

Oczywiście chodzi mi o 2313 i bascom AVR.
Ale przydał by się jakiś programik.
Jak ktoś może to prosiłbym o zamieszczenie go.

Pozrawiam

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Postautor: slawcio » 1 paź 2004, o 07:36

$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

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 44 gości