Instant Interrupts and HSERIN


Closed Thread
Results 1 to 27 of 27

Hybrid View

  1. #1
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Code:
    @   INT_DISABLE  RX_INT                                ; Disable RX Interrupt 
    hserin 100,timeout [databyte[1], databyte[2]]
    @   INT_ENABLE  RX_INT                                 ; Enable RX Interrupt
    @   INT_RETURN
    Take a quick look around the 1 and 2

  2. #2
    Join Date
    Feb 2005
    Location
    Essex, UK
    Posts
    94


    Did you find this post helpful? Yes | No

    Default Will give it a go

    Quote Originally Posted by skimask View Post
    Code:
    @   INT_DISABLE  RX_INT                                ; Disable RX Interrupt 
    hserin 100,timeout [databyte[1], databyte[2]]
    @   INT_ENABLE  RX_INT                                 ; Enable RX Interrupt
    @   INT_RETURN
    Take a quick look around the 1 and 2
    Hi Skimask,

    thanks for the reply. I will try with square brackets tomorrow. I started using round brackets for array addressing when inside a square bracket statement, like HSERIN, a short while ago after reading a post by Darrel. I will try the square brackets tomorrow and let you know if it makes any difference

    Cheers

    Rob

  3. #3
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Rob View Post
    Hi Skimask,
    thanks for the reply. I will try with square brackets tomorrow. I started using round brackets for array addressing when inside a square bracket statement, like HSERIN, a short while ago after reading a post by Darrel. I will try the square brackets tomorrow and let you know if it makes any difference
    Cheers
    Rob
    I just found that post myself. Weird...
    The ONLY time I use round brackets is when define precedence.

  4. #4
    Join Date
    Feb 2005
    Location
    Essex, UK
    Posts
    94


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    I just found that post myself. Weird...
    The ONLY time I use round brackets is when define precedence.
    Yeah, I thought it was weird myself! I hope it is as simple as this but Darrel's not normally wrong.

    I will update this thread tomorrow - I have to say it's frustrated me more than a rubik's cube!

    Rob

  5. #5
    Join Date
    Feb 2005
    Location
    Essex, UK
    Posts
    94


    Did you find this post helpful? Yes | No

    Default

    Oops - my post just crossed with Darrel's - thanks for the replies - I will try your example tomorrow Darrel and see what's occurring (hopefully!)

    Cheers

    Rob
    Last edited by Rob; - 10th March 2008 at 20:40. Reason: Removed Quote

  6. #6
    Join Date
    Mar 2006
    Location
    Pennsylvania, USA.
    Posts
    130


    Did you find this post helpful? Yes | No

    Default

    Rob,

    Have you tried the str with hserin? Hserin[str time\7] will (should,) grab seven bytes, I've used this with Darrel's Instant Interrupts to capture over forty bytes without problem.

    Jerry.
    If your oscilloscope costs more than your car...

  7. #7
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Yup, Square brackets will cause an error when they are inside other square brackets.

    There's no need to DISABLE/ENABLE inside the handler. An interrupt source can't interrupt itself like it would in ON INTERRUPT.

    But I think what's happening is that the handler is being called multiple times before the rest of the program see's the data.

    As a test, try something like this ...
    Code:
    hserin 100,timeout [databyte(1), databyte(2)]
    @   INT_DISABLE  RX_INT                                ; Disable RX Interrupt 
    @   INT_RETURN
    This should return the first 2 bytes then disable the RX_INT.
    The USART will overflow and stop working after that unless it is re-enabled quickly.

    I'm not saying this is the way to properly receive data in an interrupt.
    It's just a test to help understand what's going wrong.
    <br>
    DT

  8. #8
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Yup, Square brackets will cause an error when they are inside other square brackets.
    Obviously, haven't checked all cases, but I've got this line with square-in-square and works ok:
    Code:
    lcdchardata[ lcdcharloop + 1 ] = font [ ( lcdchardata[0] * 5 ) + lcdcharloop ]
    But it's also got a variable inside parenthesis...maybe that's the kicker...

  9. #9
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Following up on the Square brackets vs Round brackets ...

    I honestly thought it was a PBP problem.
    But with further investigation, I've found it to be a MicroCode Studio problem that only happens during an ICD compile.

    Possibly first discovered by Bruce.
    http://www.picbasic.co.uk/forum/showthread.php?p=23772

    Which means that it only comes into play with HSEROUT/IN statements.

    So I guess it's still a good idea to use Round brackets inside Square brackets, in case you ever plan on using the ICD.
    But it also looks better for the programs that won't.

    HTH,

    EDIT: Good timing ski.
    Last edited by Darrel Taylor; - 10th March 2008 at 23:53. Reason: ski's timing
    DT

  10. #10
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Following up on the Square brackets vs Round brackets ...
    I honestly thought it was a PBP problem.
    But with further investigation, I've found it to be a MicroCode Studio problem that only happens during an ICD compile.
    Aha! Good call! Which is one of the possibilities I haven't explored....I don't use an ICD...well, I do, but it's basically ON DEBUG with a serial LCD backpack...Invaluable...everybody should have one....maybe two...

  11. #11
    Join Date
    Feb 2005
    Location
    Essex, UK
    Posts
    94


    Did you find this post helpful? Yes | No

    Default

    Hi Darrel,

    thanks for your help on this one - it really had me stumped!

    There's no need to DISABLE/ENABLE inside the handler. An interrupt source can't interrupt itself like it would in ON INTERRUPT.
    Cool - I didn't realise that!


    But I think what's happening is that the handler is being called multiple times before the rest of the program see's the data.

    As a test, try something like this ...
    Code:
    hserin 100,timeout [databyte(1), databyte(2)]
    @   INT_DISABLE  RX_INT                                ; Disable RX Interrupt 
    @   INT_RETURN
    This should return the first 2 bytes then disable the RX_INT.
    The USART will overflow and stop working after that unless it is re-enabled quickly.
    I have tried what you asked me to above and it works every time! I've got it capturing all the bytes now by:
    Code:
    hserin 100,timeout, [databyte(0), databyte(0), databyte(1), databyte(2), databyte(3), databyte(4), databyte(5)]
    @   INT_DISABLE  RX_INT
    (the duplicate; databyte(0), databyte(0), just removes the $FD as I don't need it)


    I'm not saying this is the way to properly receive data in an interrupt.
    It's just a test to help understand what's going wrong.
    <br>
    I'm now trying to re-enable the interrupt at some point after the data has been read by the rest of the program but it's not working at the moment. I will keep trying and update this thread later.

    Cheers to all

    Rob

  12. #12
    Join Date
    Feb 2005
    Location
    Essex, UK
    Posts
    94


    Did you find this post helpful? Yes | No

    Default

    Right, I was definitely being stupid!

    There were actually 8 bytes of data being sent (the colons aren't sent nor are the spaces or slashes);

    $FD SS:MM:HH DD/MM/YYYY

    This meant that RCIF was being set again by the extra YY before I was doing anything with the data in my program. Thanks very much Darrel, I wouldn't have found this if you hadn't pointed me in the right direction.


    Darrel, this is for a small project for my work and I was wondering if you would allow me to include your code in the finished item please? I know you've said to people in the past that they could but I thought I had better ask out of courtesy. I know you say keep the internet free, but obviously hosting your webpage costs YOU money so I wondered if you had anywhere to donate to help with these costs? I can't find anywhere on your webpage.

    Cheers

    Rob

  13. #13
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Of course, you can use it to your hearts content.

    The only thing I ask of anyone is....
    "Don't remove my name and act like you wrote it."

    Not saying you would, that's just my only rule.<hr>
    Thank you for the offer of donation.

    I really don't need the money, but if you wanted to make me feel like my program was worth it ...
    Find you're local school for blind children. Every city has at least one.
    Toss them a few bucks. Doesn't have to be alot.

    Show me the receipt, and I'll rewrite your program for you, because it's still got some problems to be worked out in that RX handler.
    <br>
    DT

  14. #14
    Join Date
    Feb 2005
    Location
    Essex, UK
    Posts
    94


    Did you find this post helpful? Yes | No

    Thumbs up

    Quote Originally Posted by Darrel Taylor View Post
    Of course, you can use it to your hearts content.

    The only thing I ask of anyone is....
    "Don't remove my name and act like you wrote it."
    Thanks very much! Rest assured - I won't remove your name from it - you deserve massive credit for the hard work you've put into it!


    I really don't need the money, but if you wanted to make me feel like my program was worth it ...
    Find you're local school for blind children. Every city has at least one.
    Toss them a few bucks. Doesn't have to be alot.

    Show me the receipt, and I'll rewrite your program for you, because it's still got some problems to be worked out in that RX handler.
    <br>
    I REALLY WILL have a look for our local school for blind children (not because I want you to re-write my program though!).

    Thanks again

    Rob

  15. #15
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    That has to be one of the most kind hearted things I've heard in a long time. Just confirms what I've always thought you were like Darrel..;o}

    I will make an offer here too since kids are my favorite people. Fax or email me a copy of this, along with proof-of-purchase for PBP (gotta do the distributor thing you know), and I'll make sure you receive the next 2 new releases of PBP on CD free of charge.

    Just let me know which new version you want, and it's on the way..;o}

    P.S. Darrel will also get 2 new releases.
    Last edited by Bruce; - 11th March 2008 at 21:45.
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

Similar Threads

  1. Hserin with Instant Interrupts.
    By ronjodu in forum Serial
    Replies: 17
    Last Post: - 30th December 2014, 20:17
  2. HSerin problems on power up
    By Luckyborg in forum Serial
    Replies: 8
    Last Post: - 21st April 2009, 19:49
  3. TMR0 interrupt and HSERIN
    By boban in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 2nd September 2008, 11:48
  4. Usbin and hserin
    By mpardinho in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 27th October 2007, 15:26
  5. HserIn and Interrupts
    By rwskinner in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 5th December 2006, 07:15

Members who have read this thread : 0

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