good ideas posted here, never tough of implementing that way, maybe because I never used the On Interrupt instruction before...
Will try, will tell
J. Mark: can you attach the PDF to a message, so all ppl see it?
Thanks
good ideas posted here, never tough of implementing that way, maybe because I never used the On Interrupt instruction before...
Will try, will tell
J. Mark: can you attach the PDF to a message, so all ppl see it?
Thanks
If you don't need instant response to the button press, you can get away with not using interrupts.
Just test the appropriate interrupt flag bit when you want to know if the button was pressed.
Remeber to clear the bit after checking it.
I just wrote this program to start learning on interrupt, as expected... it didn't work
Code:@ device pic12F675, intrc_osc_noclkout, wdt_on, mclr_off, protect_off DEFINE OSC 4 trisio =%00110000 ansel =%00000000 cmcon =%00000111 'Comparators Off intcon =%10001100 'interrupts enable / tmr0 overflow / gpio change interrupt enable OPTION_REG = %11010101 ' Set TMR0 configuration but1 var gpio.4 but2 var gpio.5 led1 var gpio.1 led2 var gpio.2 ledwork var gpio.0 but1st var bit but2st var bit conta var byte on interrupt goto interrupcion loop: for conta=0 to 255 step 16 'working led rise routine pwm ledwork, conta, 10 disable if but1st=1 then but1st=0 high led1 endif if but2st=1 then but2st=0 high led2 endif enable next conta high ledwork for conta =0 to 100 pause 10 next conta low led1 'set status buttons leds off low led2 for conta=0 to 255 step 16 'Fall routine pwm ledwork, 255-conta, 10 disable if but1st=1 then but1st=0 high led1 endif if but2st=1 then but2st=0 high led2 endif enable next conta low ledwork low led1 'set button status leds off low led2 goto loop disable interrupcion: but1st=but1 but2st=but2 intcon =%10001101 resume enable
Any help appreciated
Pablo
Last edited by peu; - 24th January 2006 at 15:08.
I just changed the previous code so ledwork uses gpio.2 instead of gpio.3 because the payload of the program wasnt functioning properly (no idea why). Now it PWMs the led properly.
Im still reading the datasheet trying to figure out what I missed for the interrupt part
Pablo
I fiddled with the intcon/option reg values and it seems to work, at least in the simulation
please tell me if you see someting blattantly wrong in the code:
Code:@ device pic12F675, intrc_osc_noclkout, wdt_on, mclr_off, protect_off DEFINE OSC 4 trisio =%00110000 ansel =%00000000 cmcon =%00000111 'Comparators Off intcon =%10101100 'interrupts enable OPTION_REG = %11010001 ' Set TMR0 configuration but1 var gpio.4 but2 var gpio.5 led1 var gpio.1 led2 var gpio.2 ledwork var gpio.0 but1st var bit but2st var bit conta var byte on interrupt goto interrupcion loop: for conta=0 to 255 step 16 'working led rise routine pwm ledwork, conta, 10 ; disable if but1st=1 then but1st=0 high led1 endif if but2st=1 then but2st=0 high led2 endif ; enable next conta high ledwork for conta =0 to 100 pause 10 next conta low led1 'set status buttons leds off low led2 for conta=0 to 255 step 16 'Fall routine pwm ledwork, 255-conta, 10 ; disable if but1st=1 then but1st=0 high led1 endif if but2st=1 then but2st=0 high led2 endif ; enable next conta low ledwork low led1 'set button status leds off low led2 goto loop disable interrupcion: but1st=but1 but2st=but2 intcon =%10001101 resume enable
Pablo
The attached PDF file is a circuit similar to one that was published in an old EDN Design Ideas. Originally it used a 74HCT374 and eight switches.
The advantage is that it latches and debounces the momentary switches. The KYBD_INT signal can be used for interrupting or polling. Once you've read the state of the switches, clear the latch and you're primed for the next keypress.
I've found it useful in the past, maybe you will to.
Bookmarks