View previous topic :: View next topic |
Author |
Message |
eric
Joined: 16 Sep 2003 Posts: 21
|
PIC16F630 PortA as outputs - is there some trick to this? |
Posted: Thu Jun 03, 2004 2:29 pm |
|
|
Sorry if I ended up double posting this.. but it did not seem to show up
I just got an F630 up and running - just testing with blinking LED's on Port A & C to see if int osc works. However, I can't get portA to work.
C4 blinks but A4 does not. Looking at the Microchip data sheet PortA info to see if I missed something setting up the port as the assembly looks ok.
#include <16F630.h>
#fuses INTRC,NOWDT,MCLR
#use delay(clock=4000000)
void main() {
set_tris_a (0x00);
while(True){
delay_ms(1000);
output_high(PIN_C4);
output_high(PIN_A4);
delay_ms(1000);
output_low(PIN_C4);
output_low(PIN_A4);
}
}
while(True){
.................... delay_ms(1000);
0027: MOVLW 04
0028: BCF 03.5
0029: MOVWF 21
002A: MOVLW FA
002B: MOVWF 22
002C: CALL 00A
002D: DECFSZ 21,F
002E: GOTO 02A
.................... output_high(PIN_C4);
002F: BSF 03.5
0030: BCF 07.4
0031: BCF 03.5
0032: BSF 07.4
.................... output_high(PIN_A4);
0033: BSF 03.5
0034: BCF 05.4
0035: BCF 03.5
0036: BSF 05.4
.................... delay_ms(1000);
0037: MOVLW 04
0038: MOVWF 21
0039: MOVLW FA
003A: MOVWF 22
003B: CALL 00A
003C: DECFSZ 21,F
003D: GOTO 039
.................... output_low(PIN_C4);
003E: BSF 03.5
003F: BCF 07.4
0040: BCF 03.5
0041: BCF 07.4
.................... output_low(PIN_A4);
0042: BSF 03.5
0043: BCF 05.4
0044: BCF 03.5
0045: BCF 05.4
.................... }
0046: BSF 03.5
0047: GOTO 027 |
|
|
Ttelmah Guest
|
Re: PIC16F630 PortA as outputs - is there some trick to thi |
Posted: Thu Jun 03, 2004 2:43 pm |
|
|
eric wrote: | Sorry if I ended up double posting this.. but it did not seem to show up
I just got an F630 up and running - just testing with blinking LED's on Port A & C to see if int osc works. However, I can't get portA to work.
C4 blinks but A4 does not. Looking at the Microchip data sheet PortA info to see if I missed something setting up the port as the assembly looks ok.
#include <16F630.h>
#fuses INTRC,NOWDT,MCLR
#use delay(clock=4000000)
void main() {
set_tris_a (0x00);
while(True){
delay_ms(1000);
output_high(PIN_C4);
output_high(PIN_A4);
delay_ms(1000);
output_low(PIN_C4);
output_low(PIN_A4);
}
}
while(True){
.................... delay_ms(1000);
0027: MOVLW 04
0028: BCF 03.5
0029: MOVWF 21
002A: MOVLW FA
002B: MOVWF 22
002C: CALL 00A
002D: DECFSZ 21,F
002E: GOTO 02A
.................... output_high(PIN_C4);
002F: BSF 03.5
0030: BCF 07.4
0031: BCF 03.5
0032: BSF 07.4
.................... output_high(PIN_A4);
0033: BSF 03.5
0034: BCF 05.4
0035: BCF 03.5
0036: BSF 05.4
.................... delay_ms(1000);
0037: MOVLW 04
0038: MOVWF 21
0039: MOVLW FA
003A: MOVWF 22
003B: CALL 00A
003C: DECFSZ 21,F
003D: GOTO 039
.................... output_low(PIN_C4);
003E: BSF 03.5
003F: BCF 07.4
0040: BCF 03.5
0041: BCF 07.4
.................... output_low(PIN_A4);
0042: BSF 03.5
0043: BCF 05.4
0044: BCF 03.5
0045: BCF 05.4
.................... }
0046: BSF 03.5
0047: GOTO 027 |
Turn off the AD functions on this pin. try:
SETUP_ADC_PORTS(NO_ANALOG);
during the initialisation part of the code.
Best Wishes |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Jun 03, 2004 2:51 pm |
|
|
Quote: | I just got an F630 up and running. However, I can't get portA to work. |
Whenever Port A doesn't work on one of the newer PIC chips
(ie., anything newer than the 16F877), always look in the
data sheet to see if comparators are present on Port A.
If they are, then put in a line of code to turn them off.
This will let you use Port A for digital i/o.
Code: | main()
{
setup_comparator(NC_NC_NC_NC); // Disable comparators
// Put your other code here.
while(1); // Prevent PIC from going to sleep
} |
|
|
|
eric
Joined: 16 Sep 2003 Posts: 21
|
|
Posted: Thu Jun 03, 2004 5:49 pm |
|
|
I tired both of them but no luck - I was looking for a little luck since this chip does not have a working debug mode.... so more work to read all the port A registers.
I disabled Timer1 as well jsut in case.
The output of this pin is 2.5 v. I'll have to check whether I'm getting clockout on this pin instead.
pin options below
RA4 TTL CMOS Bi-directional I/O w/ programmable pull-up and
Interrupt-on-change
T1G ST — Timer1 gate
AN3 AN3 — A/D Channel 3 input
OSC2 — XTAL Crystal/Resonator
CLKOUT — CMOS FOSC/4 output |
|
|
eric
Joined: 16 Sep 2003 Posts: 21
|
OK thanks for the help - had no IDEA |
Posted: Thu Jun 03, 2004 6:07 pm |
|
|
that INTRC would gerneate a clock
I would have thought that that INTRC_IO would have if anything.
With INTRC I was, of course, getting the Fosc/4 on A4
Seems like I will have to manually "debug" all these function overloaded pins.
Probably did not help that my scope probe pulled the LED resistor out - it was quite a few minutes before I realized I fixed it |
|
|
lucky
Joined: 12 Sep 2003 Posts: 46 Location: South Coast - England
|
PIN A4 |
Posted: Mon Jun 07, 2004 3:35 am |
|
|
Hello Eric,
Pin A4 is open drain on some (maybe all) PICs. I am not sure about the 16F630 but if it is then you will need a pull-up resistor. _________________ Lucky
www.mpic3.com - MPIC3 player project, Forum, Downloads, Online Shop |
|
|
|