LogTeam napisał(a):
Wedlug ktoregos z for trzeba ustawic pwm na polowe. Z wynikow widze ze to nadal nie to. Po wielu probach i wgraniu nielicznych programow postanowilem do Was napisac. Wiem jak sterowac pwm'em (do sterowania np.diod,silnikow) jednak widze ze z czujnikiem to inna sprawa
Sorki ale zabierasz się do tego bardzo mocno od ..... tyłu strony .... przyznam że aż ciężko tego słuchać
nie obraź się ...
ale trudno mi tu dyskutować z jakimiś tam zebranymi poradami i wielu innych forów i to jeszcze poradami - jak widać na żywym przykładzie - wprost z kosmosu
--------------------------------
Skoro próbujesz pisać programy w Bascomie a i tak nic - ani w ząb z tego nie rozumiesz - bo tak to tutaj wygląda - to oznacza - że może czas i warto jednak przerzucić się na język C ??? Ale nie mówię tego dlatego że Bascom jest zły ....
tylko dlatego - że tobie jego uproszczenia i tak nie pomagają i tracisz sporo czasu....
Tak się składa, że generowanie nośnej na potrzeby podczerwieni masz przepięknie opisane w książce
http://atnel.pl/mikrokontrolery-avr-jezyk-c.html- masz w niej cały język C od podstaw - i gwarantuję - że przez ten czas zbierania tych informacji z tych forów, czas prób nad własnoręcznym ale jak widać niesprawnym przerabianiem tego kodu - już byś spokojnie zrobił to w C na bazie tej książki....
----------------
Ok - ale niech będzie że to dział BASCOM - więc uwaga - podpowiadam ci coś jak można to także w Bascomie zrobić - zresztą w dowolnym języku.
1. musisz wygenerować sobie częstotliwość za pomocą timera sprzętowego - ale na ZEUSA po co chwytasz za tak drogocenny 16-bitowy Timer1 do tego celu ???? to tak jakbyś chciał komara - łyżką koparki zabić
2. zastanów się najpierw jaka to ma być częstotliwość hmmm - bo to co napisałeś wyżej ma się nijak do rzeczywistości
.... otóż korzystając z trybu CTC np timera2 w procku ATmega8 - musisz tą częstotliwość ustawić na 36kHz x 2 czyli = 72kHz !!! dlaczego ? ano dlatego, że w trakcie trwania tego okresu częstotliwości 72kHz tryb CTC będzie tylko RAZ zmieniał zbocze na przeciwne - więc okres wygenerowanej częstotliwości na pinie OC2 będzie dwa razy dłuższy czyli częstotliwość dwa razy mniejsza a więc upragnione 36 kHz
3. ustaw więc w tymże Bascomie sobie Tryb CTC w Timerze2
4. Ustaw sobie preskaler = 1
5. ale jeśli masz fabryczne ślimacze taktowanie 1MHz i chcesz z tym się męczyć to obliczasz tą częstotliwość tak:
1MHz / 1 / 72 kHz = OCR2 czyli do OCR2 wpisujesz 13.8 ale wiadomo takiej liczby nie możesz wpisać więc dasz 14. A to spowoduje że licząc odwrotnie uzyskasz częstotliwość nośnej:
1MHz / 1 / 14 = 71.428 i to dzielone / 2 = 35.714 kHz czyli masz prawie 36kHz i też będzie ci ta nośna dobrze działać.
Tylko ja bym na twoim miejscu od razu sobie procka przestawił na 8MHz dzięki czemu zobacz teraz obliczenia
8MHz / 1 / 72kHz = 111.1 do OCR2 .... policzmy teraz odwrotnie jaka ci wyjdzie częstotliwość nośnej ?
8MHz / 1 / 111 = 72.072 i to dzielone /2 = 36,036 kHz !!!!!! i co wyszło dokładniej przy taktowaniu 8MHz ???
W Bascomie można rejestry ustawiać praktycznie tak jak w asemblerze - zaglądasz więc pan do noty PDF i sprawdzasz rejestry konfiguracyjne dla Timera2 w ATmega8
w TCCR2 masz ustawić:
WGM21 = 1 żeby był tryb CTC
CS20 = 1 żeby mieć preskaler = 1
COM21 = 1 żeby włączyć generowanie na pinie OC2 (PB3)
bit WGM1 jest w rejestrze TCCR2 na pozycji = 3
bit CS20 jest na pozycji = 0
bit COM21 jest na pozycji = 5
a zatem w Basomie piszesz sobie:
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i już po tym na PB3 masz generowaną ładnie nośną 36kHz