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 26 lip 2025, o 03:04


    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 kwi 2013, o 23:20 
    Offline
    Użytkownik

    Dołączył(a): 18 paź 2012
    Posty: 244
    Pomógł: 2

    Witam

    Otóż swego czasu bawiłem się czujniczkami HC-SR04. Wszystko pięknie działa, ale zostawiłem sobie niedopowiedziany pewien problem (a jak wiadomo, zasiane wątpliwości lubią kiełkować :)), mianowicie, jak działa wejście Input Capture w AVR-ach (nie chodzi mi o samo ustawienie i zainicjalizowane bo to jest oczywiste)?

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


    A więc, wg. mnie powinno działać tak, że zmienna ICR1 przyjmuje wartość, zależną od tego jak długo jest stan wysoki na pinie, i to by było jasne i logiczne. No ale jak widać działa to (chyba!) tak, że:

    - Dostajemy stan wysoki na pin
    - ICR1 zaczyna liczyć
    - Jeśli nastąpi zbocze opadające, to długość impulsu jest równa zmiennej ICR1 minus poprzedni wynik (???)
    - Przypisujemy wartość ICR1 do zmiennej LastCapture
    - Zmiana zbocza wyzwalającego
    - Wychodzimy z przerwania
    - Następnie ta sama procedura tylko że ze zboczem opadającym.

    Panowie...o co tu chodzi? :D

    To działa, ale wg. mnie totalnie nie logicznie. Wartość ICR1 powinna wynosić tyle (oczywiście w zależności od wybranego preskalera w inicjalizacji) ile wynosi czas trwania wysokiego impulsu, koniec. Po co twórcy AVR tak skomplikowali ten moduł?

    To raz, a dwa to z mojej dedukcji, to zawsze otrzymamy pomiar nie najnowszy tylko zawsze o jeden późniejszy (przez: PulseWidth = ICR1 - LastCapture).

    W rozdziale o RC5 nie jest to do końca wyjaśnione dlatego pytam :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2013, o 07:35 
    Offline
    Moderator
    Avatar użytkownika

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

    W momencie przerwania możesz uzyskać długość czasu trwania poprzedniego impulsu, to oczywiste i gdzie tu jakaś komplikacja producenta, niepotrzebnie się dopatrujesz komplikacji ze strony producenta podczas gdy jak słusznie zauważyłeś jeszcze nie rozumiesz jak to działa. A zatem...

    przychodzi pierwsze przerwanie, zbocze opadające - i co chciałbyś wiedzieć na tej podstawie ? ile wynosi długość bieżącego impulsu? jak ? skąd ? - po prostu zapamiętujesz PulseWidth - które jest w tym przypadku nie istotne (w przypadku pierwszego przerwania po resecie), ale jednocześnie zapamiętujesz LastCapture - czyli bieżącą wartość rejestru ICR1 - niech będzie że wyniesie ona np 27300 (ot taki randomowy przykład). I teraz czekasz na kolejne przerwanie prawda? a timer tyka ;)

    gdy nadleci kolejne przerwanie - to co ? To teraz PulseWidth = IRC1 - LastCapture. Załóżmy że teraz już wartość ICR1 = 28400, a zatem po odjęciu 28400-27300 otrzymasz DOKŁADNIE czas jaki upłynął od poprzedniego przerwania do bieżącego przerwania i wynosi 1100 tyknięć timera ZGADZA SIĘ ? Cóż w tym dziwnego czy pokręconego ? Toż Timer1 wciąż biega sobie od 0 do 65535 i się przekręca i znowu od zera do 65535 a każde przerwanie przerzuca tylko jego obecną wartość do ICR1 i to tą przechwyconą wartością się posługujemy ....

    wiem wiem - bo wiele razy mam o to pytanie na maila - i np wielu ludzi sobie np wyobraża, że Timer1 zlicza w tajemniczy np sposób i dolicza do 65535 i się np zatrzymuje - tzn tak im się np wydawało, i że trzeba samemu wyzerować albo inne jeszcze pomysły ... i stąd brak zrozumienia tego co wyżej napisałem ....

    ale mam nadzieję, że przykład z liczbami wyżej trafi teraz do ciebie i ew innych którzy to czytają - w sumie to dobrze że zadałeś to konkretne pytanie na forum, bo teraz będę mógł tu kierować zapytania z maili ...

    ale jeśli coś jeszcze jest niejasne to pytaj śmiało dalej - wyjaśnijmy to do samego koniuszka ok ? ;) bo warto to zrozumieć - to fajny i prosty mechanizm i zresztą bardzo i często przydatny.

    _________________
    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: 3 kwi 2013, o 09:56 
    Offline
    Użytkownik

    Dołączył(a): 08 wrz 2012
    Posty: 505
    Pomógł: 6

    Fajnie się stało, że pojawiło się takie pytanie bo i mi się coś wyjaśniło, ale mam jeszcze pytanie co się dzieje w momencie kiedy drugie zbocze nadejdzie po przekręceniu Timera (65535 + 1) w momencie kiedy np. zliczy sobie 100 impulsów od zera? Czy fakt "przekręcenia" jest odnotowywany w tym trybie pracy licznika?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2013, o 10:29 
    Offline
    Użytkownik

    Dołączył(a): 08 wrz 2012
    Posty: 505
    Pomógł: 6

    No nie do końca jestem o tym przekonany, bo np. pierwsze zbocze występuje w chwili gdy licznik naliczył 1000 impulsów, a drugie zbocze gdy licznik się przekręcił i licząc od nowa naliczył 1200 impulsów. Czyli 1200 - 1000 = 200 impulsów, ale + 65535 czyli chyba jednak muszę badać flagę (skoro jest) i ją kasować. Dobrze myślę?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2013, o 10:38 
    Offline
    Moderator
    Avatar użytkownika

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

    Tom277 napisał(a):
    Fajnie się stało, że pojawiło się takie pytanie bo i mi się coś wyjaśniło, ale mam jeszcze pytanie co się dzieje w momencie kiedy drugie zbocze nadejdzie po przekręceniu Timera (65535 + 1) w momencie kiedy np. zliczy sobie 100 impulsów od zera? Czy fakt "przekręcenia" jest odnotowywany w tym trybie pracy licznika?


    Kolejne bardzo dobre pytanie w tym wątku ;) ... cieszę się , że padło bo idziemy w kierunku - "ICP -Ostatnie starcie - ostatnia krew" ;)

    no to teraz tak - po pierwsze to zawsze troszeczkę się dziwię dlaczego gdy ktoś ma takie pytanie to nie zrobi tego co ja zwykle robię ? .... no ale nie zawsze przecież każdy musi akurat wpaść na taki sam pomysł, ja pewnie nie wpadam na wiele innych, na które wy wpadniecie .... więc podpowiadam co ja bym zrobił stawiając sobie takie zadanie:

    1. załóżmy że wartość timera1 = 65400

    czyli po operacji:

    Kod:
    PulseWidth = ICR1 - LastCapture;
    LastCapture = ICR1;


    wiemy że LastCapture = 65400;

    prawda ? ;) no to teraz załóżmy że mija kolejne 800us (bo mówimy załóżmy o RC5) więc podczas kolejnego przerwania dochodzi do takiej oto sytuacji:

    Kod:
    PulseWidth = 665 - 65400;
    LastCapture = 665;


    ile wynosi teraz PulseWidth ??? - no z piersi wyrywa się okrzyk - ZDRADA przecież PulseWith będzie teraz równe -64735 !!!

    a tu ZONK ! - nieprawda ! ;) .... hmmm zatem ile ?

    Ja nie powiem ale poproszę Cię zrob sobie taki prosty kod jak niżej i wyświetlił sobie to na wyświetlaczu jako i ja to robię teraz ;)

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


    i powiedz mi jaką liczbę ujrzysz po tej operacji na LCD i sam spróbuj wyjaśnić dlaczego taką a nie inną teraz ok? to pewnie jeszcze jedna rzecz Ci się rozjaśni ale pewnie także wielu innym zaglądającym do tego "Ostatniego starcia" ;) .... ja powiem że sam tak kiedyś to sprawdziłem - to najlepsza metoda - jak czegoś nie jesteś pewien to od razu sam bierz kompilator w łapki, procka w łapki do tego jakiś LCD lub terminal i ciach! ;)

    ------------------------ [ Dodano po: 1 minucie ]

    Tom277 napisał(a):
    .... czyli chyba jednak muszę badać flagę (skoro jest) i ją kasować. Dobrze myślę?


    Nie musisz badać żadnej flagi - zrób ten prosty test wyżej - i od razu znajdziesz odpowiedź - jest dokładnie tak jak wyżej kolega SmN napisał wprost.

    _________________
    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: 3 kwi 2013, o 10:47 
    Offline
    Użytkownik

    Dołączył(a): 08 wrz 2012
    Posty: 505
    Pomógł: 6

    No to jak tylko wrócę do domku to ciachnę ;) . Niestety to chwile potrwa bo jestem daleko, ale za to mam chwilę żeby poczytać wątki na forum ;) .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2013, o 10:54 
    Offline
    Moderator
    Avatar użytkownika

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

    Tom277 napisał(a):
    No to jak tylko wrócę do domku to ciachnę


    I o to chodzi panie kochany ;) jak najwięcej "ciachania" i operacji na żywca a nie vitrualnych. Będzie lepiej.

    ------------------------ [ Dodano po: 1 minucie ]

    Zresztą spójrz na fajny cytat w podpisie naszego kolegi Krauser na forum, brzmi on:

    Cytuj:
    Konfucjusz napisał "Co usłyszę, zapomnę. Co zobaczę, zapamiętam. Co sam zrobię, zrozumiem."


    i to najprawdziwsza prawda ;)

    _________________
    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: 3 kwi 2013, o 11:24 
    Offline
    Moderator
    Avatar użytkownika

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

    Dokładnie święte słowa kolegi SmN ;) bo też któregoś razu jeden czytelnik próbował właśnie udoskonalić sobie tę opisaną przeze mnie procedurę - jakimiś dziwnymi obliczeniami przepełnień w kolejnym przerwani OVF timera1 ... ale jak sam zauważył - było tylko gorzej.

    Jednak myślę, że te kłopoty wynikają - że właśnie wielu początkujących nie wie o tym (a też jakoś ich nie ciągnie żeby ot po prostu sprawdzić to na procku i LCD chociażby), że jeśli mamy liczby np uint8_t i zrobimy działanie

    10-250

    to w wyniku otrzymamy 16 a nie -240 bo skąd miałaby być liczba ujemna gdy typ zmiennej jest bez znaku ;)

    _________________
    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: 3 kwi 2013, o 16:38 
    Offline
    Użytkownik

    Dołączył(a): 18 paź 2012
    Posty: 244
    Pomógł: 2

    O to to, (prawie) wszystko jasne ;)

    Myślałem, że ICR1 liczy się tylko i wyłącznie pomiędzy dwoma przerwaniami (czyli w trakcie trwania mierzonego impulsu). Dzięki za wytłumaczenie.

    Mam jeszcze dwa pytania:

    1. Czyli rozumiem że to wejście nie zadziała poprawnie gdy impuls będzie trwał dłużej niż 2 "przekręcenia" licznika?

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


    Co realizuje linijka?:

    Składnia: [ Pobierz ] [ Ukryj ]
    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: 3 kwi 2013, o 16:46 
    Offline
    Moderator
    Avatar użytkownika

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

    ad.1) ....dobrze myślisz - dlatego trzeba sobie odpowiednio dobierać preskaler do potrzeb, albo jeśli mają być mierzone BAAARDZO długie czasy to ew wtedy można kombinować jeszcze z dodaniem przerwania OVF i zliczać przekręty że tak powiem ;)

    ad.2) hej hej - panie kolego .... a odpowiem pytaniem - zajrzyj najpierw do noty PDF i spróbuj tu napisać mi co oznacza bit tzn do czego jest bit ICES1 w rejestrze TCCR1B ok ? ;) i napisz wtedy jak ty rozumiesz ten IF() - a ja doprecyzuję jeśli nie dojdziesz - dobra ?

    _________________
    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: 3 kwi 2013, o 22:45 
    Offline
    Użytkownik

    Dołączył(a): 18 paź 2012
    Posty: 244
    Pomógł: 2

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


    ICES1 - wybór zbocza które wyzwoli przerwanie (1- zbocze narastające, 0-zbocze opadające)

    Jeśli zmienimy zbocze wyzwalające przerwanie, to wykonuj komendę.

    Tak? :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2013, o 22:50 
    Offline
    Moderator
    Avatar użytkownika

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

    No widzisz - bardzo dobrze rozszyfrowałeś ICES1 ;)

    ale if to nie tak jak piszesz, że "jeśli zmienimy" - warunek działa prosto

    if( zbocze ustawione na XXX ) to zrób to i siamto

    a widać wykrzyknik czyli sprawdzamy czy ICES1=0 czyli czy zbocze ustawione na opadające to zrób siamto-owamto ;)


    Autor postu otrzymał pochwałę

    _________________
    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: 4 kwi 2013, o 12:00 
    Offline
    Użytkownik

    Dołączył(a): 18 paź 2012
    Posty: 244
    Pomógł: 2

    Sprytnie pomyślane. Wszystko jasne :) Dzięki!



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 10:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Witam Wszystkich,
    Dobrze, że odnalazłem ten temat, głowiłem się nad zasada działania TIMERA1 i rejestru ICR1. Byłem pewien, że rejestr się automatycznie zeruje wraz z wyłapaniem zbocza - rozpisywałem sobie na kartce przebieg całego kodu 11_RC5 i ciągle wracałem do Frame_Restart, a tutaj kilka dodatkowych zdań i wszystko jasne :)
    Szczerze mówiąc, jeśli można w jakiś sposób zmienić temat postu i dodać np. w nawiasach 11_RC5_decode to ułatwiłoby to znalezienie tego tematu dla osób śledzących kody z Niebieskiej Biblii :)

    Zgodnie z zaleceniami przetestowałem na LCD kilka opcji CR1 i Last_capture np. 665 - 65400 ( - 64735)
    a na LCD wyświetla nam 801 - co świetnie działa dla naszego decodera RC5.

    Zrobiłem to samo dla mniejszych liczb dla uint8, na karteczce rozpisałem na liczby binarne i ciągle wychodzi mi ten nieszczęsny niedomiar. Wiem, że jest tu jakieś łatwe rozwiązanie, bądź zasada, ale nie udało mi się tego rozgryźć do tej pory. Może jakaś podpowiedź :) ?

    ------------------------ [ Dodano po: 17 minutach ]

    Ok, przerobiłem kolejny przykład i teraz widzę zależność.
    Dla przykładu 10-250 mamy -240
    Następnie dla 8 bitowej liczby maks 256 - 240 = 16
    Ta sama zasada z większą liczbą 16 bitową.

    Zastanawia mnie jednak kolejna sprawa. Jeśli użyję LCD do sprawdzenia wyniku np. 50-75 i nasz wynik w jest uint16 to na ekranie LCD otrzymuje ujemny wynik -25.

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


    W jaki sposób dla uint16, który odnosi się do 16-bitowa liczby całkowitej bez znaku otrzymałem znak na LCD 8-)
    Wiem, że to braki wiedzy z poprzednich rozdziałów :oops: , lecz umknęło to mojej uwadze. Dzieki za pomoc !



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 11:39 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    W jaki sposób dla uint16, który odnosi się do 16-bitowa liczby całkowitej bez znaku otrzymałem znak na LCD
    Wiem, że to braki wiedzy z poprzednich rozdziałów , lecz umknęło to mojej uwadze. Dzieki za pomoc


    czegoś nie rozumiem - gdyby ci się na pewno liczba w zmiennej uint16_t zmieniała TYLKO w zakresie 0 - 75 to NIGDY nie otrzymasz na LCD z tej biblioteki z Bluebooka liczby ujemnej (czyli ze znakiem -)

    ale .... ale jeśli przekroczy ona wartość dodatnią dla typu int ........ (sam pomyśl albo zajrzyj do bluebooka jakie są granice typu int) to się nie dziw że zobaczysz liczbę ujemną

    tu kłania się dość popularny kolejny temat z ćwiczenia o LCD - gdzie zastosowałem (co zresztą widać w nazwie funkcji LCD_int() ) ... wyświetlanie WŁAŚNIE liczb typu int )

    a jeśli ktoś chce wyświetlać większe liczby całkowite bez znaku to MUSI sobie albo przerobić tą funkcję albo napisać nową np: LCD_long() ... posługując się wewnątrz niej nie itoa() a np ltoa() ... no i zmienić typ argumentu przekazywanego do funkcji

    _________________
    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: 5 lis 2013, o 12:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    To już ostatnie pytanie odnośnie ćwiczenia 11_RC_5_decode i rejestru ICR1.

    Poprzez funkcji w makro "ir_micro_s(num)" przeliczamy ilość tyknięć Timera1 dla zadanej długości czasu. Chciałem zobaczyć w Eclipse jaką wartość dostanę dla MAX BIT i o dziwo moje ustawienie F_CPU to 20 MHz, lecz w opcji properties jak i we fuse bitach ustawiłem wszystko wg. wartości rezonatora. Wszystko przedstawia obrazek poniżej:
    Obrazek

    Oczywiście program działa sprawnie i przy nakierowaniu świetlówki czy lampy wolframowej kody są nadal sczytywane. Zastanawia mnie jednak fakt czemu program wpisuje mi 20 MHz. Projekt wyczyściłem, przebudowałem i wgrałem na uC i nadal to samo. Wiem, że to czepianie się do niczego, ale to taka maleńka rzecz, która nie daje mi spokoju :roll:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 13:51 
    Offline
    Moderator
    Avatar użytkownika

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

    może masz coś nie tak z workspace - zawsze w takiej sytuacji prosta sprawa aby się przekonać:

    1. zakładasz nowe czyste workspace
    2. odpalasz eclipsa w tym nowym
    3. robisz IMPORT projektu ze skopiowaniem go do nowego workspace
    4. wszystko powinno śmigać dobrze ;)

    _________________
    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: 5 lis 2013, o 16:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Dziękuję za nakierowanie co do problemu z wyświetlaczem i tej liczby ze znakiem, nie mam wprawy w te klocki no i nie myślę w kategoriach int, long itd. to pewnie trzeba wypić z mlekiem matki bądź wpoić sobie poprzez praktykę i systematyczność której mi brak :oops:

    Co do podglądu wartości wpisanych w marko. Tak jak zasugerowałeś wszystko zrobiłem krok po kroku, oczywiście przez pomyłkę nie przełączyłem na perspektywę Eclipsa do AVR, lecz teraz wszystko gra i pokazuje mi dokładnie ustawioną wartość w preferences i poprzez fuse bity !
    No to teraz czas na zabawę z pilotem ;)

    Tak jeszcze z czystej ciekawości, rozumiem, że w przypadku użycia ICR1, tak jak w przykładzie 11_RC5, jedynym sposobem uruchomienia timera1 jest puszczenie na nóżkę PD6 jakiegoś impulsu (np. jeden impuls 1ms). Czyli tak jak to rozumiem jest to taki sygnał "Trigger" do wyzwolenia tego Timer1. W kilku innych postach rozmawialiście o podłączaniu TSOP i rezystora pull up itd. Nie miałem z tym do tej pory styczności i za bardzo nie rozumiem powodu stosowania tego rozwiązania.

    W swoim projekcie chciałem użyć Atmega32 do generacji sygnału Trigger do wyzwolenia aparatu fotograficznego, gdzie w instrukcji napisane jest, że powinienem użyć sygnał " TTL/high impedance ". Z tego co rozumiem to nie mogę podłączyć bezpośrednio pinu z Atmega do portu w aparacie ? Powinienem użyć rezystor i do tego jakiś kondensator w celu przefiltrowania sygnału ? Wiem, że to pytanie jest oddalone od tematu ICR1, więc jeśli trzeba to oczywiście mogę założyć kolejny temat z tym zganieniem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 16:16 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    bądź wpoić sobie poprzez praktykę i systematyczność


    Uwierz wystarczy tylko to - bo niestety ja np nie czułem tego w mleku matki ;)

    barszczz napisał(a):
    W kilku innych postach rozmawialiście o podłączaniu TSOP i rezystora pull up itd. Nie miałem z tym do tej pory styczności i za bardzo nie rozumiem powodu stosowania tego rozwiązania.


    No ale czego nie rozumiesz ? ;) przecież TSOP to prosty odbiornik podczerwieni scalony zresztą. Ma tylko trzy nogi. VCC, GND i WYJŚCIE właśnie ... no i chyba to nie dziwne że to WYJŚCIE na którym pojawiają się te całe ramki/przebiegi z pilota podłączamy na WEjście przerwania ICP1 ??? czy dla ciebie to dziwne ? bo może czegoś nie rozumiem w twoim pytaniu. A to że trzeba/warto zrobić dodatkowe podciąganie to już inna kwestia chodzi o lepsze zbocza tych sygnałów i mniej błędów

    barszczz napisał(a):
    W swoim projekcie chciałem użyć Atmega32 do generacji sygnału Trigger do wyzwolenia aparatu fotograficznego, gdzie w instrukcji napisane jest, że powinienem użyć sygnał " TTL/high impedance ". Z tego co rozumiem to nie mogę podłączyć bezpośrednio pinu z Atmega do portu w aparacie ? Powinienem użyć rezystor i do tego jakiś kondensator w celu przefiltrowania sygnału ? Wiem, że to pytanie jest oddalone od tematu ICR1, więc jeśli trzeba to oczywiście mogę założyć kolejny temat z tym zganieniem.


    Pewnie że można tylko czy coś ci się nie "pokapturkowało" ? :( ... wyzwalanie aparatu chcesz zrobić za pomocą WEjścia ICP1 ? no toż to przecież panie kochany WEjście i na nim badamy stany jakie się podaje z zewnątrz - jak w klawiszu ;)

    co to ma wspólnego z WYSTEROWANIEM migawki aparatu. W tym celu chyba musisz użyć panie kochanieńki WYJŚCIA z procka prawda ? ;) i może to być dowolny pin który ustawisz jako wyjście i podasz a niego krótki impuls i to nawet bez użycia żadnego timera bo po co ? ;)

    a to że ma być High Impedance - to racja i użyj panie do takiego celu Optoizolatora - nawet CNY17 - ja tylko tak robię gdy podłączam procka do aparatów czy kamer ;)

    _________________
    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: 5 lis 2013, o 16:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    mirekk36 napisał(a):
    a to że ma być High Impedance - to racja i użyj panie do takiego celu Optoizolatora - nawet CNY17 - ja tylko tak robię gdy podłączam procka do aparatów czy kamer ;)


    Oj nakiełbasiłem :) z góry przepraszam za wprowadzenie w błąd.
    Moje pytanie co do tych rezystorów pull up nie miało żadnego powiązania z ICR1, to samo z wyzwalaniem kamery - nawet nie przyszło mi na myśl wyzwalać aparatu w ten sposób ;)

    Chodziło mi, że ten sygnał na ICR1 wyzwalający działanie timera1 wygląda dla mnie jak zwykły sygnał trigger jak np. w projekcie do wyzwalania aparatu.
    Dodatkowo przypomniałem sobie rozmowę o TSOP i rezystorze pull up. W instrukcji mam napisane TTL i wysoka impedancja, więc coś mi zaświtało i zaciekawiło, czy do takiego prostego przykładu jak klawiszowe (np pilota RC5, bo już dziś przemaglowałem ten temat ;) ) wyzwalanie, muszę użyć jakiekolwiek dodatkowe elementy, czy też mogę bezpośrednio podłączyć wyjście Atmegi do kamery. A najbardziej zastanawia mnie powód, dla którego musimy stosować te rezystory pull up np. w połączeniu TSOP-a skoro ma on własną rezystancje. Jedyne co przychodzi mi na myśl to używając rezystor pull-up zmniejszamy prądy sygnałów, więc oszczędzamy na baterii, lecz czy to nie wymyślona teoria ? :twisted:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 16:39 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    czy też mogę bezpośrednio podłączyć wyjście Atmegi do kamery


    No wiesz jak masz jakiś aparat/kamerę za 20zł i gdyby coś się zrąbało - to nie żal - to podłączaj od razu do wyjścia ATmegi ;) czemu nie. Ale jeśli masz jakiś aparat/kamerę za dużo dużo większą sumę i jednak czujesz ryzyko że jak to sfajczysz - to będzie bolało, to jednak nie żałuj kaski na transoptor.... Bo to parę groszy a masz pewność raz na zawsze.

    Jeśli chodzi o dodatkowy pullup dla TSOP'a ;) no toż przecież pisałem. A ty zajrzałeś do noty i sprawdziłeś jaki on ma ten wewn. pullup ? tzn jaka rezystancja ??? Ja wolę dać jeszcze równolegle 10K co razem da jakieś powiedzmy ok np ok 5k i jeszcze raz ci powtarzam - jakbyś sobie podglądał przebiegi na oscylu to będą bardziej strome zbocza. A to przełoży się na mniej błędów - a chyba o to ci chodzi gdy chcesz sterować procka z pilota - zgadza się ? ;)

    _________________
    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: 5 lis 2013, o 16:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    o właśnie, o to mi chodziło :) teraz już pojąłem skutki i przyczyny...
    Zaraz rzucę okiem na transoptory i w notach popatrzę jak to podłączyć, bo jeszcze nigdy nie stosowałem tego elementu. Znając życie będę miał kilka pytań i z tym tematem, ale jeśli to już w innym temacie, żeby tutaj nie odbiegać od zagadnienia.

    Ten pilocik RC5 pod jednym pinem i wspomniany kod 11_RC5 to świetna sprawa, już nie zliczę ile ciekawych zabaw i małych projekcików sobie zaplanowałem do przetestowania :lol:

    Pewnie jutro postaram się przejrzeć dział odnośnie IR z zielonej książki, bo z tego co widzę jest tam dość spory dział poświęcony temu zagadnieniu...jeszcze raz dzięki za dobre rady ;) !



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 17:01 
    Offline
    Moderator
    Avatar użytkownika

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

    barszczz napisał(a):
    Pewnie jutro postaram się przejrzeć dział odnośnie IR z zielonej książki,


    To się postaraj - bo tam jest takie fajne "cacuszko" przy obsłudze pilotów jak "key_time" - zmienna zliczająca ilość odebranych ramek co daje GIGANTYCZNIE fajne możliwości jeśli chodzi o obsługę w programie. Nie wspomnę już że działa to na zdarzeniach i świetnym callbacku .... w efekcie końcowym stosowanie już tego we własnym dowolnym programie to MIODZIO ;)

    _________________
    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: 5 lis 2013, o 17:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1978
    Lokalizacja: Lipsko
    Pomógł: 125

    Tak się wczepię lekko w temat, bo widzę moją działkę :) Wyzwalanie aparatu można też spokojnie i bezpiecznie zrobić na tranzystorze, np. BC547 z rezystorem na bazie około 4,7k w układzie z otwartym kolektorem jako wyjście. To wielokrotnie sprawdzony na najróżniejszych aparatach, pewny w załączeniu i bezpieczny sposób. Nie ma tam mowy o przedostaniu się niepowołanych sygnałów. W sumie korzysta się z niego jak z transoptora. Poniżej fragment schematu:

    Obrazek

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 17:06 
    Offline
    Moderator
    Avatar użytkownika

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

    oczywiście że można i tak - tylko że kolega nie do końca może czuje co daje transoptor albo o jakie przypadki chodzi. Wszystko zależy jak budujemy zasilanie tego co steruje tym aparatem ...

    i w takim przypadku z tranzystorem jak pokazałeś trzeba się już czasem zastanowić ...

    tymczasem podkreślam - transoptor i to SMD wcale nie jest ani droższym, ani większym gabarytowo rozwiązaniem a można bez obaw stosować go w każdym wypadku.

    ------------------------ [ Dodano po: 1 minucie ]

    A jeśli chodzi o to zdanie:
    SylwekK napisał(a):
    Nie ma tam mowy o przedostaniu się niepowołanych sygnałów

    To "nie ma mowy" dokąd się RAZ nie przedostanie i coś sfajczy ;) .... Jeszcze raz mówię - warto sobie zdać sprawę z kosztów aparatu bo są takie za 100zł, są też za 1000zł ale są także za 10.000 zł i dużo więcej .... Dlatego warto czasem się zabezpieczyć.

    _________________
    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: 5 lis 2013, o 17:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Dzięki Panowie, nie spodziewałem się tak szybkiego i licznego odzewu :)
    Akurat mam tranzystorek NPN BC547, więc jutro przetestuję podłączenie do aparatu w ten sposób.
    Dodatkowo, zakupię też optoizolator, ot tak, żeby pobawić się i użyć go do podobnego celu w praktyce.

    ------------------------ [ Dodano po: 1 minucie ]

    mirekk36 napisał(a):
    To "nie ma mowy" dokąd się RAZ nie przedostanie i coś sfajczy


    no to teraz mam znowu wątpliwości przed użyciem BCxxx :/



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

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

    barszczz napisał(a):
    no to teraz mam znowu wątpliwości przed użyciem BCxxx :/


    powiedz za ile masz aparat - rząd wielkości ;) i powiedz mi jak będziesz dokładnie zasilał urządzenie które będzie wyzwalać ten aparat - to ci podpowiem

    _________________
    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: 5 lis 2013, o 17:22 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sty 2013
    Posty: 106
    Pomógł: 0

    Aparat, dość drogi, bo to przemysłowa kamerka z laboratorium, którą chcę sterować.
    Zasilana z dodatkowego zew. zasilacza 13V 1.2A
    Z tego co rozumiem, optoizolator jest jest jedynym słusznym rozwiązaniem, bo procek i kamerkę zasilam z innych źródeł więc w razie przedostania się niechcianego sygnału, ich różnica może być smażąca :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 17:26 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3229
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    Cytuj:
    no to teraz mam znowu wątpliwości przed użyciem BCxxx :/


    No i bardzo dobrze. Weź sobie zobacz notę dowolnego transoptora i zobaczysz że w obudowie masz diodę LED i tranzystor wysterowywany światłem z tej diody.

    LED podłączasz do ATmegi, tranzystor to sterowanego obiektu.

    Wtedy masz izolację galwaniczną i pewność że nic się nie stanie.

    W przypadku tranzystora przy przebiciu napięcie z bazy może popłynąć wprost do aparatu.

    Oczywiście moze sie tak nigdy nie stać, a nawet jeśli to MOŻE nic się nie uszkodzić.

    Ale podkreślam, MOŻE. A po co ryzykować?

    Zgodnie z (wrednym) prawem Murphy'ego - jeśli coś może się uszkodzić to uszkodzi się na pewno. :lol:

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2013, o 17:33 
    Offline
    Moderator
    Avatar użytkownika

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

    Dokładnie jak pisze Jagi, a ja dodam ...

    że myślałem że masz jakiś aparacik/kamerkę zasilaną jeszcze bateryjnie ... a tu proszę dwa różne źródła zasilania będą ;) ... bo to jak lubisz "z tzw dreszczykiem" to dawaj przez tranzystor :lol: a jak na spokojnie to transoptor.

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