Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 22 maja 2025, o 11:07


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 2 lis 2011, o 16:29 
    Offline
    Nowy

    Dołączył(a): 06 paź 2011
    Posty: 17
    Pomógł: 0

    Witam,
    walcze i już nie mam pojęcia co jest nie tak , próbowałem debugować w każdy mozliwy sposób ale ale zawsze wychodzi za krótki PulseWidth i program nie chce dalej analizować sygnału...


    [edit] i jeszcze dodatkowe info które moze pomoc
    PulseWidth zmienia się w okolicach 1960 gdy wciskam niektóre klawisze na pilocie i 2500 lub 3300 przy reszcie klawiszy.


    Proszę o pomoc
    Kod:


    #define LED_PIN (1<<PA0)
    #define LED_TOG PORTA ^= LED_PIN

    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    #include "ir.h"
    #include "lcd.h"

     volatile uint8_t toggle_bit;
     volatile uint8_t address;
     volatile uint8_t command;
     volatile uint8_t Ir_key_press_flag;
     volatile uint8_t rc5cnt;

     void ir_init() {
        DDR(IR_PORT) &=~ IR_IN;
        PORT(IR_PORT) |= IR_IN;




    #if TIMER1_PRESCALER==1
        TCCR1B |= (1<<CS10);
    #endif

    #if TIMER1_PRESCALER==8
        TCCR1B |= (1<<CS11);
    #endif

    #if TIMER1_PRESCALER==64
        TCCR1B |= (1<<CS11) | (1<<CS10);
    #endif

    #if TIMER1_PRESCALER==256
        TCCR1B |= (1<<CS12);
    #endif

        TCCR1B &=~ (1<<ICES1);
       rc5cnt=0;
       TIMSK1 |= (1<<ICIE1);
       Ir_key_press_flag=0;

     }

    ISR(TIMER1_CAPT_vect)
    {
       #define FRAME_RESTART 0
       #define FRAME_OK 1
       #define FRAME_END 2
       #define FRAME_ERROR 3


       static uint16_t LastCapture;
       uint16_t PulseWidth;
       static uint8_t IrPulseCount;
       static uint16_t IrData;
       static uint8_t frame_status;


       PulseWidth= (ICR1 - LastCapture);
       LastCapture = ICR1;
       TCCR1B ^= (1<<ICES1);

       
     if (PulseWidth >MAX_BIT)
        {
        rc5cnt=0;

        }
     if (rc5cnt>0)
        {


        frame_status=FRAME_OK;

        }
     if (rc5cnt ==0)
     {
        IrData=0;
        IrPulseCount=0;
        TCCR1B |= (1<<ICES1);
        rc5cnt++;
        frame_status=FRAME_END;


     }



     if (frame_status==FRAME_OK)
     {


        if(PulseWidth<MIN_HALF_BIT)
        {
           frame_status=FRAME_RESTART;

        }
        if(PulseWidth>MAX_BIT)
        {
           frame_status=FRAME_RESTART;

        }
        if(frame_status==FRAME_OK)
        {
                   lcd_cls();
          lcd_locate(0,0);
           lcd_int(PulseWidth);
     // ----------------------------  DO TEGO MOMENTU NIE DOCHODZI PROGRAM ....
           if(PulseWidth>MAX_HALF_BIT) rc5cnt++;
           if(rc5cnt>1)

              if((rc5cnt%2)==0)
              {
                 //------------------------------------


                   //------------------------------------
                 IrData=IrData<<1;
                 if((TCCR1B&(1<<ICES1))) IrData|=0x0001;
                 IrPulseCount++;
                 if(IrPulseCount>12)
                 {
                   if(Ir_key_press_flag==0)
                   {
                      command=IrData&0b0000000000111111;
                      address=(IrData&0b0000011111000000)>>6;
                      toggle_bit=(IrData&0b0000100000000000)>>11;

                   }
                frame_status=FRAME_RESTART;
                Ir_key_press_flag=1;
                 }

              }
           rc5cnt++;

        }
     }
    if (frame_status==FRAME_RESTART)
    {


       rc5cnt=0;
        TCCR1B &=~ (1<<ICES1);
    }



    }







    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lis 2011, o 17:07 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    Tak na gorąco zapytam, jeszcze bez jakiejś większej analizy bo jestem w pracy.

    1. Czy Fusebity dobrze ustawione?
    2. Czy dobrze sutawiona prędkość F_CPU? i gdzie?
    3. Czy to środowisko Eclipse ?
    4. Czy poprawnie podmienione wszystkie nazwy rejestrów (ale UWAGA! także bitów) w porównaniu do ATmega32?

    Bo ta funkcja z książki MUSI działać ;) po prostu MUSI.... i spokojnie - jeśli nie działa to zmusimy ją razem ;)

    dlatego jeszcze jedno pytanie?

    5. jaki pilot ?
    6. jakie połączenia sprzętowe czyli hardware ? własny czy jakiś zestaw uruchomieniowy?

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lis 2011, o 18:13 
    Offline
    Nowy

    Dołączył(a): 06 paź 2011
    Posty: 17
    Pomógł: 0

    Ad 1 :
    fuse jak w załączniku , jak w książce
    Ad 2 :
    F _CPU - Eclipse->Projekt->Properties->AVR->Target Hardware -> MCU clock f -> 8 000 000
    Ad 3
    Eclipse
    Ad 4
    Podmieniłem
    TIMSK->TIMSK1;
    TICIE1->ICIE1

    Ad 5
    Pilot RC 5 z zestawu TAURUS

    Ad 6
    płytka 1.02

    Generalnie tak :
    mam wrażenie że nie za bardzo rozumiem działanie rejestru ICR1 , gdy wyrzucam jego wartość to wyświetlacza to pojawiają się liczby ujemne...
    używam standardowego przekształcenia:
    Kod:
    void lcd_int(int val)
    {
       char bufor[17];
       lcd_str( itoa(val, bufor, 10) );
    }


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lis 2011, o 20:49 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    Ponieważ czytając tu kody i nie mając widoku na całość - proponuję podesłać mi na maila cały ten projekt, który kolega przerobił sobie na ATmega644P na maila: biuro@atnel.pl

    spakować go do ZIP'a czy RAR'a i podesłać w całości - wtedy łatwiej i szybciej będzie mi pomóc, bo mając pilot z zestawu i zestaw ATB to MUSI działać - no tylko może gdzieś się ręka omsknęła przy przeróbce nazw rejestrów i bitów - dojdziemy do tego - ok?

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lis 2011, o 21:38 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    cóż mi pozostaje powiedzieć ....

    Obrazek

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2011, o 22:29 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    Witam,

    dzisiaj nie zdążyłem w firmie sprawdzić nadesłanego kodu - ale jutro postaram się i dam znać tutaj.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2011, o 18:43 
    Offline
    Nowy

    Dołączył(a): 06 paź 2011
    Posty: 17
    Pomógł: 0

    PulseWidth zmienia się od 800 do 5000 .... nie kumam , tak jakby w zależności od wciśnietego klawisza była różna długość impulsu ... ale zgodnie z teorią powinno się zmieniać co 889 us - 1700 us . Pilot może być skopany ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2011, o 19:19 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    z tego co zaobserwowałem to w wielu przypadkach jest tak ze faktycznie w zaleznosci od klawisza zmienia się długość impulsu. I dotyczy to
    głównie marnej jakości chinskich wytworów pseudouniversalnych , które jakimś cudem trafiaja w ramke :)

    Tak więc zarówno moze byc skopany pilot , jak i taka może być jego uroda.

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2011, o 19:31 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    Ja bardzo przepraszam, że jeszcze nie sprawdziłem nadesłanego do mnie na maila kodu, ale od kilku dni musiałem poleżeć w domciu z powodu przeziębienia. Jak tylko wrócę do firmy to sprawdzę dokładnie w czym rzecz i dam znać.

    Natomiast jeśli pilot jest z zestawu Taurus - to ręczę za niego swoją głową ;) .... mam nadzieję, że wkrótce wszystko się wyjaśni.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lis 2011, o 23:27 
    Offline
    Nowy

    Dołączył(a): 06 paź 2011
    Posty: 17
    Pomógł: 0

    Znalazłem !!

    błąd jest w tej linijce:

    Kod:
    #define ir_micro_s(num) ((num)*F_CPU/1000000/TIMER1_PRESCALER)


    po moim uproszczeniu :
    Kod:
    #define ir_micro_s(num) ((num))


    kiedyś miałem podobny problem w matlabie:
    kompilator przygotowuje najpierw liczbę 889 * 8 000 000 do podzielnia co przekracza prawdopodobnie inta który powinien pomieścić wartość tej liczby ,nie sygnalizuje błędu i później jakąś inną liczbę dzieli przez 1000 000 a później 8.

    ha :)
    jestem z siebie dumny :D :D :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lis 2011, o 23:58 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    No i znowu nie miałem okazji sprawdzić - ale od razu powiem, że to nie jest powodem - bo oznaczałoby, że nie powinno to działać także u mnie oraz u wszystkich, którzy ten kod już setki jak nie tysiące razy testowali. Ale pewnie coś w tym jest....

    dlatego tym bardziej postaram się to sprawdzić i wyjaśnić do końca - bo to co kolega teraz zrobił - to hmmm pewnie, że uproszczenie ale jednocześnie przywiązanie się do jednej częstotliwości taktowania. Natomiast to całe makro uniezależniało wszystko od taktowania (no może jeszcze poza ręcznym ustawieniem preskalera)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lis 2011, o 00:12 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    No to już mam byka za rogi ;) niech się kolega przyjrzy swojej linijce kodu (ponieważ kolega przerabiał tą bibliotekę po swojemu - nie da się ukryć)

    Kod:
    #define ir_micro_s(num) ((num)*F_CPU/1000000/TIMER1_PRESCALER)


    a tu poniżej linijka kodu z oryginalnej biblioteki z płyty DVD dołączonej do książki

    Kod:
    #define ir_micro_s(num) ((num)*(F_CPU/1000000)/TIMER1_PRESCALER)


    Mam nadzieję, że kolega dostrzega tę subtelną ale jakże ważną RÓŻNICĘ ??????

    A co pisałem w książce w rozdziale o makrodefinicjach i nawiasach ??? Oj , oj - pogrożę palcem ;)

    Kolega nie doczytał - a pisałem wyraźnie o nawiasach i jakie może przynieść zgubne skutki ich złe używanie albo powiem wprost "OSZCZĘDZANIE NA NAWIASACH" bo tego kolega jak widać dokonał. No i przyczyna błędu znaleziona - tylko, że niestety wnioski bardzo, hmmm bardzo złe - bo znowu zrzucenie winy albo na kompilator albo na błędny kod w książce. Nie piszę tego broń boże z żadnym przekąsem - ale z drugiej strony ten przykład nawet mógłby być w książce jako dodatkowy do tego, który ja podałem ;)

    dlatego pozwolę sobie zacytować tu obszerny fragment z książki ze strony 135:

    Cytuj:
    Wyobraź sobie taką makrodefinicję bez nawiasów:

    #define LICZ(a,b) a+b

    Jeśli w kodzie programu wywołamy ją np. tak:

    a = 2 * LICZ(0+5, 2);

    to preprocesor rozwinie nam to do takiej postaci:

    a = 2 * 0 + 5 + 2;

    W związku z tym zamiast obliczyć to tak:

    a = 2 * ( (0 + 5) + 2 ); // wynik = 14

    to obliczone zostanie niestety tak:

    a = (2 * 0) + 5 + 2; // wynik = 7

    Widzisz więc jak na dłoni, że każdy parametr w takiej makrodefinicji powinien znaleźć się w nawiasach. Znając jednak od podstaw sposób „myślenia” preprocesora, wiemy jak należy z nim „rozmawiać, aby dobrze dla nas „pracował”. Pisałem, że warto jest rozważyć napisanie funkcji typu inline zamiast makra. Ja widać wyżej, w takiej makrodefinicji nie ma żadnej kontroli, jaką zapewnia kompilator. Jednak czasami zyskujemy ogromną przewagę nad funkcjami inline........


    Zatem żeby nie być gołosłownym proponuję koledze jednak poprawić tę linijkę żeby była tak jak w oryginale biblioteki i wszystko ruszy - a wtedy jeszcze raz to przeanalizować - bo rzeczywiście początkowy kierunek myślenia był dobry - i biorąc to pod uwagę oraz powyższe wyjaśnienie - zapewne zdobędzie kolega na takim niby prostym przykładzie spore doświadczenie na przyszłość ;) .... prawda ?

    gdyby jednak jeszcze coś nie było jasne to proszę śmiało pytać - pomożemy.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lis 2011, o 21:34 
    Offline
    Nowy

    Dołączył(a): 06 paź 2011
    Posty: 17
    Pomógł: 0

    Wszystko jasne, dziękuję :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2016, o 13:43 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    Witam mam małe pytanie do tej linijki
    <#define ir_micro_s(num) ((num)*(F_CPU/1000000)/TIMER1_PRESCALER)>
    co to jest to "(num)" i jak mam sobie obliczyć ilość tyknięć skoro nieznam tej wartości?
    Dodam zę książka jest super
    pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2016, o 13:55 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    qbaand napisał(a):
    co to jest to "(num)"

    No nie żartuj i nie mówi mi, że nie ma tego opisanego w książce i to DOKŁADNIE ;) toż to jeden z gwoździ programu w tym rozdziale ;) Makro to automatycznego dopasowywania wartości do us niezależnie od wartości F_CPU

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2016, o 14:08 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    Panie mirku przeczytałem w książce jeszcze raz rozdział o ir-ce i nadal nie kumam tego zapisu po moich wyliczeniach wychodzi mi
    <#define ir_micro_s(num) ((num)*1)>
    dodam ze chciałbym to zrozumieć poniewaz chciał bym przerobić ten kod tak aby pracował z częstotliwością 2KHz a nie 36KHz . Dzięki za odp pozdrawiam
    Proszę wybaczyć za tak banalne pytania ale dopiero zaczynam z językiem c przedtem był bascom



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2016, o 16:03 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    Wiesz czym innym jest napisać że czegoś nie ma w książce a czym innym, że nie do końca np udało się jeszcze zrozumieć - bo wtedy to można coś doprecyzować, wyjaśnić itp

    A więc przede wszystkim zrozum jaka IDEA przyświeca żeby było to makro - bo ono nie stanowi kodu programu. Tylko preprocesor dostaje pokarmi i zamienia go na jakąś stałą konkretnę liczbę

    pomyśl sobie - gdy masz procka taktowanego 8 MHz i włączysz podział preskalerem przez 8 to ? ... to wychodzi ci , że jedno tyknięcie timera zajmuje ? ... no właśnie 1 us dokładniuśko i w takim przypadku możesz w ogóle odpuścić sobie to makro bo wszędzie w kodzie wygodnie podajesz liczby w mikrosekundach wprost. Zgadza się ?

    No a teraz sobie wyobraź, że zmieniasz taktowanie procka na inną częstotliwość - weźmy np na 16 MHz to co ? to musiałbyś w całym kodzie chodzić i ręcznie przemnażać te liczby x2 .... czyli jak gdzieś dałeś czas w mikrosekundach np 200 to teraz musiałbyś zamienić na 400 .... zgadza się ? Bez sensu robota - bo co jeśli za jakiś czas zechcesz zmienić taktowanie bo masz np kwarca 11,0592 MHz to co ? O ile zmniejszyć czy zwiększyć tę liczbę 200 ???

    No i po to zbudowałem na szybko takie makro - że nie ważne jaką mam częstotliwość taktowania czy 8MHz czy 16MHz czy 11,059MHz czy 18,432MHz to zawsze podaję czas w ten sposób:

    ir_micro( 200 )

    zamiast

    200

    rozumiesz ? .... I to makro samo mi obliczy jaka ma być wartość dla różnego F_CPU, toż jak sobie podstawisz liczby do tego wzoru jaki jest w tym makrze to masz np

    dla 11,0592 MHz - it_num( 200 ) = 276

    dla 16 MHz - it_num( 200 ) = 400

    a dla 8 MHz ;) - it_num( 200 ) = 200

    czyli nie musisz ręcznie na kalkulatorze wyliczać zawsze każdej wartości dla innego F_CPU i w całym kodzie zmieniać wielu wprowadzonych wcześniej wartości, teraz dzięki temu że jest makro - biblioteka sama się dopasowuje do F_CPU - i to jest jedna z bardzo wielu zalet programowania w C

    ------------------------ [ Dodano po: 4 minutach ]

    qbaand napisał(a):
    dodam ze chciałbym to zrozumieć poniewaz chciał bym przerobić ten kod tak aby pracował z częstotliwością 2KHz a nie 36KHz


    To makro nie ma NIC A NIC wspólnego z nośną - to raczej pokazuje, że ty do końca nie wiesz jak działają scalone odbiorniki podczerwieni i od razu ci podpowiem, że z częstotliwością 2 kHz nie będą praktycznie w ogóle działać chyba że masz na myśli CAŁKIEM co innego - czyli mieszasz kompletnie tematy .... Zamiast najpierw zrobić to ćwiczenie tak jak jest i zrozumieć jak to działa na przykładzie RC5.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2016, o 16:18 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    Dzięki za odpowiedz teraz myślę ze zrozumiałem :) i rozumiem jak działa ir chcę wykorzystać podobne kodowanie do transmisji radiowej , ale nadajnik przenosi tylko częstotliwość do 8Khz więc te czasy są za krótkie i odbiornik nic nie odbiera
    Jeszcze raz dzięki



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 cze 2016, o 16:29 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    qbaand napisał(a):
    chcę wykorzystać podobne kodowanie do transmisji radiowej

    A no to rozumiem - po podczerwieni zwykle czas na tory radiowe ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lip 2016, o 12:13 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    panie Mirku co do irdy to wydaje mi się ze w książce czasy połówek 889+889 to powinny być chyba ns a nie us mogę się mylić ale tak z wylczeń mi wychodzi a jeden takt to tez 1ns



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lip 2016, o 12:22 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    qbaand napisał(a):
    mogę się mylić

    Pewnie, że możesz się mylić, każdy z nas się myli .... Więc nic się nie stało - że właśnie się mylisz ...

    qbaand napisał(a):
    ale tak z wylczeń mi wychodzi

    Nie wiem za bardzo o jakich obliczeniach mówisz - ale akurat czasy półbitów w RC5 nie wynikają z jakichś tajemniczych obliczeń to po prostu standard który mówi o tym o czym piszę w swojej książce ;)

    qbaand napisał(a):
    a jeden takt to tez 1ns

    O Panie;) zastanów się czy takie czasy obsłużyłbyś w ogóle programowo

    a na koniec zajrzyj np tutaj:
    http://www.sbprojects.com/knowledge/ir/rc5.php

    i zrozum, że mowa o mikrosekundach a nie w żadnym wypadku o nanosekundach ;) ok?

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lip 2016, o 12:38 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    ok mój bład



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lip 2016, o 13:37 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    Żaden problem , ileż to razy ja się pomylę ? ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lip 2016, o 17:15 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    Witam panie Mirku poniewaz z moją radiówką mi nic nie wychodzi przepisałem sobie programik z książki odbiornik podczerwieni i przerobiłem go sobie pod atmege8 z kwarcem 8mhz i niestety przy moim szczęściu nie działa dodam ze odbiornik podczerwieni odbiera piloty sprawdzone oscyloskopem a program nie pokazuje mi kodów .. Napisałem na innej atmedze pilocika rc5 aby mieć pewność ze to 36khz i niestety. czy mozna jakoś zmodyfikować program aby pokazał mi na wyświetlaczu ze coś odbiera i działa program?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lip 2016, o 20:50 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    qbaand napisał(a):
    czy mozna jakoś zmodyfikować program aby pokazał mi na wyświetlaczu ze coś odbiera i działa program?

    Sorry ale kompletnie nie rozumiem pytania ...

    a co masz w Bluebooku? program który wg ciebie nie działa ? którego trzeba modyfikować żeby działał z pilotem RC5 ? ... no chyba kolega raczy sobie rubasznie żartować ;) Ten przykładowy kod z DVD albo z Pendrive z książki to jak 100% towy tester pilotów RC5

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lip 2016, o 23:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 sty 2013
    Posty: 1760
    Pomógł: 196

    Witam
    qbaand napisał(a):
    przepisałem sobie programik z książki odbiornik podczerwieni i przerobiłem go sobie pod atmege8 z kwarcem 8mhz

    Jeśli przepisałeś to mogłeś się machnąć. Mam na sumieniu wyłączanie lampki nocnej i wzmacniacza kina domowego pilotem TV którego "nauczyłem widzieć a potem wysyłać klawisze 1 i 2 z RC5" i wierz mi że na ATm8 - wew.8MHz odbiera bez żadnych przeróbek. Kod importowany z płyty a nie przepisywany.

    Pozdr.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lip 2016, o 12:05 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    dokładnie tak zrobiłem kopiuj wklej(przerobiłem)- program faktycznie działa, bo wielu bojach doszłem do tego aby program działał to musze nóżkę reset procesora zewrzeć do masy czyli reset procka robię mechanicznie. nie wiem dlaczego mam 3 atmegi 8 i wszystkie robią mi tak samo dodam ze mam rezystor 10k i z nim tak samo robi . fuse bity ustawione mkavrcalc. jakieś pomysły ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lip 2016, o 12:20 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27402
    Lokalizacja: Szczecin
    Pomógł: 1043

    Może i jakieś pomysły by były ale ja kompletnie z tego opisu nie rozumiem co ty robisz ? Zwierasz reset do GND i czyli procek jest w stanie RESETU i ci program działa ? ;) sorki ale sam wierzysz w to co mówisz ?

    Co to zdanie w ogóle może oznaczać?
    qbaand napisał(a):
    doszłem do tego aby program działał to musze nóżkę reset procesora zewrzeć do masy czyli reset procka robię mechanicznie. nie wiem dlaczego mam 3 atmegi 8 i wszystkie robią mi tak samo dodam ze mam rezystor 10k i z nim tak samo robi

    Przeczytaj to sam jeszcze raz i spróbuj się postawić w roli czytającego, który nie widzi twojego schematu .... a coś musiałeś nieźle pokręcić

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lip 2016, o 12:41 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    tak zwieram na chwile czyli dokładnie robię reset i program zaczyna działać czyli odbierać kody
    Może złe opisałem
    Po włączeniu zasilania mam tylko napis na lcd i program nie odbiera żadnego pilota robię reset i program śmiga nie rozumiem tego tak jakby po wyświetleniu napisu się zatrzymał. dodam ze to są atmeg8A
    to są pliki które zmienialem
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lip 2016, o 20:20 
    Offline
    Nowy

    Dołączył(a): 23 cze 2016
    Posty: 16
    Pomógł: 0

    panie Mirku idzie ustawić atmege8 aby się resetowała po włączeniu zasilania ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę 1, 2  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO