Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[BASCOM][ATTiny2313] [Problem z wygenerowaniem 36kHz]

hubertfab 07 Sie 2009 09:59 2071 4
  • #1 07 Sie 2009 09:59
    hubertfab
    Poziom 21  

    Witam.

    (Buduję czujnik odbiciowy)
    Mam duży problem dotyczący generowania 36kHz i podania tej częstotliwości na diodę IR, aby TSOP1736 odebrał sygnały.
    ATTiny2313 pracuje na kwarcu 4MHz z kondensatorami 27pF.
    Dioda podłączona jest do uC katodą przez rezystor 220(Ohm) i potencjometr 1k(Ohm). Dioda świeci, sprawdzałem to aparatem cyfrowym.

    Napisałem taki soft. Ale nie działa...

    Code:
    $regfile = "attiny2313.dat"
    
    $crystal = 4000000
    Config Portb.3 = Output
    Config Timer0 = Timer , Prescale = 1
    On Timer0 Ir

    Enable Interrupts
    Enable Timer0
    Load Timer0 = 55

    Do
    Loop
    End

    Ir:
    Load Timer0 = 55
    Toggle Portb.3
    Return

    Próbowałem Load Timer0 = 111 Ale też nie ruszyło.

    Odbiornik to Tsop1736 którego 3 pin podłączony jest pod tranzystor PNP który steruje diodą Zieloną Diodą Led która zapalana jest jeśli TSOP na 3 nodze ma stan niski. Odbiornik reaguje na sygnały z Pilota od TV i pilota własnej konstrukcji "LINK"


    Pozdrawiam i z góry dzięki za pomoc. (Kto rozwiąże problem dostanie 100pt.) :idea:

    0 4
  • #2 07 Sie 2009 10:35
    kuuczoo
    Poziom 26  

    Witam
    Niestety z tego co wiem , nawet jeśli podasz na TSOPa stałą częstotliwość 36kHz on nie będzie załączony ciągle. Po odebraniu stałej częstotliwości 36kHz TSOP po jakimś czasie przestaje wysterowywać wyjście(chyba po pół sekundy), więc musisz brać to pod uwagę w programie (załączać diodę IR okresowo na chwilę i wtedy badać stan odbiornika)

    --------------------------

    A tak w ogóle to nie powinieneś ładować 200 ? Tmer liczy do góry więc 255 - 55 = 200 lub coś koło tego

    0
  • #3 07 Sie 2009 12:40
    hubertfab
    Poziom 21  

    Cytat:
    A tak w ogóle to nie powinieneś ładować 200 ? Tmer liczy do góry więc 255 - 55 = 200 lub coś koło tego

    Nie. Load timer0 = np. 50 Każe Timerowi 0 policzyć 50 impulsów i wywołać przerwanie.

    Próbowałem działanie z funkcją RC5Send ale to nie możliwe. Pozatykałem diodę papierkami, a ty i tak TSOP odbiera komendy.


    Może mi ktoś powiedzieć jak wykonać czujnik odbiciowy na odległość około 10,20 cm ?

    0
  • #4 07 Sie 2009 13:01
    mirekk36
    Poziom 42  

    punktów to już i tam mam dużo i nie wiem co znimi zrobić ;) ale....

    moim zdaniem to w kodzie masz babola - ponieważ napisałeś:

    Code:
    Config Portb.3 = Output 


    jeśli chcesz użyć Config i do tego port to trzeba dać

    Code:
    Config Portb = Output 


    a jeśli chcesz ustawić tylko wybrany pin jako wyjście to trza napisać:

    Code:
    Config Pinb.3 = Output 


    zajrzyj do HELP'a - na polecenie Config PORT - tam jest to ładnie wyjaśnione

    poza tym kod jest w porządku - dobrze ładujesz timer wartością 55 - ponieważ następuje podział 4MHz przez 55 dzięki czemu z częstotliwością 72.727kHz zmieniasz stan na przeciwny na pinie sterującym diodę co daje nam ładną nośną 36kHz

    Natomiast to że ci TSOP odbiera jakieś smieci - to już wina głównie jego podłączenia do układu. Pokaż schemat jak to zrobiłeś albo zajrzyj tutaj do tematu poniżej na schemat - jak należy go podłączać aby pozbyć się sprzętowo jak największej ilości śmieci.

    https://www.elektroda.pl/rtvforum/viewtopic.ph...ghlight=&sid=908afcfe50d5df1c4c9c0c85ce20da53

    jak widzisz w prawym dolnym rogu schematu - zasilanie TSOP'a przez rezystor wraz z kondensatorem małym elektrolitem (filtrującym) i rezystor 10k podciągający linię danych do VCC

    0
  • #5 07 Sie 2009 14:54
    zumek
    Poziom 39  

    hubertfab napisał:
    ...Napisałem taki soft. Ale nie działa...

    A dlaczego robisz to programowo(przerwanie) :?:
    Jeśli musisz otrzymać ten przebieg na PINB.3, to wykorzystaj Timer1, a jeśli możesz użyć PINB.2 , to użyj Timer0. Wykorzystaj tryb CTC, to generowanie przebiegu 36kHz, nie zajmie procowi ani jednej instrukcji ;)
    ...
    PS
    Zapomniałeś o "prologu" i "epilogu", które kompilator dopisuje do procedury przerwania.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo