I'm positive there's no missed resistors or diodes in relation to the push buttons - as much as it's a very abbreviated schematic, the circuit really doesn't have much more - I can upload some scans of the board if you like, but I've actually decided to approach this a different way.
Originally I was going to sacrafice the remote control function to gain a serial interface, but what I've since decided to do is take the two outputs from the original pic and feed it into another pic - this will give me my serial interface and keep the remote control - without having to deal
Now I have a problem with frightfully slow interrupts - I've tested this in PIC Simulator and it works reasonably quickly there. In real life tho, this code interrupts 'eventually' usually 5-20 seconds later. I can't see why, I'm only tying it up for 10 ms then I've inserted an extra pauseus so it's got something to interrupt before/after before returning to serin.
Anyway I can speed up the interrupt to... between 11 and 100 ms?
Code:' Configure the pic @ device pic12F675, INTRC_OSC_NOCLKOUT, WDT_ON, PWRT_ON, MCLR_OFF, BOD_ON, CPD_OFF, PROTECT_OFF N9600 CON 6 CMCON = 7 ANSEL = 0 Relay1 VAR GPIO.5 Relay2 VAR GPIO.4 SlavePower VAR GPIO.2 SlaveRelay1 VAR GPIO.0 SlaveRelay2 VAR GPIO.1 Serial VAR GPIO.3 B0 var BYTE INPUT SlaveRelay1 INPUT SlaveRelay2 INPUT Serial OUTPUT Relay1 OUTPUT Relay2 OUTPUT SlavePower ON INTERRUPT GOTO slaveSpeaks IOC = %00000011 INTCON = %10001000 ' Turn on the original PIC HIGH SlavePower main: B0 = 0 PAUSEUS 1 SERIN Serial, N9600, 10, main, [1], B0 ' The original PIC latches it's output, we want to reboot the original pic if we get something from the serial port to force it's outputs low IF B0 > 1 THEN LOW SlavePower if B0 = 2 THEN GOSUB subUp IF B0 = 3 THEN GOSUB subDown IF B0 = 4 THEN GOSUB subStop IF B0 > 1 THEN PAUSEUS 1000 HIGH SlavePower ENDIF GOTO main DISABLE subUp: LOW Relay2 HIGH Relay1 RETURN subDown: LOW RELAY1 HIGH Relay2 RETURN subStop: LOW Relay1 LOW Relay2 RETURN slaveSpeaks: if SlaveRelay1 THEN GOSUB subUp ELSE IF SlaveRelay2 THEN GOSUB subDown ELSE GOSUB subStop ENDIF ENDIF INTCON = %10001000 RESUME ENABLE




Bookmarks