Skocz do zawartości

AVR-Generator przebiegu prostokątnego.


Kaytec

Pomocna odpowiedź

Witam, krótka piłka z mojej strony: Czy mógłby ktoś przybliżyć jak w Bascom AVR generować przebieg prostokątny o jakiejś częstotliwości? np.500Hz. Jak ustawić zegar, jaką komendę w bascomie użyć. Niestety nie mam oscyloskopu więc muszę zrobić właśnie taki generator.

Pozdrawiam.

Link do komentarza
Share on other sites

Najszybciej chyba poleceniem sound, z tego co się orientuję działa to w miarę dokładnie. W helpie jest wzorek jakie wpisać parametry dla jakiejś częstotliwości. Jeśli potrzebujesz dokładniejszej częstotliwości to już jest zabawa z doborem odpowiedniego rezonatora i dzielnika do niego, potem podział na timerze.

Np.: dajesz rezonator powiedzmy 4MHz, dzielisz go wewnętrznym dzielnikiem przez 8 co da ci 500kHz, potem dajesz timer z podziałem 1024, i na nim będziesz miał 488Hz. Gdybyś miał rezonator 4,096MHz to timer będzie się przepełniał z częstotliwością idealnie 500Hz.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

No właśnie w poradniku do bascoma jest napisane:

Uwaga! Instrukcja SOUND nie jest przeznaczona do generowania przebiegów o określonej częstotliwości. W tym celu najlepiej użyć jednego z sprzetowych liczników
Link do komentarza
Share on other sites

Wszystko zależy od tego jakiej potrzebujesz dokładności, wiem po sobie jak szukałem kwarcu do obsługi serw przez sprzętowy PWM i wcale łatwo nie było, szczególnie, że gdzieś jest schowany podział przez 2, o którym zapomniałem wspomnieć wyżej.

Więc obliczenia z mojego poprzedniego postu są niepoprawne, nie wiem gdzie, ale dochodzi jeszcze gdzieś podział przez 2, dlatego przy użyciu takich dzielników jak wyżej timer przepełniałby się 250 razy na sekundę nie 500.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Zastanawiam się czy nie zrobić "na pałę" czyli użyć polecenia wait ms i dawać na przemian jeden i zero. Co wy na to?. Bardziej niż dokładność zależy mi na powtarzalności, ale to jedno z drugim się wiąże... częstotliwości jakie muszę generować to 400Hz do 2400hz.

I okazuje się że mikro kontroler nagle nie może zrobić tak prostej rzeczy... 🙂

Link do komentarza
Share on other sites

Znaleziony w sieci przykład do generowania 36kHz.

$regfile = "attiny2313.dat"
$crystal = 4000000
Config Portd.5 = Output 'musi być ustawiony jako wyjście , by można go podłączyć do przerzutnika OC0B

Ocr0b = &H37 'wartość obliczyć tak:$crystal/(36000*2)
'Powyższa wartość nie musi być taka jak wychodzi z wyliczenia , ale nie może być większa.
Ocr0a = &H37 'tyle taktów zegara potrzeba , by timer0 "obracał się" 72000 razy na sekundę.
Tccr0a = &B00010010 'Włącz tryb CTC dla timer0 i podłącz Pinb.5 do przerzutnika OCR0B w trybie TOGGLE(zmień stan na przeciwny do bieżącego).
Tccr0b = 1 'preskaler=1i start zliczania timer0

Chyba będzie pomocne 😉

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Chyba w takim razie użyje mimo wszystko polecenia sound, polecanego przez Sabre, zwłaszcza że ma być to do urządzenia audio.

jeszcze link z przykładem sound, tabelką częstotliwości i schematem.

http://www.mcselec.com/index.php?option=com_content&task=view&id=221&Itemid=57

Pozdrawiam, dziękuje za odpowiedzi. Temat do zamknięcia.

Link do komentarza
Share on other sites

Anonim
Ten temat został zamknięty.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.