Skocz do zawartości

[Bascom] timer0 + 36khz = problem


Robomaniak

Pomocna odpowiedź

Witam potrzebuje wygenerować 36khz w atmedze8a na pinach portd.2 i 3 jednak mam mały problem skleciłem taki kod

$regfile "m8def.dat"
$crystal = 8000000
Config Portd.2 = Output
Config Portd.3 = Output

Config Timer0 = Timer , Prescale = 1
On Timer0 Ir
Enable Timer0
Enable Interrupts
Load Timer0 = 111
Do
'program
Loop
End

Ir:
Load Timer0 , 111
Toggle Portd.3
Toggle Portd.2
Return

jednak nie działa tak jak powinien czujnik sfh5110 nie reaguje na diodę która świeci tylko nie wiem z jaką częstotliwością ale na pilota od tv już tak czy możne ktoś mi wytłumaczyć co jest nie tak?

Z góry dziękuję za pomoc.

Link do komentarza
Share on other sites

Robomaniak spróbuj podobnie jak w Timerze1. Może zadziała. U ciebie nie trybi, bo nie ma nawet dyrektyw wprowadzanie timera w tryb CTC. Do tego musisz poustawiać timer i jego częstotliwość. Teraz oglądam TV, więc ci nie pomogę, ale jak do jutra nie znajdziesz rozwiązania to najprawdopodobniej ci coś podeślę 😉 Oczywiście nie gwarantuję 🤣 A wujek milszy na ten temat?

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

Niestety w BASCOMIE nigdy nie pracowałem aczkolwiek może parę wskazówek się przyda.

- Nie widzę gdzie w kodzie deklarujesz tryb pracy timera, polecam również dokładnie przejrzeć dokumentacje timerów

- Może błędnie interpretujesz tryb- np porównanie zachodzi 2x częściej/rzadziej niż myślisz

-sprawdź miernikiem czy chociaż masz sygnał prostokątny- może przez przypadek nie uruchomiłeś timera a świecąca dioda jest wynikiem stałego sygnału

Link do komentarza
Share on other sites

Mamy mały postęp

Znalazłem kod na forbocie który działa na 4Mhz

$regfile = "m8def.dat"
$crystal = 4000000
Config Pind.3 = Output
Config Pind.2 = Output
Config Timer0 = Timer , Prescale = 1
On Timer0 Przerwanie_timer1
Timer0 = 145
Enable Timer0
Enable Interrupts
Do
'program
Loop
Przerwanie_timer1:
 Timer0 = 145
 Toggle Portd.3
 Toggle Portd.2
Return

I on działa 😃

tylko jeśli zmienię taktowanie na 8Mhz i wartość początkową timera na 111 to już nie za bardzo chce liczyłem według wzoru 8000000/(36000*2)=111,11111111111

i wygląda że wszystko jest dobrze a nie jest

o to ten nie działający kod

$regfile = "m8def.dat"
$crystal = 8000000
Config Pind.3 = Output
Config Pind.2 = Output
Config Timer0 = Timer , Prescale = 1
On Timer0 Przerwanie_timer1
Timer0 = 111
Enable Timer0
Enable Interrupts
Do
'program
Loop
Przerwanie_timer1:
 Timer0 = 111
 Toggle Portd.3
 Toggle Portd.2
Return
Link do komentarza
Share on other sites

    $regfile = "m8def.dat"
   $crystal = 8000000
   Config Pind.3 = Output
   Config Pind.2 = Output
   Config Timer0 = Timer , Prescale = 1
   On Timer0 Przerwanie_timer1
   Timer0 = 145   ' przy 111 wygeneruje 27,5 kHz
   ' lub  Load Timer0 , 112
   Enable Timer0
   Enable Interrupts
   Do
    'program
   Loop
   Przerwanie_timer1:
     Timer0 = 145   ' przy 111 wygeneruje 27,5 kHz
     ' lub  Load Timer0 , 112
     Toggle Portd.3
     Toggle Portd.2
   Return

przepraszam, że tak późno ale wujek google podsunął mi tą stronę a widze że jest bez odpowiedzi. Dobrze obliczałeś CTC tylko trzeba było zastosować polecenie Load Timer , value

Link do komentarza
Share on other sites

Na moje oko jeśli przy 4MHz licznik zlicza od 145 do 256 to jest 111 cykli

Na 8MHz procek działa 2x szybciej więc trzeba 222 cykli zatem powinieneś wpisać 256-222 =34.

Wiedząc że Bascom przy przerwaniach wrzuca wszystkie rejestry na stos a potem je ściąga to przy takiej częstotliwości przerwań samo przerwanie zajmie mu 10-20% dostępnego czasu.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.