We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi, I am trying to use Interrupt to check if a key has been pressed on the key pad for this i just wrote a sample code to test it out but i am having the following difficulty
*** WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_IPRINT?BKMAIN CALLER1: ?PR?INTER0?BKMAIN CALLER2: ?C_C51STARTUP ***ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 001BH Program Size: data=181.6 xdata=0 code=17362 Target not created
Now i am using many functions where i am calling the same function but it is not giving me an error there what can i do to avoid this error
The error comes when i include the following code
void Inter0 (void) interrupt 0 { clear(); init1();init1(); iprint("Inside Interrupt"); }
iprint is a display function which is
void iprint(char *aaa){ unsigned int i=0; for(;aaa[i]!=0;i++)display(aaa[i]); }
if i write the code like this
void Inter0 (void) interrupt 0 { clear(); init1();init1(); display('a'); }
It dose not give me any error. and the code compiles properly
Hi David,
Sorry for the late reply but i'm from india and for me your input came in the night. I am not so good with interrupts as you might have seen from my code. How do I use the ISR to collect data ? should i give the data pin to an interrupt?.
Thanks. Ajay
Hi,
Assuming you are talking about collecting Wiegand data:
If you have the CPU resources available, one way would be to connect D0 to INT0 (P3.2) and D1 to INT1 (P3.3). Depending upon your hardware, you may need to invert the signals.
Configure both inputs as edge interrupts.
When an interrupt occurs:
1 - Add a ZERO or a ONE to an accumulation buffer (depending upon which interrupt occured) 2 - Increment a 'bit received' count 3 - If all data has been received, disable the interrupt(s) and set a flag to say 'acquisition complete'
This is a similar technique to one I have used on a number of platforms with a number of CPU cores - Although I have various other checks to ensure that it is completely resilient to all predicted possible situations. For example, you may want to include a timeout check to ensure that the acquisition does not wait forever if a bit is unexpectedly missed.
Hope this helps,
David.
Thats will work, i think, i will try it out and yes i mean Wiegand data, sorry about the spelling mistake i'm weak at English. Thank You very much. Ajay
"Wiegand" sounds more like German to me!
;-)
You never know it might have been a German who thought of it and named it after his son :))))