Interrupt Driven Question of Support
-
- Posts: 7
- Joined: Wed Feb 15, 2012 1:49 pm
- Contact:
Interrupt Driven Question of Support
Often when using a UART, receiving data requires an interrupt to keep its receiver empty. This usually includes stuffing any data into a ring buffer. Polling (which I think is what's used in the RS-232 object available as a standard component) can be used when throughput is low enough. To create this RX macro does Flowcode give me any direct support, like easy access to the micro's predefined registers or am I essentially writing all the code without any 'help' from the Flowcode app? While an RX interrupt service routine and ring buffer may actually be two separate macros, I think you get my drift.
Trying to stay within the ?limits? of Flowcode. As an alternative to UART polling might I place the UART poll into a timer interrupt and have that interrupt build a string out of characters as they arrive. I could then look at that string in my main loop whenever I choose. Of course this assumes I will be able to empty the string before it gets full or at least put up with lost characters. This sounds like a kludge, but might allow writing the macro without external coding.
Trying to stay within the ?limits? of Flowcode. As an alternative to UART polling might I place the UART poll into a timer interrupt and have that interrupt build a string out of characters as they arrive. I could then look at that string in my main loop whenever I choose. Of course this assumes I will be able to empty the string before it gets full or at least put up with lost characters. This sounds like a kludge, but might allow writing the macro without external coding.
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Interrupt Driven Question of Support
Hello,
Flowcode v4 and v5 allow for the UART receive interrupt to be supported directly in your flowchart. I have made many applications using circular buffers to store data as it is coming in for processing later on.
I can provide you with a quick example in Flowcode if you wish. Are you using v4 or v5?
Flowcode v4 and v5 allow for the UART receive interrupt to be supported directly in your flowchart. I have made many applications using circular buffers to store data as it is coming in for processing later on.
I can provide you with a quick example in Flowcode if you wish. Are you using v4 or v5?
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
-
- Posts: 7
- Joined: Wed Feb 15, 2012 1:49 pm
- Contact:
Re: Interrupt Driven Question of Support
Ben,
Thanks for the quick reply. Although this was more of a question of supporting capabilities of Flowcode, I always find it educational to view another's code. I am presently reviewing V5. If I'm going to use a product that is touted to simplify my coding efforts and I have to spend half my time coding pieces of a puzzle that I will then be able to build easily, it kind of defeats the purpose. Thanks again for your quick input.
Thanks for the quick reply. Although this was more of a question of supporting capabilities of Flowcode, I always find it educational to view another's code. I am presently reviewing V5. If I'm going to use a product that is touted to simplify my coding efforts and I have to spend half my time coding pieces of a puzzle that I will then be able to build easily, it kind of defeats the purpose. Thanks again for your quick input.
-
- Posts: 7
- Joined: Wed Feb 15, 2012 1:49 pm
- Contact:
Re: Interrupt Driven Question of Support
Hey Ben, I guess you can officially consider this a request to see how you've handled this.
--jeff
--jeff
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Interrupt Driven Question of Support
Hello,
Here is a basic example of a circular buffer system.
Here is a basic example of a circular buffer system.
- Attachments
-
- circular_buffer.fcf
- (11.09 KiB) Downloaded 1049 times
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
-
- Posts: 7
- Joined: Wed Feb 15, 2012 1:49 pm
- Contact:
- Enamul
- Posts: 1772
- Joined: Mon Mar 05, 2012 11:34 pm
- Location: Nottingham, UK
- Has thanked: 271 times
- Been thanked: 814 times
- Contact:
Re: Interrupt Driven Question of Support
Hi Ben,
That's very useful. I should have notice this earlier. It's help a lot to concentrate it other stuff while reading from RS232.
That's very useful. I should have notice this earlier. It's help a lot to concentrate it other stuff while reading from RS232.
- jollybv
- Flowcode v5 User
- Posts: 374
- Joined: Thu Feb 12, 2009 5:20 am
- Location: Cape Town
- Has thanked: 81 times
- Been thanked: 25 times
- Contact:
Re: Interrupt Driven Question of Support
Hi guys
Im trying to understand this circular buffer you have a calculation in rx_uart (test = (rx_end + 1) MOD max_size) i understand the first half but do not understand the MOD is it a formula in flowcode and the other thing i don't understand is the variable rx_data [100] is it 100 veritable one for each character received buy the uart. Is there some place i can find all the different formula's for flowcode.
Brian
Im trying to understand this circular buffer you have a calculation in rx_uart (test = (rx_end + 1) MOD max_size) i understand the first half but do not understand the MOD is it a formula in flowcode and the other thing i don't understand is the variable rx_data [100] is it 100 veritable one for each character received buy the uart. Is there some place i can find all the different formula's for flowcode.
Brian
-
- Flowcode v5 User
- Posts: 211
- Joined: Tue Feb 19, 2013 9:51 pm
- Has thanked: 72 times
- Been thanked: 177 times
- Contact:
Re: Interrupt Driven Question of Support
Hello Benj,
Could you please post a V4 version of circular_buffer.fcf. I have an application using the rs232 component where a lot of data is streaming out of a PC which is updated every 1/10 of a second to a series of PIC's. Unfortunately, sometimes a byte gets dropped. A buffer method might solve my problem. I Thank you in advance for your help.
Could you please post a V4 version of circular_buffer.fcf. I have an application using the rs232 component where a lot of data is streaming out of a PC which is updated every 1/10 of a second to a series of PIC's. Unfortunately, sometimes a byte gets dropped. A buffer method might solve my problem. I Thank you in advance for your help.
- jollybv
- Flowcode v5 User
- Posts: 374
- Joined: Thu Feb 12, 2009 5:20 am
- Location: Cape Town
- Has thanked: 81 times
- Been thanked: 25 times
- Contact:
Re: Interrupt Driven Question of Support
Hello Benj
I am trying to understand this circular buffer what I'm doing is sending 6 characters e.g. @=(123)* the at is the start bit the = is wait to revive data then the next 3 characters are the data and the * is the end Char. what i'm having a problem is how do i take the 3 bits rx_uart 2, 3 & 4 (hex 49, 50, 51) converting it to (123)and combining all 3 variables to a number 123 that i can store in eeprom
thanks
Brian
I am trying to understand this circular buffer what I'm doing is sending 6 characters e.g. @=(123)* the at is the start bit the = is wait to revive data then the next 3 characters are the data and the * is the end Char. what i'm having a problem is how do i take the 3 bits rx_uart 2, 3 & 4 (hex 49, 50, 51) converting it to (123)and combining all 3 variables to a number 123 that i can store in eeprom
thanks
Brian
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Interrupt Driven Question of Support
Hi Brian,
MOD also known as the C constructor % is basically performing a modulus operation, its a bit like saying this is the maximum rollover value so:
3 mod 5 = 3
4 mod 5 = 4
5 mod 5 = 0
6 mod 5 = 1
7 mod 5 = 2
The Rx_Data[100] is basically an array of 100 elements each with the same properties as the singular variable.
All the Flowcode functions and syntax should be available in the tabs of the calculation icon.
Converting an ASCII value into decimal is quite simple. For a number you would subtract '0' with the single quotes from the incoming ASCII data and this would give you the decimal value. You could use 48 decimal instead of '0'.
e.g.
'0' - '0' = 0
'1' - '0' = 1
...
'9' - '0' = 9
You would then combine the number into a variable like this.
total = units
total = total + (tens * 10)
total = total + (hundreds * 100)
If I get ten mins later today I will look into creating a v4 rolling buffer example.
MOD also known as the C constructor % is basically performing a modulus operation, its a bit like saying this is the maximum rollover value so:
3 mod 5 = 3
4 mod 5 = 4
5 mod 5 = 0
6 mod 5 = 1
7 mod 5 = 2
The Rx_Data[100] is basically an array of 100 elements each with the same properties as the singular variable.
All the Flowcode functions and syntax should be available in the tabs of the calculation icon.
Converting an ASCII value into decimal is quite simple. For a number you would subtract '0' with the single quotes from the incoming ASCII data and this would give you the decimal value. You could use 48 decimal instead of '0'.
e.g.
'0' - '0' = 0
'1' - '0' = 1
...
'9' - '0' = 9
You would then combine the number into a variable like this.
total = units
total = total + (tens * 10)
total = total + (hundreds * 100)
If I get ten mins later today I will look into creating a v4 rolling buffer example.
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Interrupt Driven Question of Support
Hi Brian,
Sorry was responding to Kenrix's question...
Sorry was responding to Kenrix's question...
Could you please post a V4 version of circular_buffer.fcf.
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
- jollybv
- Flowcode v5 User
- Posts: 374
- Joined: Thu Feb 12, 2009 5:20 am
- Location: Cape Town
- Has thanked: 81 times
- Been thanked: 25 times
- Contact:
Re: Interrupt Driven Question of Support
Hi Benj
I sort of understand the circular buffer what i would like to know dose it only work with single bit transmission or can i send strings as well.
Regards
Brian
I sort of understand the circular buffer what i would like to know dose it only work with single bit transmission or can i send strings as well.
Regards
Brian