SERIN Timeout


Closed Thread
Results 1 to 16 of 16

Thread: SERIN Timeout

Hybrid View

  1. #1
    Join Date
    Oct 2005
    Location
    New Zealand
    Posts
    171


    Did you find this post helpful? Yes | No

    Default

    Thanks - but even with the next renamed (cos next is a reserved word) it comes up with compilation errors cos there are 3 things on the timeout label where there should only be 2. The issue is, because it's a radio connection there is static whenever there is not a radio transmission, PBP sees this as potential data, and if not met by the qualifier then it just loops to the beginning of the command again - so long as it's seeing these pin fluctuations and doing this loop, it will not timeout.

    I also figure that I can't use the ON INTERUPT command - because that only works when a PBP statement is complete and the SERIN command will never complete if it doesn't get a qualifier and gets RF staic noise through all the time.

    BTW I forgot to mention the PIC I'm using is a PIC16F676
    Last edited by George; - 19th March 2007 at 23:03.

  2. #2
    Join Date
    Oct 2005
    Location
    New Zealand
    Posts
    171


    Did you find this post helpful? Yes | No

    Default

    I've now tried DT's interupt files - however I get a million errors - ie. not being able to fit variables - sigh
    ERROR: Variable wsave3 position request 416 beyond RAM_END 95.
    ERROR: Variable wsave2 position request 288 beyond RAM_END 95.
    ERROR: Variable wsave1 position request 160 beyond RAM_END 95.
    that sort of thing

    Any advice on how to do this would be greatly appreciated - I've just about pulled all my hair out!

    How do you do an interrupt in ASM for this simply so that it will come out of the serin command - increment a timing incrementation and go back to the serial loop it's stuck in?

    Thanks in advance
    Last edited by George; - 21st March 2007 at 23:05.

  3. #3
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by George View Post
    I also figure that I can't use the ON INTERUPT command - because that only works when a PBP statement is complete and the SERIN command will never complete if it doesn't get a qualifier and gets RF staic noise through all the time.

    BTW I forgot to mention the PIC I'm using is a PIC16F676
    Use a timeout just a bit longer than the length of the start bit at your baud rate and put it in a loop. If you get a SOLID start bit, then all should be well...if the start bit is flakely, it should timeout. That should let you use ON INTERRUPT alright, should is the key word

    Also, can you rewrite the code a bit on the sending unit? I'm thinking maybe some qualifying bytes sent before the actual data is sent might come in handy in a case like this. The qualifying bytes get a short timeout, the data gets a longer timeout, in seperate SERIN statements.

  4. #4
    Join Date
    Oct 2005
    Location
    New Zealand
    Posts
    171


    Did you find this post helpful? Yes | No

    Default

    Hey skimask, Took me a while to understand what you are saying (am a bit slow this far into the week). I think what you are saying would work, tho I'm concerned tho that it would be a bit intermittant as far as timing goes - as your timing may be dependant on what's coming through the airwaves at the time.

    Currently I'm thinking about building a squelch circuit which will no doubt limit my range but should enable the serin timeout to work - tho i do think the ideal would be an assembly interupt.

  5. #5
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by George View Post
    Hey skimask, Took me a while to understand what you are saying (am a bit slow this far into the week). I think what you are saying would work, tho I'm concerned tho that it would be a bit intermittant as far as timing goes - as your timing may be dependant on what's coming through the airwaves at the time.

    Currently I'm thinking about building a squelch circuit which will no doubt limit my range but should enable the serin timeout to work - tho i do think the ideal would be an assembly interupt.
    Again, do you have access to the data sending unit? Can you change the code in that? I'll thinking you could eliminate the squelch circuit by just adding a load of preamble bytes before the data...
    Otherwise...a squelch circuit probably wouldn't work either since you have to break squelch, which takes time, which takes bytes, and so on...
    I'm still thinking on this one...

  6. #6
    Join Date
    Oct 2005
    Location
    New Zealand
    Posts
    171


    Did you find this post helpful? Yes | No

    Default

    Yeah, have written the code for the sender so can change that to whatever, I've got "READY" as my qualifier. I'm going to try your idea about using a very short timeout to see how it works 1-2ms I'm thinking at the moment - will be interesting if nothing else to see what effect it has on the time keeping. Thanks for all yr input so far

  7. #7
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by George View Post
    Yeah, have written the code for the sender so can change that to whatever, I've got "READY" as my qualifier. I'm going to try your idea about using a very short timeout to see how it works 1-2ms I'm thinking at the moment - will be interesting if nothing else to see what effect it has on the time keeping. Thanks for all yr input so far
    I just saw that your baud rate is 2400. That's .416 us per bit, a start bit is generally 1.5 bit lengths, which gives you .625us for a start bit. Timeout is limited to 1 ms minimum, it might work, it might not. You might end up waiting for READY, but only able to receive "EADY". I would think if you sent a string of qualifiers (bunch of $AA55's or the like), say 10 of them, wait until you have a solid 5 received, then you should be able to dispense with any timeouts because you signal is strong enough to get the qual's.

  8. #8
    Join Date
    Oct 2005
    Location
    New Zealand
    Posts
    171


    Did you find this post helpful? Yes | No

    Default

    I've got a string of 5 $AA preceeeding the READY, and haven't seemed to have much of a problem getting the data to the receiver - i send the data 5 times on a transmission to make fairly sure it gets through. I've got the timeout at 1ms toggling an LED to indicate to me when it's exiting out of the serin command - it's way random tho can tripout every half second or every 10 minutes. The issue I have is not so much transmitting the data - it's when no data is being transmitted

Similar Threads

  1. Serin timeout not working properly!
    By Megahertz in forum mel PIC BASIC Pro
    Replies: 26
    Last Post: - 1st January 2010, 20:56
  2. SERIN timeout
    By Del Tapparo in forum Serial
    Replies: 3
    Last Post: - 20th November 2007, 04:34
  3. 16F628A Serin timeout and Timer1
    By Rubicon in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 26th March 2006, 23:20
  4. SERIN SERIN2 Timeout
    By markedwards in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 23rd June 2005, 18:59
  5. SERIN & Timeout
    By BigWumpus in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 30th October 2004, 07:33

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