PDA

View Full Version : PIC12F683 pin GP3 as output



louislouis
- 10th February 2018, 19:24
Hello folks,
before I tried play with picbasic I worked with PICAXE. I have done few projects with PICAXE 08M2 which is a rebranded PIC12F683 with bootloader.
In PICAXE is one simple cheat which allows to use the pin3 (MCLRE) as output. Pin3 drives an NPN transistor via manipulating weak pullup resistor. In attachment find the schematis which I use wery often. It works fine all the time.
For example here is a simple led blinking code in PICAXE looks like:


#picaxe 08m2
do
pullup $08 ;pullup on GPIO.3 LED ON
pause 500
disable ;disable pullups LED OFF
pause 500
loop


8589

Now the question is how do they made it? I try similar on PIC12F683 in picbasic but no success.
Try to led blinking code in picbasic like:


;PIC12F683

TRISIO=0
ANSEL=0
OPTION_REG.7=1 ;enable WPU

strt:
wpu=%00001000 ;enable WPU on GPIO.3
pause 500
wpu=%00000000 ;disable WPU on GPIO.3
pause 500
goto strt
end


OK, I now this is not work. I also now the GPIO.3 WPU is activatable only via
MCLRE, the GP3 pull-up is enabled when MCLRE is set to"1" in the configuration word register, and disabled when MCLRE is set to"0".

How It works in PICAXE, thats the question. Does anyone have an idea?

Louis

Ioannis
- 10th February 2018, 19:39
can you post also the fuse configuration?

Ioannis

louislouis
- 10th February 2018, 20:07
Hello,

in PICAXE no need to use any config.

In picbasic I use this:



#CONFIG
__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _CP_OFF
#ENDCONFIG


But I also used this:



#CONFIG
__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_ON & _CP_OFF
#ENDCONFIG

Ioannis
- 10th February 2018, 20:45
The weak pullup on GP3 is enabled only when MCLR is enabled.

You may try also ANSEL to set it to

DO
ANSEL=0
PAUSE 500
ANSEL.3=1
PAUSE 500
LOOP

This will enable and disable the weak pullup.

Ioannis

Sherbrook
- 10th February 2018, 20:54
Try setting GP3 to input as setting to output turns off weak pull-ups

louislouis
- 10th February 2018, 21:34
The weak pullup on GP3 is enabled only when MCLR is enabled.

You may try also ANSEL to set it to

DO
ANSEL=0
PAUSE 500
ANSEL.3=1
PAUSE 500
LOOP

This will enable and disable the weak pullup.

Ioannis
tried, not working. ANSEL.3 is for pin GP4 not for GP3.

louislouis
- 10th February 2018, 21:34
GP3 is setupable only as input.

Ioannis
- 10th February 2018, 22:06
OK, then this would only work if one could change the MCLR bit in config word, address 2007h.

But this can only be accessed in Programming the chip...

Interesting one!

Ioannis

Dave
- 10th February 2018, 22:19
GP.3 is only configurable as an added input pin when nor being used as the RESET pin. NO output configuration is possible.

louislouis
- 10th February 2018, 22:42
yes, if I configure the MCLR bit in config word to "1" then the LED is ON because the transistor is open via internal pull-up. If I configute the MCLR bit to "0" then internal pull-up is disabled and the transistor is closed because the 1M resistor is pull the base to ground.
That's work, but how to do that in program I don't know. However, it must work somehow, because in PICAXE environment it works.

richard
- 10th February 2018, 22:56
how sure are you that a picaxe 8m2 is a 12f683

this makes me doubtful a 12f683 pegs out at 20mhz

louislouis
- 10th February 2018, 23:36
how sure are you that a picaxe 8m2 is a 12f683

this makes me doubtful a 12f683 pegs out at 20mhz
That's a good question, PICAXE webpage shows this:
http://www.picaxe.com/What-is-PICAXE/Superseded-Parts/
But after better research, I think all my 08M2 devices are PIC12F1840 and thats makes more sens.
http://www.picaxe.com/What-is-PICAXE/PICAXE-Chip-Labels/
After look in to the datasheet, on this chip is possible to control the pullups via special function register WPUA. This chip allows to separately control each WPU's include the pullup on pin GP3.
In this case is possible with this trick use the GP3 as digital output.

I have an idea, the picaxe has a built in security option, when someone try to read the firmware, the bootloader is "self erasing" and the chip is no more work as picaxe, but still works like an ordinary PIC.
Tomorrow I try read it, and I will after that know what kind PIC is it.

louislouis
- 11th February 2018, 10:45
Hello,
finally success. I grab one of my PICAXE 08M2, read it with pickit programmer (destroy the bootloader) and yes, it is a PIC12F1840 not a 12F683 which is a previous version of PICAXE 08M (Richard has good suggestion).

OK, back to my question if it is possible to use the GP3 (MCLR) pin as digital output on this 12F1840 yes, it is!
This method is suitable to switch simple devices like relays, LEDs, etc. The state is only 1 or 0 (on/off).
All done with enabling or disabling the GP3 pin internal pull-up resistor. The circuit is the same as in my previous post, and the example code for PIC12F1840 LED blinking on GP3 is like:


;PIC 12F1840
#CONFIG
__config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
__config _CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_ON & _BORV_19 & _LVP_OFF
#ENDCONFIG

DEFINE OSC 32 ; Use internal clock
OSCCON = %01110000
CLKRCON = 0

TRISA = %000000
ANSELA = 0
OPTION_REG.7=0 ; Enable internal pull-ups

strt:
wpua=%001000
PAUSE 500
wpua=%000000
PAUSE 500
goto strt

The LED is on when pull-up is set ON, and the LED is OFF when the pull-up is set to OFF, that simple it is.

I think, this method is usable for all PIC devices which allows to individual pull-up switching on MCLR pin.

Dave
- 11th February 2018, 14:12
As a point of reference:


PICAXE Chip Type Label on Chip (DIP) Label on Chip (SM) Advanced Technical Details
PICAXE-08M2 PICAXE-08M2+ 12F1840 Microchip Datasheet
PICAXE-14M2 PICAXE-14M2 PIC16F1825 Microchip Datasheet
PICAXE-18M2 PICAXE-18M2+ PIC16F1847 Microchip Datasheet
PICAXE-20M2 PICAXE-20M2 PIC16F1829 Microchip Datasheet
PICAXE-20X2 PIC18F14K22 PIC18F14K22 Microchip Datasheet
PICAXE-28X2 PIC18F25K22 PIC18F25K22 Microchip Datasheet
PICAXE-40X2 PIC18F45K22 PIC18F45K22 Microchip Datasheet

mpgmike
- 11th February 2018, 22:31
Louislouis, that was some impressive "thinking outside the box". Well done!