logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak wysłać kod RC5 przez diodę IRED na Atmega8 w BASCOM?

siwekyhy 19 Lut 2007 18:50 4445 16
REKLAMA
  • #1 3591502
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    Witam

    Chciałem zrobić prosty pilot do TV na Atmega 8. Na początku znalazłem gdzieś girdera i sczytałem dwa kody przycisków z pilota 1707028D7 power i 170709867 MUte . Następnie zbudowałem układ wzmacniacza do diody Ired ( kupiłem zwykłą diodę nadawczą ired w bezbarwnej obudowie) z tą różnicą ze zamiast tranzystora BC516 dałem BC327
    Później załadowałem przykładowy program w helpie próbowałem odczytać za pomocą girdera czy coś dioda wysyła ale nic nie odczytało. Jak napisać program żeby wysłał przez diodę dany kod np 1707028D7 ?
    Przeszukałem forum ale zbytnio odpowiedzi nie znalazłem...

    Pozdrawiam

    za odp. z góry dzięki :)
  • REKLAMA
  • #2 3591613
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    proponuję zabrać się za to zadanie ale używając języka asembler albo C - wtedy zrobisz to bez najmniejszego problemu - tu trzeba wykonać procedurki o skrajnie dobranych zależnościach czasowych i dlatego myślę - ale może się mylę , że akurat Bascom nie jest do tego akurat najlepszym narzędziem - z drugiej strony sam jestem ciekaw czy komuś w Bascomie coś takego jak sterowanie innym pilotem niż RC5 w oparciu o własne procedury w Bascomie udalo się zrobić?

    pozdr
  • REKLAMA
  • #3 3591689
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 616
    Proponuje wejść na stronę:
    http://lirc.sourceforge.net/remotes/
    Odszukać danych do pilota i odpowiednio je zinterpretować. Ostatnio robiłem pilota do aparatu Canon'a i ruszył prawie za pierwszym razem.
    Warto też zajrzeć na tę stronę:
    http://winlirc.sourceforge.net/
    Jest tam prosty schemat i program który pokazuje jak dokładnie wygląda przebieg na wyjściu z odbiornika IR.
  • #4 3592762
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    Hm na tej pierwszej stronie nie ma firmy royal :/ ale kody mogę odczytac dzięki girder :) Hm Mirekk36 mógłbyś wrzucić jakiś przykład prosty jak by to w C wyglądało ?
  • #5 3592843
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    sorki siwekyhy ale ja znam tylko asembler i w asemblerze takie rzeczy robię :( jednak chyba znajdzie się tu ktoś kto mógłby pomóc ci w tym jeśli chodzi o C mam nadzieję?.

    Ja mogę ci np podrzucić link do fajnej stronki, gdzie jest w miarę jasno opisane jak do tego się tak w ogóle zabierać - jak zbudować taki układ - i nawet przykład gotowego programu jest - wprawdzie w asemblerze i na uC '51 ale to mniej więcej może da ci jakieś pojęcie o co w tym wszystkim chodzi. A gdy to się już raz załapie i uda się oprogranmować to później dzięki tym linkom, które podał kolega Samuraj - można sobie oprogramować praktycznie każdego pilocika.

    pozdrawiam
  • REKLAMA
  • #6 3596492
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    okej Mirekk36 podaj linka proszę :)
  • #8 3602425
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    Hm Mirekk36 a jak by wysłanie takiego kodu wyglądało w asemblerze ? mogłbyś podać jakiś prosty przykład ?
  • REKLAMA
  • #9 3602534
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    na tamtej stronce masz gotowy cały przykład w asemblerze, fakt dla nieco innej rodziny procków, jednak jak widzisz w asemblerze nie sprowadza się to tak jak w Bascomie do użycia jednego lub kilku poleceń. Tu trzeba wszystko od początku do końca zrobić samemu. Nawet gdybym podał ci cały swój kod wysyłający sygnały IR do moejgo aparatu Olympus to i tak zapewne bez nauczenia się podstaw asemblera nic by ci to nie dało. Mogę opisać ci jak do tego ogólnie podejść w asemblerze.

    1. Za pomocą Timera robisz sobie generator fali nośnej np 36KHz
    2. Przygotowujesz procedurę, która w oparciu o dane do twojego pilota ze stronki www.lirc.org będzie potrafiła wygenerować w odpowiednich odstępach czasowych przebieg protokątny w którym będą nadawane kolejne bity
    3. Aby ta procedura powyżej działała w miarę dokładnie użyj innego Timera aby generować w niej precyzyjne odstępy czasowe pomiędzy zboczami narastającymi i opadającymi tegoz sygnału
    4. Przebiegiem, który generowany jest przez tą procedurę steruj wysyłaniem fali nośnej przez Timer. Czyli np gdy w twoim przebiegu jest akurat stan wysoki to odblokuj Timer generujący nośną a gdy jest niski to zablokuj - dzięki czemu uzyskasz właśnie efekt nadawania IR na częstotliwości 36KHz

    - jeśli twój pilot i urządzenie pracują na nieco wyższej częstotliwości to przygotuj sobie program tak abyś mógł płynnie zmieniać sobie częstotliwość na wyższą i odwrotnie

    - procedura generująca ten przebieg powinna mieć na wejściu jako parametry adres oraz kod rozkazu wysyłanego po naciśnięciu odpowiedniego klawisza pilota. Zwróć uwagę na prawidłowe zakończenie czasu nadawania zgodnie z opisem na ww.lirc.org oraz czy ew nie trzeba wysyłać jeszcze jednej np zanegowanej ramki.

    - poczytaj sobie tak w ogóle o sposobach kodowania sygnału IR w pilotach. Tak generalnie spotykamy się zwykle z 3 typami: kodowanie SHIFT (dla pilotów np RC5-Philips) , kodowanie SPACE (dla pilotów SONY) lub kodowanie typu PULSE (piloty JVC). Jest nawet taka fajna książka którą bym ci polecił ale nie pamiętam teraz tytułu dokładnie, coś: "Mikrokontrolery i przesyłanie sygnałów IR" - gdybyś chciał to na spokojnie mógłbym w domciu poszukać tej książki i podać dokładny tytuł i wydawcę. Tam są dokładnie i fajnie opisane różne standardy kodowania oraz co ważne nawet jakieś przykłady jak to robić jeśli chodzi o programowanie.

    .... a tak? wrzuciłbym tu "parę kilogramów" swojego specyficznego kodu i ciężko byłoby ci to ugryźć tak samo jak ten kod na podanej przeze mnie stronce

    .... tak ogólnie to polecam zabranie się za asambler bo dzięki niemu bliżej poznasz procka a poza tym naprawdę będziesz mógł o wiele więcej czasami zrobić jesli chodzi o takie hmm nietypowe zastosowania, dla których nie ma gotowców w Bascomie

    pozdrawiam
  • #10 3603709
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    kurcze myślałem że to będzie prościejsze :D Co do asemblera (ps jaki najlepszy program do niego ? i jakiś kurs ? ) Hm narazie poznaje bascoma bo jestem początkujący hm a czy w bascomie są możliwe "wstawki z asemblera" ?
  • #11 3604066
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    tak z tego co wiem to na pewno można robić wstawki asemblerowe w Bascomie ale jak? hmm to już ktos inny musiałby pomóc.

    Co do zrobienia tego w asemblerze nie jest to tak naprawdę skomplikowane. Zwykle dla kogoś kto jeszcze nigdy nie zetknął się z tym językiem tylko właśnie np z Bascomem to wygląda przerażająco na pierwszy rzut oka. Ale jak mówię to tylko pozory. Nie jest naprawdę trudno, uwierz mi przynajmniej zacząć uczyć się asemblera a dzięki niemu dokładnego działania procków. Co do kursów to znajdziesz na pewno w necie różne ale niestety czasem szczątkowe informacje, które nie omawiają zagadnienia od początku do końca przez co tym bardziej ten język postrzegany jest jako wielki "JEŻ" do którego nie warto się zbliżać ;) .... tymczasem wystarczy nabyć np książkę wydawnictwa BTC "Mikrokontrolery ATmega w praktyce" , w której po kolei od architektury procesorów AVR, poprzez omówienie bloków funkcjonalnych, omówienie dokładne komend asemblera i co najważniejsze wiele wiele dobrych przykładów takich praktycznych - gdzie masz schematy układów na Atmega i do tego przykłady pisania programu w asemblerze z dobrym omówieniem i komentarzami - to pozwala o wiele przyjaźniej spojrzeć na tego JEŻA, który po bliższym poznaniu zamienia się już w małego "pikusia" i nie jest straszny - a wręcz przyjemny ;) .... co gorsze - uwaga! potrafi on, gdy już człowiek np nauczy się zapalać i gasić w asemblerze np diodę LED - to nawet może wciągnąć bez opamiętania ;) .... tak się stało kiedyś własnie ze mną

    pozdrawiam
  • #12 3604174
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    Hm chyba sobie kupię tą książke :D hm a jak narazie zablokowałem sobie atmege 8 :/ ustawiałe fuse bity w bascomie mialem kwar 4Mhz dałem w fusebit opcję External XTAL i koniec :/ Hm jak za pomocą drugiego atmega8 odblokować pierwszego ?
  • #13 3604764
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    nie musisz stosować wcale drugiego procka - wystarczy zrobić sobie najprostszy generatorek na kilku bramkach TTL, który będzie generował częstotliwoąć nawet rzędu kilkudziesięciu KHz - podłączysz go pod jedno z wejść XTAL tam gdzie się podłącza taki generator i bez problemu programator zobaczy procka ;) wtedy ustawisz prawidłowo fusebity .... ja do twgo celu użyłem hyhyhy akurat generatorka z odstraszacza na komary, którego kiedyś sobie zrobiłem ;) .... częstotliwość była nawet w paśmie słyszalnym i udało się odblokować - od tej pory wiem, że to żaden problem.

    pozdrówka
  • #14 3604817
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    Aha spoko wiem o co chodzi :) ale nie wiem jak dalej z tym kwarcem :/ chciałem do atmegi dać kwarc 4MHz razem z dwoma kondensatorami po 33pf jak mam to zaznaczyć w ponyprogu ? wiem gdzie mam to zaznaczyć ale nie wiem co :D
  • #15 3605164
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    W PonyProgu trzeba ustawić fuse bity dla Ext. Crystal/Resonator Medium Freq. I tak fusebity CKSEL3..0 ustawiamy na 1101 - ale uwaga (zresztą w Pony masz opisane, że 1 to znaczy, że brak ptaszka przy danym fusebicie a 0 to ptaszek. Czyli powinieneś ustawić sobie tak:

    CKSEL3 - bez ptaszka
    CKSEL2 - bez ptaszka
    CKSEL1 - ptaszek
    CKSEL0 - bez ptaszka

    wtedy spokojnie możesz podłączyć rezonator 4MHz i ATmega powinna ładnie śmigać ;)
  • #16 3608844
    siwekyhy
    Poziom 14  
    Posty: 193
    Ocena: 16
    No udało mi sie ustawić procek z kwarcem dzięki :D a co to znaczy

    "$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes. " wie ktoś może ?

    Ps co się stanie jak odłoncze kwarc ? a bedzie on w atmedze ustawiony ?
  • #17 3608951
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Po pierwsze sprawdź czy masz ustawiony swój typ procka w rozwijanym menu a nie korzystasz z Autowykrywania AVR. Jeśli poprawnie zaprogramowałeś procka tak aby korzystał z kwarca a nie oscylatora wewn lub generatora - to gdy odłączysz kwarc - nie zdziw się, że procek będzie głuchy ;) - a jak podłączysz znowu zacznie działać ok

    pozdr

Podsumowanie tematu

✨ Dyskusja dotyczy realizacji prostego pilota IR do telewizora opartego na mikrokontrolerze Atmega8 i diodzie IRED, z wykorzystaniem kodów RC5 odczytanych za pomocą programu Girder. Autor pyta, jak napisać program w BASCOM, który wyśle konkretny kod IR (np. 1707028D7). W odpowiedziach sugerowano, że BASCOM może nie być najlepszym narzędziem do precyzyjnego generowania sygnałów IR ze względu na konieczność dokładnego sterowania czasem, a lepszym wyborem byłby język asembler lub C. Podano linki do stron z danymi pilotów i przykładami (lirc.sourceforge.net, winlirc.sourceforge.net, ustr.net/infrared), gdzie można znaleźć schematy i kody źródłowe, głównie w asemblerze dla innych rodzin mikrokontrolerów. Omówiono ogólną metodę generowania sygnału IR: wykorzystanie timera do generacji fali nośnej (np. 36 kHz) oraz drugiego timera do precyzyjnego odmierzania czasów impulsów protokołu RC5. Poruszono także temat wstawek asemblerowych w BASCOM oraz nauki asemblera jako kluczowego do zrozumienia i realizacji takich projektów. Dodatkowo omówiono problem zablokowanego mikrokontrolera po nieprawidłowym ustawieniu fuse bitów dla kwarcu 4 MHz i sposoby jego odblokowania, m.in. przez podanie zewnętrznego sygnału zegarowego z generatora TTL. Podano szczegóły ustawień fuse bitów w programie PonyProg dla zewnętrznego rezonatora kwarcowego 4 MHz. Wyjaśniono, że odłączenie kwarcu przy ustawionym trybie pracy na zewnętrzny oscylator powoduje brak działania mikrokontrolera.
Wygenerowane przez model językowy.
REKLAMA