[bascom] procedura czestotliwosc(argument)

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
mariusz_edw
Użytkownik
Posty: 307
Rejestracja: 22 lip 2005, 13:02
Lokalizacja: Polanica Zdrój
Kontakt:

[bascom] procedura czestotliwosc(argument)

Post autor: mariusz_edw » 15 wrz 2005, 17:23

Witam.

Potrzebuję procedurkę, która wyśle na głośniczek (podłączony do jakiegoś portu) zadaną częstotliwość. W grę wchodzą oczywiście tony słyszalne dla ucha ludzkiego.

Potrzebuję czegos w rodzaju czestotliwosc(argument), gdzie argument jest zadawaną wartością w [Hz].

Interesuje mnie zarówno bascom 51 jak i AVR.

Z góry dzięki za pomoc!

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 15 wrz 2005, 18:05

Poszukaj w helpie opisu komendy SOUND - powinno "grać" ;]

Awatar użytkownika
mariusz_edw
Użytkownik
Posty: 307
Rejestracja: 22 lip 2005, 13:02
Lokalizacja: Polanica Zdrój
Kontakt:

Post autor: mariusz_edw » 15 wrz 2005, 18:16

Koppel pisze:Poszukaj w helpie opisu komendy SOUND - powinno "grać" ;]
To mi nie pomoże. Jako argument chcę podać potrzebną częstotliwość (liczba), a nie ilość impulsów i czas impulsu...

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 15 wrz 2005, 19:38

mariusz_edw pisze:
Koppel pisze:Poszukaj w helpie opisu komendy SOUND - powinno "grać" ;]
To mi nie pomoże. Jako argument chcę podać potrzebną częstotliwość (liczba), a nie ilość impulsów i czas impulsu...
Jeżeli znasz częstotliwość to nie problem określić ilość impulsów i czas trwania, ale ta funkcja jest mało precyzyjna. Lepiej wykożystać do tego Timera:

Kod: Zaznacz cały

$crystal = 4000000
Pwm1a = 0
Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1
...
Pwm1a = 568
Start Timer1
Waitms 500
Stop Timer1
...
Powyższy przykład da w efekcie sygnał prostokątny o częstotliwości 440Hz (4000000/8/568/2) na nóżce OC1a (trwający 500ms).
Pozdrawiam, Konrad.

Awatar użytkownika
mariusz_edw
Użytkownik
Posty: 307
Rejestracja: 22 lip 2005, 13:02
Lokalizacja: Polanica Zdrój
Kontakt:

Post autor: mariusz_edw » 15 wrz 2005, 19:45

Dziękuję pięknie. To w dużej mierze rozwiązuje mój problem.

ODPOWIEDZ