Hi Russ,
I don't see any way out of PLOOP.
Since it doesn't increment FRAME, it'll never make it to 240 or find a $FF in EEPROM.
<br>
Hi Russ,
I don't see any way out of PLOOP.
Since it doesn't increment FRAME, it'll never make it to 240 or find a $FF in EEPROM.
<br>
DT
Untested, but something like this will probably work. Designed to be called from a timer interrupt.
Code:Gosub ReadKey If Key = Pressed THEN IF KeyPressedFlag = 0 THEN KeyCounter = KeyCounter + 1 IF KeyCounter > DebouncePeriod THEN KeyCounter = 0 KeyPressedFlag = 1 GOSUB Routine_for_KeyPressed ENDIF KeyDownCounter = KeyDownCounter + 1 IF KeyDownCounter > ToleranceLimit then HSEROUT ["Dummy, Get off the key!"] ENDIF ELSE KeyCounter = 0 KeyPressedFlag = 0 KeyDownCounter = 0 GOSUB Routine_for_KeyReleased ENDIF
Charles Linquist
Russ
N0EVC, xWB6ONT, xWN6ONT
"Easy to use" is easy to say.
Here's an example of one of many different attempts.
When the flag is 1, it works just fine.
When the flag is 0, it works fine when there is no data present (the first byte read is $FF). As long as the switch is held down, it flashes the LED one way; when it is released, the LED goes back to its "idle" condition.
For any other data present, it sometimes seems to go directly to PLEXIT; other times, it works as it should.
In fact, I'm playing with it now. On one attempt (with data present), it seems to jump directly to PLEXIT; on the next, it plays back the data. Then the cycle starts over again: One wrong response, one correct one. Time after time.
Russ
N0EVC, xWB6ONT, xWN6ONT
"Easy to use" is easy to say.
Hi Russ,
I remember back in the early nineties making a 3 wire timer the 3 wires being hot ground and load. When you activated the timer by momentarily switching power to the load the timer would activate and hold power on the load for 15 seconds. The circuit used a transistor and a capacitor to feed the base and a 555 timer and another transistor to carry the load. My point is maybe you could use a capacitor on your inputs, when it charges up it drops the load and requires you to release the switch to reactivate.
If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
.
Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
.
There simply is no "Happy Spam" If you do it you will disappear from this forum.
Hi, Russ
I remember having had similar issues some years ago whith a 16F628 ...
IF THEN tests didn't work at all ... whether the condition result.
Was for a R/C failsafe sequence ... rather annoying, indeed.
I just got out of that by re-organizing my subs ( that were called by goto's ...) a bit more "rationnaly" ...
May be posts are not fallen into Archives yet ... ( I'll dig somewhat ... )
Alain
PS: Got it ... but hurry up !!! I Won't be able to post a lot until it passes the limit ... lol
http://www.picbasic.co.uk/forum/showthread.php?t=1952
Last edited by Acetronics2; - 6th February 2009 at 10:05.
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Joe, the switch drives an optoisolator which in turn drives the PIC input (GPIO.3 configured as input, not MCLR). (I've looked at the switch and the output from the opto on the scope; there's not much bounce.)
Alain, my general arrangement of the program is:
PROGRAM (things done at power-up only)
MAIN LOOP (you've seen it)
SUBROUTINES (you've seen the one that is the problem)
INTERRUPT HANDLER
END
I'll try moving some things around, but I continue mystified and frustrated.
Russ
N0EVC, xWB6ONT, xWN6ONT
"Easy to use" is easy to say.
Hi, Russ
I do not have any problem left with :
Code:PROGRAM (things done at power-up only) INTERRUPT HANDLER MAIN LOOP (you've seen it) END ( for safety ...) SUBROUTINES (you've seen the one that is the problem) END . . . and @ last prog memory location @GOTO Program ( if "not so good" supply ... EQU : Prog Pointer lost )
Last edited by Acetronics2; - 6th February 2009 at 17:54.
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Okay, here's the latest, in full.
It works just fine.
I had hoped to also have a flag called MFLAG at EEPROM address 255, managed in a manner similar to what is done with PFLAG.
If MFLAG is 0, the program would be prevented from looping when the trigger (TRIGR) is still being held high (on). But it doesn't matter where I put IF . . . ENDIF or WHILE . . . WEND or GOTOs or GOSUBs. Whenever they are dealing with TRIGR, I get glitches.
So I'm posting the whole thing. Maybe one of you can see what prevents me from getting what I need to do in a manner that will work.
Last edited by RussMartin; - 7th February 2009 at 03:43.
Russ
N0EVC, xWB6ONT, xWN6ONT
"Easy to use" is easy to say.
Bookmarks