Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega8][C] - ICP i 2 kanały R/C

03 Wrz 2012 23:40 1101 4
  • Poziom 10  
    W moim poprzednim temacie próbowałem podłączyć aparaturę zdalnego sterowania do uC. Udało mi się, ale tylko z jednym kanałem. Tutaj kolega krru pisze, że mogę korzystać z dwóch kanałów na jednym wejściu ICP. Szukałem takiego rozwiązania, ale nie potrafiłem znaleźć. Mógłby ktoś rozwinąć tę myśl?
  • Poziom 16  
    W typowym standardzie PPM możesz zakodować 8 sygnałów w jednym. Nie mam czasu teraz szukać ale opisów znajdziesz całą masę, Gdzieś nawet jest opis konstrukcji aparatury pracującej na 433MHz.
  • Poziom 10  
    Znalazłem kilka wpisów mówiących o tym, ale bez szczegółów. Można zrobić tzw. "pulse train", ale nie mam pojęcia, jak do tego podejść od strony praktycznej. Nie wiem, w jaki sposób dać na jedno ICP dwa różne sygnały i potem w programie je rozróżniać.
    Czy jeśli dam drugi sygnał na np. INT0 i zmierzę go timerem, to mogę to robić jednocześnie z działaniem ICP?
  • Poziom 32  
    Ja w tamtym innym temacie zaznaczyłem, że może to być możliwe, pod warunkiem że odbiornik aparatury jedynie rozdziela impulsu kolejnych kanałów, bez przesuwania ich w czasie. Wtedy impulsy poszczególnych kanałów nie nachodzą na siebie i wystarczy je zsumować (nawet diodami) - sumą logiczną.
    Problemem może być połączenie dwóch skrajnych kanałów. W torze radiowym jest jeden zero-jedynkowy sygnał, który ma jeden długi impuls synchronizujący i potem serię impulsów na poszczególne kanały. Po zsumowaniu sygnałów z dwóch kanałów (najlepiej sąsiednich) mamy dwa krótkie impulsy o zmiennej długość, pomiędzy nimi jest raz krótki, raz długi odstęp. Po tych odstępach można poznać który kanał jest który.
  • Poziom 10  
    Jeśli to możliwe (mogłem przekombinować), żeby drugi kanał mierzyć w ten sam sposób, jak ten od ICP, tylko na innym pinie, to mógłbym prosić, aby ktoś przerobił mój kod na tę drugą wersję? Strasznie się gubię w tych rejestrach.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W ten sposób dzięki zmiennej counts mogę odczytywać długość impulsu. Swoje rozwiązanie wymyśliłem w ten sposób (błądzę niczym pijane dziecko we mgle, więc mogą być głupoty :) ):
    Kod: c
    Zaloguj się, aby zobaczyć kod