EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

I mus be stupide but..

Started by Andre April 14, 2012
Begining with pic programing in C

The following prog works on a pic16f84A
#include <htc.h>
/***** CONFIGURATION *****/
__CONFIG(0x3F61);
/***** MAIN PROGRAM *****/
void main()
{
// Initialisation
TRISB = 0b00000000;
PORTB = 0b11110000;
for (;;)
{
// turn on LED only if button pressed
   if ( RA0 == 1 )
       PORTB = 0b000011;
   else
       PORTB = 0b110000;

}
// repeat forever
}

But the read RA0 never occurs on a pic16f627
Diplay is allways 0b110000

I am using picc ( lite ) from command line or via a Makefile
picc --warn=9 --chip=16f627a less2.c
BTW: if I use --strict, it refuse to compile ( to many errors -- FROM 
the included file /usr/local/hitech/picc/9.8/include/pic16f627.h ) ???

Tested on a Vellman kit K8048 ( here a VM111 as I buy it fully monted )

It gives the same results when using MPlab??
Le 14/04/2012 18:09, Andre a &#4294967295;crit :
> Begining with pic programing in C > > The following prog works on a pic16f84A > #include <htc.h> > /***** CONFIGURATION *****/ > __CONFIG(0x3F61); > /***** MAIN PROGRAM *****/ > void main() > { > // Initialisation > TRISB = 0b00000000; > PORTB = 0b11110000; > for (;;) > { > // turn on LED only if button pressed > if ( RA0 == 1 ) > PORTB = 0b000011; > else > PORTB = 0b110000; > > } > // repeat forever > } > > But the read RA0 never occurs on a pic16f627 > Diplay is allways 0b110000 > > I am using picc ( lite ) from command line or via a Makefile > picc --warn=9 --chip=16f627a less2.c > BTW: if I use --strict, it refuse to compile ( to many errors -- FROM > the included file /usr/local/hitech/picc/9.8/include/pic16f627.h ) ??? > > Tested on a Vellman kit K8048 ( here a VM111 as I buy it fully monted ) > > It gives the same results when using MPlab??
BTW: I am using PikDev to prog the chip. A similar prog in assembler works, so it doesn't seems to be the chip nor the programmer. Andr&#4294967295; Many thanks in advances
Hi Andre,

In order to use a PORTA pin like RA0, you should
also setup TRISA.
Additionally, the 16f62x has a CMCON register which needs
setup, if you want to use RA0..3.

Have a look in the processor's datasheet.

However, I can say nothing about the PICC compiler...I use CC5X.

HTH,
Wolfgang


-- 
From-address is Spam trap
Use: wolfgang (dot) mahringer (at) sbg (dot) at
Andre wrote:
> Begining with pic programing in C > > The following prog works on a pic16f84A > #include <htc.h> > /***** CONFIGURATION *****/ > __CONFIG(0x3F61); > /***** MAIN PROGRAM *****/ > void main() > { > // Initialisation > TRISB = 0b00000000; > PORTB = 0b11110000; > for (;;) > { > // turn on LED only if button pressed > if ( RA0 == 1 ) > PORTB = 0b000011; > else > PORTB = 0b110000; > > } > // repeat forever > } > > But the read RA0 never occurs on a pic16f627 > Diplay is allways 0b110000 >
What setup is required to make RA0 an input on a pic16f627? Does the button press actually change the state of RA0? ( put a scope on it, in other words ).
> I am using picc ( lite ) from command line or via a Makefile > picc --warn=9 --chip=16f627a less2.c > BTW: if I use --strict, it refuse to compile ( to many errors -- FROM > the included file /usr/local/hitech/picc/9.8/include/pic16f627.h ) ??? >
Are you sure your path points you to the right compiler? This sounds a little like you don't have the toolchain set up correctly. Otherwise... ??? really? I'd find a forum or send their support an email. Is there another #include that pic16f627.h depends on? Do their #includes include other #includes, or are you expected to do that for them? Does pic16f627.h have a #if _PIC16F627_H_ at the top ( and the appropriately placed #endif at the bottom) ?
> Tested on a Vellman kit K8048 ( here a VM111 as I buy it fully monted ) > > It gives the same results when using MPlab??
-- Les Cargill
Le 14/04/2012 18:31, Les Cargill a &#4294967295;crit :
> Andre wrote: >> Begining with pic programing in C >> >> The following prog works on a pic16f84A >> #include <htc.h> >> /***** CONFIGURATION *****/ >> __CONFIG(0x3F61); >> /***** MAIN PROGRAM *****/ >> void main() >> { >> // Initialisation >> TRISB = 0b00000000; >> PORTB = 0b11110000; >> for (;;) >> { >> // turn on LED only if button pressed >> if ( RA0 == 1 ) >> PORTB = 0b000011; >> else >> PORTB = 0b110000; >> >> } >> // repeat forever >> } >> >> But the read RA0 never occurs on a pic16f627 >> Diplay is allways 0b110000 >> > > What setup is required to make RA0 an input on a > pic16f627? Does the button press actually change the state > of RA0? ( put a scope on it, in other words ). > > >> I am using picc ( lite ) from command line or via a Makefile >> picc --warn=9 --chip=16f627a less2.c >> BTW: if I use --strict, it refuse to compile ( to many errors -- FROM >> the included file /usr/local/hitech/picc/9.8/include/pic16f627.h ) ??? >> > > > Are you sure your path points you to the right compiler? This > sounds a little like you don't have the toolchain set up > correctly. > > Otherwise... > > ??? really? I'd find a forum or send their support an > email. Is there another #include that pic16f627.h depends on? > > > Do their #includes include other #includes, or are you expected > to do that for them? > > Does pic16f627.h have a #if _PIC16F627_H_ at the top ( and the > appropriately placed #endif at the bottom) ? > > >> Tested on a Vellman kit K8048 ( here a VM111 as I buy it fully monted ) >> >> It gives the same results when using MPlab?? > > -- > Les Cargill
Many thanks. I don't use MPlab for this as it doesn't support the K8048 programmer. When I use it, I can upload the .hex file into PikDev and then progrem the chip But Mplab use picc. And rememeber tha the same prog work with a pic16f84a ?? I don't have a osciloscope ( Helas ) I am retired and oding this only for fun ;-))) I will be looking at your suggestions asap, my wife's calling ;-)) Andre
On 2012-04-14, Andre <pas.mois@ailleur.be> wrote:
> The following prog works on a pic16f84A
> if ( RA0 == 1 )
> But the read RA0 never occurs on a pic16f627
RA0 is an analog pin by default. Analog pins cannot be used as digital inputs. You must disable the analog features on the pin (the comparator). -- John W. Temples, III
Le 14/04/2012 20:03, John Temples a &eacute;crit :
> On 2012-04-14, Andre<pas.mois@ailleur.be> wrote: >> The following prog works on a pic16f84A > >> if ( RA0 == 1 ) > >> But the read RA0 never occurs on a pic16f627 > > RA0 is an analog pin by default. Analog pins cannot be used as > digital inputs. You must disable the analog features on the pin (the > comparator). >
That's was the problem. I configured COMCON and miracle .. Many thanks. Andr&eacute;

The 2024 Embedded Online Conference