View previous topic :: View next topic |
Author |
Message |
aaronik19
Joined: 25 Apr 2011 Posts: 297
|
int RDA |
Posted: Sun May 17, 2015 2:12 pm |
|
|
dear friends,
I am using Serial interface RS232 and I want to make interrupt when receiving data. The data received is just numbers such as
if receive 32 output_high PIN_D1
if receive 6 output_high PIN_D2
if receive 19 output_high PIN_D3
at the moment my code is:
Code: | #INT_RDA
void RDA_isr(void)
{
input2 = getc();
if (input2 = 4)
{
printf("I received signal on PIC18F4520");
output_toggle(PIN_E1);
}
} |
With the above code, when I send "2" the interrupt is being triggered as well and the printf is being executed and the LED toggles. Where I have mistake? I am using PIC18F4520 crystal 20MHz. |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1933 Location: Norman, OK
|
|
Posted: Sun May 17, 2015 3:01 pm |
|
|
First, you have been in this group long enough to know first off that you
don't PRINT inside of an ISR, we have repeated that here at least 100 times...
Second, you are comparing to the integer four not the ASCII four.
AND Third, (the root cause of your complaint) you are assigning (=) instead of
comparing (==) so it will be true every time. _________________ Google and Forum Search are some of your best tools!!!! |
|
|
aaronik19
Joined: 25 Apr 2011 Posts: 297
|
|
Posted: Sun May 17, 2015 3:12 pm |
|
|
This was just a test...this is not the actual program. Thats why i used print to know that the interrupt is executed.
when i made the == nothing happened. |
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
|
Posted: Sun May 17, 2015 3:51 pm |
|
|
aaronik19 wrote: | ...
when i made the == nothing happened. |
Of course not. You've just been told why.
Try testing the received data to see what you're comparing against.
Mike |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9221 Location: Greensville,Ontario
|
|
Posted: Sun May 17, 2015 6:49 pm |
|
|
re: ...
when I send "2"...
WHAT do YOU consider to be a "2" ? HOW did you send this "2"?
There is of course a BIG difference between an ASCII "2" and a 'real' "2". Well not that big, just 30x or 48 decimal.
Jay |
|
|
ezflyr
Joined: 25 Oct 2010 Posts: 1019 Location: Tewksbury, MA
|
|
Posted: Mon May 18, 2015 10:54 am |
|
|
Hi,
Seriously, this seems more like a lack of proper troubleshooting than anything else! For example, if you had simply done something like this, I don't think you'd be so in the dark about what's going on:
Code: |
#INT_RDA
void RDA_isr(void)
{
input2 = getc();
printf("Rcv. Char.: %c\n\r", input2);
if (input2 = 4)
{
output_toggle(PIN_E1);
}
}
|
Now, the printf inside the ISR actually does something useful, and provides you with some information about what the PIC is actually receiving! Of course, once you figure this out, don't leave the printf statement inside the ISR.
John |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1933 Location: Norman, OK
|
|
Posted: Mon May 18, 2015 11:43 am |
|
|
Of course you should understand by now we are giving you hints trying to
make you think. Hoping you can figure out some of this for yourself and
learn rather than handing you the answers and you won't learn near as
much. However, so some reason you don't seem inclined to think for
yourself....you are not even paying full attention to what we are telling you.
You have been in this forum for 4 years now and much of this you should
know by now. _________________ Google and Forum Search are some of your best tools!!!! |
|
|
aaronik19
Joined: 25 Apr 2011 Posts: 297
|
|
Posted: Mon May 18, 2015 11:38 pm |
|
|
Dear all, sorry for my late reply but i was without internet whole day yesterday and was unable to give reply. I found my mistake last sunday and rectified the problem immediately and worked.
Dyeatman, please stop to be personal to me. I am not full time on c, i am learning on my own and if i ask question that does not mean that i am not searching for information. If you do not want to help me, it up to you, but at least do not post personal message that i am not thinking for myself. For you some questions are "silly" but i am sure that these are questions which might be helpful for beginners. |
|
|
|