registros de control PIC18

0

Estoy configurando los bits de selección de canal analógico en el registro de control ADCON0 A / D. En la hoja de datos, enumera "CHS < 4: 0 > Selección de canales analógicos".

En MikroC escribo lo siguiente para configurar mi canal de entrada.

ADCON0.CHS4 = 0x14;

Lo que no entiendo es el "< 4: 0 >" parte, ¿qué representa esto?

    
pregunta stuart

3 respuestas

2

El registro ADCON0 varía entre los procesadores de Microchip. Y las definiciones de Microchip varían para diferentes versiones de sus SDK / bibliotecas.

Suponiendo que "CHS < 4: 0 > Selección de bits de canal analógico" se aplique a su chip, todo esto significa que se reservan 5 bits contiguos de este registro para elegir una fuente de entrada analógica. Podrían ser del 1º al 5º bit. También podrían ser del cuarto al octavo bit.

La notación "ADCON0.CHS4" sugiere que solo está asignando un valor al bit CHS4 en el registro ADCON0. Para seleccionar una entrada analógica, debe asignar un valor a todos los bits de selección de canal. Suponiendo que los bits de CHS comienzan en la tercera posición de bit y todos los demás bits son cero o se cambiarán según sea necesario a 1 más adelante en su código:

   ADCON0 = (0x14 << 2);  // Select ADC Channel

O podemos extender su código original:

  ADCON0.CHS0 = 0;  // 0
  ADCON0.CHS1 = 0;  // 0
  ADCON0.CHS2 = 1;  // 1
  ADCON0.CHS3 = 0;  // 0
  ADCON0.CHS4 = 1;  // 1
    
respondido por el st2000
1

Cada uno de esos bits debe acceder de forma única a qué canal ADC se utilizará para la operación ADC. Consulte los detalles del Pin para su PIC y encontrará que cada uno de esos AN0 .... AN27 estará disponible en un pin. Por ejemplo, supongamos que desea convertir una señal analógica a un valor digital, tendrá que conectar ese circuito analógico al pin correspondiente a AN18 consultando los detalles del pin en su hoja de datos y configurar ADCON0 | = (0x12U < < 2). Esto debería ayudarlo a comprender mejor.

    
respondido por el Akshay Immanuel D
1

ADCON0.CHS0, ADCON0.CHS1, ... ADCON0.CHS4 etc. se refieren a bits individuales. Consulte la estructura a continuación.

Busqué en un archivo fuente un procesador PIC18 y lo encontré:

typedef union
{
   struct
   {
      unsigned ADON               : 1;
      unsigned GO_NOT_DONE        : 1;
      unsigned CHS0               : 1;
      unsigned CHS1               : 1;
      unsigned CHS2               : 1;
      unsigned CHS3               : 1;
      unsigned CHS4               : 1;
      unsigned                    : 1;
  };
                .
                .
                .
  struct
  {
    unsigned                      : 2;
    unsigned CHS                  : 5;
    unsigned                      : 1;
  };
} __ADCON0bits_t

Debido a que las dos estructuras están dentro de una unión, el campo CHS superpone los campos CH0 ... CH4. Esto significa que puede escribir en todo el campo como un grupo. Esto está fuera de la biblioteca de Microchip, por lo que su archivo .h del compilador puede ser diferente.

Así que puedes intentar escribir: ADCON0.CHS = 0x14;

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas