TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: johenrod en 07 de Abril de 2023, 16:19:26

Título: como definir un registro que puede utilizarse en varios pines?
Publicado por: johenrod en 07 de Abril de 2023, 16:19:26
Cordial saludo
Estoy tratando de configurar el registro "CCP1" para un pwm" con el pic12f1822 y este tiene CCP1  en 2 pines RA0 y RA5, podrian por favor decirme como lo configuro para determinado pin, gracias de antemano.
trabajo en "CCS"
Código: C
  1. #INCLUDE <12F1822.h>
  2. #DEVICE ADC=10
  3. //#USE DELAY(CLOCK=4000000) //Crystal Interno 4MHz
  4. //#use delay(clock=4000000,crystal)//Crystal Externo 4MHz
  5. #use delay(internal=8MHz)
  6. #FUSES NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP,nomclr
  7.  
  8. //#INCLUDE <LCD.C>
  9.  
  10.  
  11.  
  12. #pin_select CCP1=PIN_A2
Título: Re:como definir un registro si puede utilizarse en varios pines?
Publicado por: DominusDRR en 07 de Abril de 2023, 17:32:49
Cordial saludo
Estoy tratando de configurar el registro "CCP1" para un pwm" con el pic12f1822 y este tiene CCP1  en 2 pines RA0 y RA5, podrian por favor decirme como lo configuro para determinado pin, gracias de antemano.
trabajo en "CCS"
Código: C
  1. #INCLUDE <12F1822.h>
  2. #DEVICE ADC=10
  3. //#USE DELAY(CLOCK=4000000) //Crystal Interno 4MHz
  4. //#use delay(clock=4000000,crystal)//Crystal Externo 4MHz
  5. #use delay(internal=8MHz)
  6. #FUSES NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP,nomclr
  7.  
  8. //#INCLUDE <LCD.C>
  9.  
  10.  
  11.  
  12. #pin_select CCP1=PIN_A2

Buscando en las hojas de datos tienes lo siguiente con el registro APFCON

(https://pbs.twimg.com/media/FtI2VC5XgAAmknx?format=png&name=900x900)

Si tu compilador no tiene macros o librerías para manipular ese registro de manera amigable, deberías configurar directamente los bits de ese registro.

No sé si la manipulación de los bits de ese registro es así de simple, en otros microcontroladores, el mapeo de terminales de los periféricos en los terminales físicos del microcontrolador tienen una serie de pasos antes y después de manipularlos. Me imagino que con este microcontrolador debería ser igual.

Obviamente si tu compilador puede enmascarar esos pasos (macros o librerías), no deberías preocuparte.
Título: Re:como definir un registro si puede utilizarse en varios pines?
Publicado por: johenrod en 08 de Abril de 2023, 10:48:26
Gracias DominusDRR,
trade de hacerlo asi   "#pin_select CCP1=PIN_A2" pero me da error en el compilador, me podrias indicar por favor si es mas o menos asi que se declara.
Título: Re:como definir un registro si puede utilizarse en varios pines?
Publicado por: DominusDRR en 08 de Abril de 2023, 11:11:47
Gracias DominusDRR,
trade de hacerlo asi   "#pin_select CCP1=PIN_A2" pero me da error en el compilador, me podrias indicar por favor si es mas o menos asi que se declara.

No soy experto en CCS, pero tal vez es algo tan simple como esto:

Código: C
  1. APFCON=0x01; //CCP1 en RA5

Más información, al momento de googlear:

https://www.google.com/search?q=APFCON+CCs&rlz=1C1CHBD_esEC914EC916&oq=APFCON+CCs&aqs=chrome..69i57j33i10i160l2.3327j0j7&sourceid=chrome&ie=UTF-8 (https://www.google.com/search?q=APFCON+CCs&rlz=1C1CHBD_esEC914EC916&oq=APFCON+CCs&aqs=chrome..69i57j33i10i160l2.3327j0j7&sourceid=chrome&ie=UTF-8)

https://www.ccsinfo.com/forum/viewtopic.php?t=57523 (https://www.ccsinfo.com/forum/viewtopic.php?t=57523)

http://www.ccsinfo.com/forum/viewtopic.php?t=45729&view=next (http://www.ccsinfo.com/forum/viewtopic.php?t=45729&view=next)

Título: Re:como definir un registro si puede utilizarse en varios pines?
Publicado por: johenrod en 10 de Abril de 2023, 16:13:28
Gracias por tus respuestas  DominusDRR
en mi primer mensaje coloque,
Citar
Estoy tratando de configurar el registro "CCP1" para un pwm" con el pic12f1822 y este tiene CCP1  en 2 pines RA0 y RA5
y este no es un registro si no un periferico.
Logre hacerlo asi...

Código: C
  1. #INCLUDE <12F1822.h>
  2. #DEVICE ADC=10
  3. #use delay(internal=8MHz)
  4. #FUSES NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP,nomclr
  5.  
  6. #bit CCP1SEL=getenv("CCP1SEL")
  7.  
  8. void main(void)
  9. {
  10.     // CCP1SEL=1; //CCP1 will now go to RA5
  11.        CCP1SEL=0; //CCP1 will now go to RA2
  12. }