Skocz do zawartości

Generowanie przebiegu prostokątnego 36khz


Treker

Pomocna odpowiedź

Jest wiele schematów w internecie jak wygenerować ten przebieg za pomocą ne555 ja mam sprawdzony więc go tu umieszczam. Rezytor który nie ma oznaczenie powinien mieć około 4,108k więc najlepiej dać tam rezystor 3,3k i potencjometr 1k a kondensator ceramiczny nie oznakowany powinien mieć 47pF.

Można też wydobyć przebieg prostokatny 36khz z procka za pomocą tego kodu

$crystal = 4000000 
Config Pind.5 = Output  'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a 
Config Timer0 = Timer , Prescale = 1  'ustawienie timer1 dzielnik 1 
On Timer0 Przerwanie_timer1  'wywołanie przerwania po przepełnieniu timera 
Timer0 = 145  'wartość początkowa od której timer bedzie zliczł impulsy timera 
Enable Timer0 
Enable Interrupts 
Do 
' główna petla programu, tu dasz to co program powinien robić 
Loop 
Przerwanie_timer1: 
 Timer0 = 145   ' ustawienie wartości początkowej 
Return 

Niestety program nie sprawdzany. Nie jest mojego autorstwa

Pozdrawiam Treker

dddd.PNG

Link do komentarza
Share on other sites

musisz jeszcze podac ilo bitowy ma byc timer (chyba ,ze timer0 zawsze jest 8 bitowy), bo inaczej zaczna sie problemy i powinienes wstawic komentarz gdzie dodac "toggle pinx.0" lepiej zrobic

 load timerX, 111

w miejsce x wstawic cyfre timera ktorego bedziemy uzywac. Przepelnienie bedzie automatycznie przy 111 nie bedzie trzeba nic dodawac odejmowac i sprawdzac ilo bitowego timera uzywamy, bascom zrobi to za nas.

Mozna to samo zrobic za pomoca 10 Mhz. Gdzies na elektrodzie jest kod.

Jak komus sie uda to zrobic za pomoca 8Mhz moze dac znac.

Teraz tulamacze jak to wszystko dziala 4mHz to 4000000 Hz. Prescaler jest ustawiony na 1 wiec 4000000/1= nadal 4000000 Hz. Pozniej, timer jest 8 bitowy czyli decymarnie 256 ( liczac razem z 0 ) czyli przepelnienia timera zarazem przerwanie nastapi jak timer policzy do 256 , jednak przez to ze ladujemy na poczatku liczbe 145 do timera przepelnienie nastpi po 111 a 4000000/111=36036.03604

a to wynoski ok 36khz, wiec wszystko sie zgadza

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

255, a nie 256. 0xFF=255.

Znacznie lepszym rozwiązaniem jest ustawienie trybu CTC (Clear timer on compare match). Wtedy nie ma konieczności przeładowywania timera ręcznie (nie wiem jak to wygląda w bascomie).

Przy preskalerze = 1 ten czas jest nieco zafałszowany - nie uwzględniacie czasu obsługi skoku do przerwania. Zanim więc załaduje się wartość to timer już sobie cośtam naliczy. Dlatego lepiej używać większego preskalera (jeśli to możliwe), jeśli kod przerwania jest optymalny, można "zdążyć trafić" z załadowaniem wartości nim timer sobie coś naliczy i dokładność jest większa.

Są do tego gotowe kalkulatory, polecam:

http://clsql.med-info.com/

Link do komentarza
Share on other sites

255, a nie 256. 0xFF=255.

w nawiasnie napisalem 256 liczac razem z 0 😃

a co do dalszych uwag to chyba bedze kiepsko w bascomie chyba, ze sie uzyje wstawek asm.

Napisalem, ze widzialem podobne rozwiazanie z zegarkiem 10mHz wiec wtedy preskaler bedzie wiekszy. Wedlug twoich uwag bedzie to lepsze rozwiazanie

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.