Data --> Modulated squre wave ???


Closed Thread
Results 1 to 3 of 3
  1. #1
    Join Date
    Aug 2007
    Posts
    67

    Question Data --> Modulated squre wave ???

    I've got a very unique problem and not sure how to approach it. I've been writing code for a while, but new to the PIC.

    I'm watching for a very spurratic pulse of data from an existing product which must be relayed in near real time over a radio link. Sounds easy enough - my circuit will be clipped into an existing product to watch for the short pulse (will last about 3 microseconds, plenty long enough to register on I/O pin of the PIC). The PIC will then drive a pin on a radio transmitter, and a reciever on the other end will feed the pin transition into a second PIC and do something.

    Easy.

    Trouble is, in order to maintain the fast response I need on the other end, the radio transmitter must transition every couple milliseconds - I can't just let the receiver flat-line for minutes at a time waiting for this pulse to come over the radio. I have to drive the signal up or down every few milliseconds. Suffice to say it's a requirement of the radio modules I'm using.

    So I plan to put out a squre wave with a 4 millisecond period, and just toggle it on the Tx side when the input event happens. Again, easy.

    On the Rx side it gets more complicated.

    My best solution:

    Time the incoming "carrier squre wave" on the Rx which is expected to transition every 4 ms, and ignore that transition when it happens, as it is "expecting" the event, no action is taken. But if it transitions before the 4ms times out - it must be because the Tx has gotten the signal and toggled the output early, thus I can take action.

    That's beautiful except - there is some chance the "data" transition will occur at the exact same time as the planned transition and will be missed by the Rx.

    But actually in practice it wouldn't "mask" the data, what would actually happen (assuming a near exact time match) - is the "carrier" will toggle, then a few uS (much shorter to be broadcast by the radio) the data event will toggle again - so the Rx in effect *won't* see the expected transition which in itself would mark the data event has occured.

    Question 1:
    I go though all of that to ask: How accurate are these timers? How accurately can I predict this transiton event? As it's a radio signal and takes some time to transition, the radio wave itself may introduce 2 to 3 uS of "slop" into the transition time, even if the Tx PIC hits it right on the nose of a perfect 4mS for each time. So the logic of the Rx needs to accept the transition happening a bit before or after the actual expected instant (again +/- maybe 4 uS).

    Question 2:
    If I understand the PIC correctly, I can kick off a Pulse-Width-Modulate PWM in my code to drive a pin's pulse and transition at a specific interval then leave it - go and run the rest of my code and the PIC won't pause to check or count or anything - it'll just use one of it's internal timers and "multi-task" the pulse up and down in the background - so I can just turn it on, and walk away from it.

    And it's further my understanding that if I "toggle" the same pin that the PWM is using, the PWM will continue without skipping a beat, it will just reverse early but keep it's original timing... so for example I could set the PWM to transition every 1000 uS, and from the start of that pulse, my code could in effect toggle that pin 35 times during that 1000 uS, walk away and do something else, and it would still transition again from whatever state to the opposite state still exactly 1000 uS from the time the PWM started driving it.

    Question 3:
    Am I going about this all wrong? This is the most logical solution I've come up with. Point is, I've got to transtion the output every so often - it could be much shorter than the 4mS I propose, I just figure stretching it longer makes for less change of a "pulse overlap" of the planned transition - and however I work it, I need a very high chance of picking up the data event, and reacting to it as fast as possible.


    Thanks so much in advance - I know this is a broad quesiton. Not asking anyone to write me any code or anything, just consider my approach and clairify how accurate the timers are and the whole PWM in the background question.

    I've been reading the forum for a few weeks and it's awesome - you guys are very helpful to eachother - I've learned a lot in that time.

    Thanks!!!
    Last edited by kevj; - 25th August 2007 at 05:50. Reason: Type-o's

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    If I understand the project correctly your logic is "OK".

    Answer to question #1- Darrel Taylor posted a week or so ago a timer that tested to within 1 second in a 24 hour period. ( I do not have the link, search his post) So the timing can be made accurate enough.

    Question #2- I think you will want to use the Hardware PWM and an interrupt.

    Sequence of events (Flow Chart )
    PIC #1 is using the COUNT command to monitor incoming signal from existing product.
    If COUNT does not equal a pulse every 4ms GOTO SEND_RC.

    PIC #2 receives signal from PIC #1.
    PIC #2 does something.

    All the while the radio link is "HOT" so PIC #2 will be receiving data waiting fo a certain command. Use SERIN2 with the WAIT modifier.

    We can work on the details some more later if this is all correct.
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Aug 2006
    Location
    Omaha, Nebraska USA
    Posts
    263


    Did you find this post helpful? Yes | No

    Default

    I've worked with RF most of my life, so I have a question or two . . .

    What transmitter and receiver hardware are you using?

    On what radio frequency?

    Since you mention a period of 4 ms, I assume you will modulate your carrier at 250 Hz, yes?

    Are you using FSK (frequency-shift keying)?

    What is the shortest time period (the smallest window) in which two of the 3 us pulses are likely to occur? Is it likely to be as short as 4 ms?

    Is the entire information to be transmitted simply the fact that the 3 us pulse has occurred?

    Russ
    Russ
    N0EVC, xWB6ONT, xWN6ONT

    "Easy to use" is easy to say.

Similar Threads

  1. Using Nokia LCD
    By BobP in forum mel PIC BASIC Pro
    Replies: 300
    Last Post: - 3rd May 2018, 04:47
  2. Read/Write Problem
    By Tobias in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 10th February 2010, 01:51
  3. Big characters on HD44780 4x20
    By erpalma in forum mel PIC BASIC Pro
    Replies: 23
    Last Post: - 7th January 2007, 02:21
  4. LCD + bar graph
    By DynamoBen in forum mel PIC BASIC Pro
    Replies: 13
    Last Post: - 5th October 2005, 14:50
  5. Sinus calculating !
    By Don Mario in forum mel PIC BASIC Pro
    Replies: 29
    Last Post: - 28th November 2004, 23:56

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts