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.

[RC-5] Programowanie na RS232- linia RTS, CTS

09 Kwi 2012 18:21 3512 10
  • Poziom 15  
    Witam!
    Czy ktoś ma pojęcie, czy da się kluczować diodę nadawczą IR poprzez linię CTS, bądź RTS portu COM?
    Standard RC-5 mówi o częstotliwości 36kHz. Pamiętajmy, że nie pytam o linię RX i TX, a linie CTS, bądź RTS, więc (wydaje mi się) baudrate COM-a nie powinien mieć nic do rzeczy.

    Chodzi o to, że kupiłem lipny konwerter DVB MPEG4 (drugi pilot, który mi się zepsuł).
    Pilota z osobna nie da się dokupić. Znalazłem drugiego, na którym działają niektóre funkcje. Chciałbym napisać aplikację, którą wyszukałbym sobie pozostałe klawisze i potem ewentualnie zrealizował pilot na mikrokontrolerze. Na początek chciałbym zrobić proste podłączenie diody nadawczej poprzez rezystor do nóżki CTS, bądź RTS, bądź jak inaczej zaproponujecie, ale nie wiem, czy zdołają one włączać/gasić diodę z taką częstotliwością.

    Najlepiej anodę pod CTS, a katodę przez rezystor do DTR. CTS włączony na stałe i kluczowanie poprzez DTR(prawidłowo wedle standardu RC-5).
  • Poziom 39  
    A nie prościej kupić uniwersalny pilot i zaprogramować go kodami, które masz, a najlepiej przy pomocy oryginalnego pilota, jeśli byś miał?

    Albo jeszcze inaczej - jakaś mała(tania) ATMEGA/ATTINY + bascomowa interpretacja I2C + dioda (układ tylko do wygenerowania pozostałych kodów).

    Realizacja pilota z portu RS to moim zdaniem pomyłka.
  • Poziom 27  
    Programowe wygenerowanie 36kHz na PC-cie będzie trudne bez obsługi przerwań. Jeżeli się upierasz, to pod Windows jest funkcja EscapeCommFunction, do której podajesz jeden z kodów: CLRDTR,SETDTR,CLRRTS,SETRTS,SETXOFF,SETXON,SETBREAK,CLRBREAK.
    Eventualnie funkcją DeviceIoControl wyślij kody (reszta w ntddser.h) IOCTL_SERIAL_SET_BREAK_ON (OFF), IOCTL_SERIAL_SET_DTR, IOCTL_SERIAL_CLR_DTR, IOCTL_SERIAL_SET_RTS, IOCTL_SERIAL_CLR_RTS, IOCTL_SERIAL_SET_XOFF, IOCTL_SERIAL_SET_XON.

    Prostym i uniwersalnym wyjściem jest wygenerowanie pliku wav (samplerate=2*36kHz). Odtwarzając go "przez diodę" podłączoną do wyjścia słuchawkowego, można symulować pilota małej mocy, o zasięgu metr, pół metra.
  • Poziom 15  
    W Visual Studio jest komponent SerialPort i zauważyłem tam takie funkcje- zdaje mi się, że nie muszą w przerwaniach chodzić. Pytanie, czy da radę przełączać linię z szybkością 36 kHz.

    Co do wyjścia słuchawkowego to raczej wolałbym prostokąt niż sinusoidę. Podejrzewam, że transmisja byłaby bardzo kulawa.

    Dodano po 32 [minuty]:

    mickpr napisał:
    A nie prościej kupić uniwersalny pilot i zaprogramować go kodami, które masz, a najlepiej przy pomocy oryginalnego pilota, jeśli byś miał?

    Albo jeszcze inaczej - jakaś mała(tania) ATMEGA/ATTINY + bascomowa interpretacja I2C + dioda (układ tylko do wygenerowania pozostałych kodów).

    Realizacja pilota z portu RS to moim zdaniem pomyłka.


    Pilot oryginalny padł. A RS to innowacyjna metoda.
  • Poziom 39  
    marnowak napisał:
    W Visual Studio jest komponent SerialPort i zauważyłem tam takie funkcje- zdaje mi się, że nie muszą w przerwaniach chodzić. Pytanie, czy da radę przełączać linię z szybkością 36 kHz.

    Jak myślisz - od czego jest ten komponent? Bo ja jestem pewny, że na pewno nie od sterowania diodą IR na porcie RS-232.

    marnowak napisał:

    Pilot oryginalny padł. A RS to innowacyjna metoda.

    Z tą innowacyjnością przesadziłeś...
    Pewnie, gdyby się uprzeć - można to zrobić, pytanie tylko czy gra jest warta świeczki. Skoro ty z uporem maniaka chcesz "wynaleźć po raz tysięczny koło", to tylko pozostaje życzyć pomyślności...
  • Poziom 15  
    Nie o to pytałem.
  • Poziom 15  
    mickpr napisał:
    marnowak napisał:
    W Visual Studio jest komponent SerialPort i zauważyłem tam takie funkcje- zdaje mi się, że nie muszą w przerwaniach chodzić. Pytanie, czy da radę przełączać linię z szybkością 36 kHz.

    Jak myślisz - od czego jest ten komponent? Bo ja jestem pewny, że na pewno nie od sterowania diodą IR na porcie RS-232.

    marnowak napisał:

    Pilot oryginalny padł. A RS to innowacyjna metoda.

    Z tą innowacyjnością przesadziłeś...
    Pewnie, gdyby się uprzeć - można to zrobić, pytanie tylko czy gra jest warta świeczki. Skoro ty z uporem maniaka chcesz "wynaleźć po raz tysięczny koło", to tylko pozostaje życzyć pomyślności...


    SerialPort.DtrEnable Property
    Gets or sets a value that enables the Data Terminal Ready (DTR) signal during serial communication.

    SerialPort.RtsEnable Property
    Gets or sets a value indicating whether the Request to Send (RTS) signal is enabled during serial communication.

    O te mi chodziło funkcje z komponentu SerialPort. Martwi mnie tylko dopisek "during serial communication". Nie wiem, czy od razu wystawi stan na linie, czy tylko w określonych warunkach(czytaj podczas transmisji przez RX i TX). Jeśli robi to niezależnie od transmisji, to czy prędkość transmisji ma znaczenie i czy dam radę robić enable i disable z częstotliwością 36 kHz(częstotliwość chcę uzyskać poprzez sleep, bądź delay).
  • Poziom 15  
    A ja nie.
    Odbiornik do Girdera
    Kiedyś konstruowałem taki odbiorniczek do Girder-a. Mogłe sterować dowolną aplikacją Windows dowolnym pilotem. Tu linią odbiorczą danych jest linia DSR. Sygnały RX i TX są kompletnie nieużywane. Sygnał RTS ustawiany jest na "1", aby zasilić odbiornik IR. Ja chcę podłączyć diodę nadawczą pod RTS i ustawiać "1" i "0" w odpowiednich odstępach czasowych. Jako zabezpieczenie mogę podłączyć równolegle do diody 3 diody 1N4148(obniżenie napięcia do 2.1V z 15V. Powiedzmy, że jeszcze jedną trójkę z odwrotną polaryzacją, która dla "0" da -2.1V, co zabezpieczy diodę IR przed spaleniem).
    Od samego początku pytanie brzmi, czy da radę kluczować sygnał RTS z częstotliwością 36kHz?

    Albo wedle schematu z linku, który podałeś. Autor pisze, że jest to możliwe, więc chyba da radę :)
  • Poziom 39  
    Ja również zrobiłem Girder na COM - (kto nie robił). Tylko zauważ, że przy odbieraniu - odbiornik podczerwieni sam "demoduluje" sobie sygnał (jeśli można tak powiedzieć). Więc 36 kHz nie ma tutaj znaczenia.
    Może zamiast generować programowo 36 kHz zbuduj generator 36kHz i napięcie wyjściowe z niego kluczuj (programowo).
  • Poziom 15  
    Problem rozwiązany.
    Instrukcje EscapeCommFunction(Com_handle,SETDTR); oraz EscapeCommFunction(Com_handle,CLRDTR);. Dla tych instrukcji nie trzeba konfigurować portu- trzeba go tylko otworzyć.
    Port nie daje rady się kluczować programowo z częstotliwością 36 kHz, czy też 38 kHz. Zbudowałem generator na NE555 i kluczuję go linią DTR.

    PS. Okazało się, że pilot nadaje w standardzie NEC. Oto mały filmik demonstrujący jego działanie: http://youtu.be/wVvY_cO7ZXs