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? 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 10 lip 2025, o 17:27


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 30 ] 
    Autor Wiadomość
    PostNapisane: 19 lis 2012, o 01:01 
    Offline
    Użytkownik

    Dołączył(a): 18 mar 2012
    Posty: 55
    Pomógł: 0

    Witam! Mój problem jest następujący: Zrobiłem odbiornik IR na atmedze 8 i pojawił się problem przy odbiorze danych z pilota, gdyż w momencie przyciśnięcia przycisku wszystko ładnie jest odbierane, lecz w momencie przytrzymania odbierane jest jakbym cały czas klikał (cykliczne wysyłanie z pilota), jest jakaś flaga informująca nas o tym, czy jest nadal przyciśnięty guzik?, albo coś co by informowało, ze to są dane z poprzedniej operacji?

    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: 19 lis 2012, o 02:00 
    Offline
    Moderator
    Avatar użytkownika

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

    Piotrek121 napisał(a):
    ... Zrobiłem odbiornik IR na atmedze 8 i pojawił się problem przy odbiorze danych z pilota, gdyż w momencie przyciśnięcia przycisku wszystko ładnie jest odbierane, lecz w momencie przytrzymania odbierane jest jakbym cały czas klikał (cykliczne wysyłanie z pilota),


    Nie wiem czy doczytałeś, czy wiesz? ale tak właśnie działają piloty, gdy jest wciśnięty klawisz, to ramka jest cyklicznie co ściśle określony czas (zwany GAP) wciąż wysyłana. (większość pilotów tak ma, niektóre mają troszkę jeszcze inaczej ale RC5 ma dokładnie tak).


    Piotrek121 napisał(a):
    jest jakaś flaga informująca nas o tym, czy jest nadal przyciśnięty guzik?, albo coś co by informowało, ze to są dane z poprzedniej operacji?

    To jest pierwsza książka (pierwsza część/tom) ... i przedstawiona jest w zasadzie prosta dydaktyczna wersja kodu tak aby każdy mógł zrozumieć jak to działa i ew nauczyć się tego, wprowadzać ew własne modyfikacje itp .... Pewnie że można określić, że wcisnąłeś ponownie (ale nie ważne jaki klawisz inny czy ten sam) w jakimś sensie możesz się posłużyć bitem TOGGLE w RC5, aczkolwiek to będzie trochę kłopotliwe

    za to w drugiej części książki:

    http://atnel.pl/jezyk-c-pasja-programowania.html

    zajrzyj w spisie treści do pierwszego rozdziału - jest spory i jest o podczerwieni ale już na wszystkie możliwe sposoby. Są tam świetne metody i to od razu w nowych wersjach bibliotek, które umożliwiają wręcz reakcję nie tylko na wciśnięcie klawisza ale jeszcze na którą ramkę ma klawisz zareagować - biblioteka pozwala je zliczać i robić różne cuda. Lubię się bawić podczerwienią ale te bardziej zaawansowane biblioteki mogłem przedstawić dopiero w drugiej książce po przygotowaniu do programowania opartego już na zdarzeniach (EVENTS), calbacckach itp .....

    _________________
    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: 19 lis 2012, o 17:50 
    Offline
    Użytkownik

    Dołączył(a): 18 mar 2012
    Posty: 55
    Pomógł: 0

    Dziękuje za odpowiedź, będę musiał pomęczyć się z toggle, bo na razie nie widzę innej możliwości



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 lis 2012, o 19:33 
    Offline
    Użytkownik

    Dołączył(a): 18 mar 2012
    Posty: 55
    Pomógł: 0

    W końcu znalazłem trochę czasu na dokończenie mojego programiku, ale pojawił się problem z bitem toggle, najwidoczniej nie działa on tak jak ja zrozumiałem... Mógłby mi ktoś wytłumaczyć jak działa ten bit?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 lis 2012, o 20:06 
    Offline
    Moderator
    Avatar użytkownika

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

    Piotrek121 napisał(a):
    Mógłby mi ktoś wytłumaczyć jak działa ten bit?


    Pisałem w książce ale przypomnę jeszcze raz

    bit TOGGLE zmienia stan na przeciwny ZA KAŻDYM razem gdy wciskasz klawisz. Nie ważne jaki klawisz, może być ten sam. Tzn trzymasz np wciśnięty dłużej jakiś klawisz wtedy leci cały czas taki sam bit TOOGLE w każdej kolejnej ramce. Zwalniasz na chwilę klawisz i wciskasz go ponownie - i już toggle bit zmienia stan na przeciwny. Gdybyś wcisnął inny klawisz - to też zmieniłby stan na przeciwny.

    czy teraz jaśniej ?

    _________________
    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: 29 lis 2012, o 20:09 
    Offline
    Użytkownik

    Dołączył(a): 18 mar 2012
    Posty: 55
    Pomógł: 0

    czyli przykładowo wciskam przycisk 1 na pilocie to przez cały czas gdy jest przyciśnięty ten przycisk toggle_bit = 0; a jak przycisnę przycisk 2 to toggle_bit = 1?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 lis 2012, o 20:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 maja 2012
    Posty: 471
    Lokalizacja: ZGY/ZS
    Pomógł: 30

    Bit toggle działa tak, że jak trzymasz wciśnięty przycisk to cały czas ma on taką samą wartość. Dopiero jak zwolnisz przycisk i wciśniesz go ponownie (dowolny przycisk) to zmieni się na wartość przeciwną, tak długo, aż znowu puścisz przycisk. Można to wykorzystać w taki sposób, że deklarujesz sobie jakąś zmienną pomocniczą i ładujesz do niej aktualny stan TOGGLE, a w następnym obiegu pętli porównujesz wartość TOGGLE z tą tymczasową. Jeśli są identyczne to jest dla ciebie informacja, że trzymasz przycisk.

    _________________
    eDiyCraft.blogspot.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 lis 2012, o 20:47 
    Offline
    Użytkownik

    Dołączył(a): 18 mar 2012
    Posty: 55
    Pomógł: 0

    No właśnie tak myślałem, i zrobiłem programik, ale nie wiem gdzie jest problem :( pierwsza dane odbiera a kolejnej już nie

    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: 29 lis 2012, o 21:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 maja 2012
    Posty: 471
    Lokalizacja: ZGY/ZS
    Pomógł: 30

    Przeanalizuj sobie istotny fragment który napisałeś
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    wykonasz pętle, odbierzesz kod, przestawisz zmienną bit. I w tym momencie warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    nie będzie spełniony, a co za tym idzie:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    nie zostaną wykonane te instrukcje. Idąc dalej, patrząc do biblioteki IR jest tam kod:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Czyli nowe dane nie zostaną wpisane do interesujących cie zmiennych. A w rezultacie toggle_bit będzie wciąż ten sam, czyli różny od twojej tymczasowej zmiennej bit i wracamy na początek mojego postu :)

    Ten kod powinien ci pomóc (pomigałem nawiasy, teraz bedzie ok)
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę

    _________________
    eDiyCraft.blogspot.com



    Ostatnio edytowano 29 lis 2012, o 21:07 przez savian86, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 lis 2012, o 21:05 
    Offline
    Moderator
    Avatar użytkownika

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

    Ło Matko ! ;) z córką - no nie działa bo wstawiłeś to

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


    wywal to (tzn tego IF'a a to co jest wewnątrz niego zostaw) czym prędzej i wszystko zacznie ci działać ;) a jak chcesz w bardzo zaawansowany hmm ale też bardzo bardzo praktyczny i przydatny sposób korzystać z ogromnych zalet bitu TOGGLE to zapraszam serdecznie do pierwszego rozdziału mojej drugiej książki, który jest dość obszerny - i tam dopiero się dzieje jeśli chodzi o te zagadnienia ;) mnóstwo fajnych rzeczy a nawet więcej, bo okazuje się, że dla takich standardów jak Sony, JVC, Samsung i innych które normalnie nie mają czegoś takiego jak TOGGLE bit - ja wprowadzam VIRTUAL TOGGLE BIT ;) .... bo aż tak bardzo jest to przydatne

    http://atnel.pl/jezyk-c-pasja-programowania.html

    w pierwszej książce masz po prostu taką hmmm rzekłbym dydaktyczną wersję obsługi RC5 a w drugiej książce to już "jazda bez trzymanki" i pełne biblioteki, takie które ja osobiście wykorzystuję w swoich projektach komercyjnych.

    _________________
    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: 29 lis 2012, o 21:27 
    Offline
    Użytkownik

    Dołączył(a): 18 mar 2012
    Posty: 55
    Pomógł: 0

    Dziękuje bardzo za pomoc, wszystko juz działa jak powinno, a co do książki to jak będę miał trochę gotówki to będę musiał podjechać po cześć drugą



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 gru 2012, o 17:44 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Dołączam się do wątku kolegi, gdyż mój problem również dotyczy dekodowania rc5. Kod program oparty jest na tym przedstawionym w książce Pana Mirosława. Dekodowanie oparte na ICP (Przechwytywanie zdarzeń zewnętrznych i nadawanie im markera czasowego). Zamiast przesunięć bitowych, odbierane wartości zapisuję w tablicy. Samemu strasznie trudno jest mi znaleźć błąd. Jeśli koledzy w wolnym czasie skłonni byliby rzucić okiem to byłbym bardzo wdzięczny. Z moich spostrzeżeń wynika, iż jest coś nie tak z mierzeniem długości impulsu.

    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.


    Chciałem wszystko napisać samemu od początku - chyba przerost ambicji. Dodam, że programuje procesor atmega8, a do 6 portów rejestru C podłączone są diody.



    Ostatnio edytowano 8 gru 2012, o 22:20 przez Bartek_98k, łącznie edytowano 5 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 gru 2012, o 18:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 maja 2012
    Posty: 471
    Lokalizacja: ZGY/ZS
    Pomógł: 30

    Piszesz, że kod oparty jest o książkę, to dlaczego nie korzystasz z gotowej eleganckiej biblioteki, która jest na płytce? Tam obsługa jest napisana w bardzo fajny sposób, łatwo i przyjemnie analizuje się jej kod. Tak przy okazji
    Kod:
    #define F_CPU 1000000L

    Nie rób tak, definiuj to w ustawieniach projektu.

    _________________
    eDiyCraft.blogspot.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 gru 2012, o 18:12 
    Offline
    Użytkownik

    Dołączył(a): 27 mar 2012
    Posty: 511
    Lokalizacja: Sląsk
    Pomógł: 14

    Na początek kilka wskazówek
    1.Nigdy w kodzie nie definiuj częstotliwości procesora!!! Ale to nigdy!
    2. Zrób wcięcia w kodzie będzie on bardziej przejrzysty. Wtedy szybciej znajdziemy twojego babola :)

    _________________
    Programowanie to styl życia :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 gru 2012, o 18:27 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 maja 2012
    Posty: 256
    Pomógł: 3

    I kolego Bartek_98k wklej ten swój kod w znacznikach syntex c, a nie code, bo zaraz przyjdzie Sun i tu zrobi czystki ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 gru 2012, o 18:40 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Poprawione ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 gru 2012, o 20:00 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Dziękuję za wskazówki, zaraz biorę się do poprawek i dam znać o efektach.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 gru 2012, o 22:29 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Zmieniłem wiersze 57 , 76

    I w 105 zmieniłem to tak, że mogłem usunąć tą zmienna "e" nad którą się zastanawialiśmy.
    Niestety w dalszym ciągu nie rusza.

    Gdzieś na początku musi być błąd po wstawieniu PORTC=1; (dla próby) dioda się nie zapala.

    if (a==1)
    {

    if(szerokosc_impulsu>MAX_BIT) a=2;
    if(szerokosc_impulsu<MIN_HALF_BIT) a=2;

    if(a==1)
    {
    PORTC=1;
    if(szerokosc_impulsu>MAX_HALF_BIT) licznikz++;



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 00:38 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    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.



    Ostatnio edytowano 9 gru 2012, o 17:24 przez Bartek_98k, łącznie edytowano 6 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 00:54 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    TCCR1B |= (0<<ICES1); // Zbocze opadające powoduje wpis do rejestru ICR tutaj wydaje mi się ze jest wszystko ok 0+0=0

    Weźmy to linie 38. Na starcie wszystkie linie tego portu maja 0, ja chce aby linia ICES1 dalej była zerem wiec 0+0=0 tak to działa ?

    Jeszcze takie pytanie:

    a|=(1<<5) to jest a= a |00010000



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 01:22 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Ok rozumiem. Tylko proszę o potwierdzenie mojego przykładu

    a|= (1<<3) to jest a=a|00000100

    czyli a|= (1<<3)|(1<<5) to jest a=a|00010100

    gdy mam jedynkę załóżmy na bicie PC3 i chce zmieniać za każdym przerwaniem to robię tak ?

    PORTC ^=(1<<PC3) czy to działa ?

    Jak jest 1 i dam jeden to zmieni na zero, a jak mam zero to będzie 1?

    A teraz jak chce wyzerować bit PC4 (00010001) to działam tak ?
    00010001 & 11101111 wiec najpierw muszę cały port ustawić jedynkami, później zmienić PC4 na zero i zrobić iloczyn ?



    Ostatnio edytowano 9 gru 2012, o 01:43 przez Bartek_98k, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 01:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 maja 2012
    Posty: 256
    Pomógł: 3

    Było dobrze, to popsułeś ;)

    a |= (1<<3) to jest a=a|00000100 Jest źle
    a |= (1<<3) to jest a=a|00001000 Jest dobrze

    Numerologię bitów zaczynamy zawsze od zera.


    PORTC ^= (1<<PC3) zrobi wartość tego bitu przeciwną do aktualnej. Tj. jak masz 1 to zrobi 0, a gdy masz 0 zrobi 1.

    Natomiast samo zerowanie zrobisz tak: PORTC &= ~(1<<PC3)

    I przeczytaj ten wpis na blogu pewnego erudyty. Mirek poświęca swój czas i udostępnia za darmo swą wiedzę, to nic tylko korzystać :) Choć to nie to samo co na papierze ;)



    Ostatnio edytowano 9 gru 2012, o 01:44 przez ajek, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 01:51 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Natomiast samo zerowanie zrobisz tak: PORTC &= ~(1<<PC3) rzeczywiscie

    Czyli tak jakby ustawiam na PORTC wszędzie jedynki, później ten bit który chce wyzerować ustawiam na 1 i wszystko traktuje iloczynem

    Dziękuję Panowie (Antystatyczny i ajek ) za wasze poświecenie. Jutro sprawdzę czy to pomoże mojemu układowi - będę się jeszcze odzywał.

    Podoba mi się to że nie przedstawiacie gotowych odpowiedzi tylko pomagacie w nauce. SUPER !


    PS.(ajek) tak, tak o tym myślałem



    Ostatnio edytowano 9 gru 2012, o 02:06 przez Bartek_98k, łącznie edytowano 3 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 02:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 maja 2012
    Posty: 256
    Pomógł: 3

    Dobrze myślisz, ale pewnie źle to w słowa ubrałeś :D

    Bo na porcie c nic nie ustawiasz, tylko port c traktujesz iloczynem z zaprzeczonej wystawionej jedynki na PC3 ;)
    Na przykładzie:
    PORTC= 1010
    i robimy:
    PORTC &= ~(1<<3)
    to rozbiję na podstawowe funkcje tak jakby:
    PORTC = 1010 & (~1000);
    czyli:
    PORTC = 1010 & 0111;
    a to nam w efekcie daje:
    PORTC = 0010.

    Mam nadzieję, że w miarę zrozumiale :)


    Widzisz Antystatyczny, taki ze mnie cwaniak nocny marek ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 12:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 maja 2012
    Posty: 256
    Pomógł: 3

    hehe, racja. Już jednym okiem przysypiałem widać ;)
    Oczywiście 0b101 i 0b111. Mój błąd, na szczęście Sun czuwa :D

    Kolego, wszędzie przed moimi czterobitowcami 0b wpakować, ale idea ta sama.

    0b, zapis binarny
    0x, zapis szesnastkowy
    zwykła liczba, zapis dziesiętny



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 16:26 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Zmieniłem kod według zaleceń. (Poprawiony wstawiony jest na 1 stronie - nie zmieniłem deklaracji zmiennych żeby nie przesuwać numeru linii ). Dla próby zmodyfikowałem linie 118 i 119 żeby sprawdzić czy dobrze mierzony jest czas i okazuję się, że nie. Szerokość impulsu wychodzi dużo za duża ...

    (Wszystko zrealizowane jest na płytce prototypowej, zasilanie z usb nie wiem czy to może mieć wpływ, pilot rc5 philips)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 17:04 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Bez zamykania nawiasów nie kompiluję się. Sprawdziłem inny pilot też 38kHz (Panasonic) tam też nie ma takich szerokich impulsów i jest to samo.


    Zmieniłem kod, na 1 stronie też i nic. To chyba musi być jakiś problem sprzętowy ?



    Ostatnio edytowano 9 gru 2012, o 17:26 przez Bartek_98k, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2012, o 17:42 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Ok tak zrobię.

    Chyba że sam Pan Mirek rzuci okiem ...

    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.


    Pozdrawiam, dzięki



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 gru 2012, o 17:23 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    Częstotliwość mojej atmegi to 1MHz. Niby wszystko się zgadza.

    Aby wykryć, czy przypadkiem nie łapie mi śmieci, zrobiłem tak, że jak tylko program wejdzie do procedury obsługi przerwania to zapala mi jedną diodę. Po podłączeniu (czekam w programie głównym 1s na ustabilizowanie układu) do zasilania to prędzej czy później ta dioda się zapala. Układ sam się wzbudza. Jutro zakupię nowy odbiornik i zobaczę czy coś się zmieni. Dodam że odbiornik jest podłączony wg schematu z książki (bez dodatkowego rezystora podciągającego 10kOhm)

    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.



    Nie, nic to nie dało ... dalej się wzbudza



    Ostatnio edytowano 10 gru 2012, o 18:20 przez Bartek_98k, łącznie edytowano 3 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 gru 2012, o 21:19 
    Offline
    Nowy

    Dołączył(a): 08 gru 2012
    Posty: 13
    Pomógł: 0

    W końcu udało się, wszystko działa tak jak powinno. Dziękuję wszystkim (w szczególności koledze Antystatyczny) za pomoc.

    Program steruję diodą RGB (wspólna anoda) (przyciski 1,2,3 każdy to inny kolor). Wszystko oparte jest na przerwaniach od ICP.

    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 30 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO