Aplicar la señal PWM al PIN de un microcontrolador

1

Estoy usando MC9S08DZ60 . Me han dado un diagrama de circuito según el cual debo programar el microcontrolador. Estoy usando Code warrior con Processor Expert, que me permite inicializar los registros necesarios, no tengo que escribir el código para el mismo.

Requisito del código: detecte un pulso PWM en el pin 0 del registro D. En respuesta, encienda el LED y aplique la señal PWM en los pines 3,4,5,6 del registro A. Según la hoja de datos, he igualado el valor del valor del canal se registra en el pin esperado en el microcontrolador. ¿Cómo aplicar la señal PWM al PIN requerido? He intentado lo mismo en el siguiente código.

Por favor, consulte el código dado:

unsigned int result;
   unsigned int pwmSignal()
   {
   If(PTDD_PTDD0) // to check for the incoming PWM signal.
   {
  PTDD_PTDD2 = 1;  //light up LED. 
 do // check Channel for 300ms.
 { 
  //my understanding is to latch the values of the channel value registers to the 
  //expected pin.
   result = TPM2C0VH;
   result <<=8;
   result = result + TPM2C0VL;
   result = PTAD_PTAD4;
   result = PTAD_PTAD5;
 } while (TPM2C0_CH0F == 0);
 }
 else PTDD_PTDD2 = 0;
 }

El código compila absolutamente bien. Pero no veo ningún cambio. En este punto, quiero decir, este es mi primer intento de hacer esto.

También tengo una pregunta más, ¿cómo uso, por ejemplo, el PIN 2 del Registro D, para dos operaciones diferentes en un solo main.c? Por favor, avíseme si puedo proporcionar más datos sobre todo lo anterior. Gracias de antemano!

    
pregunta sheetansh

2 respuestas

3

Falta un corchete entre el tiempo y el resto en tu código, y uno adicional al final.

Aquí, así:

unsigned int result;
unsigned int pwmSignal()
{
    If(PTDD_PTDD0) // to check for the incoming PWM signal.
    {
        PTDD_PTDD2 = 1;  //light up LED. 
        do // check Channel for 300ms.
        { 
           //my understanding is to latch the values of the channel value registers to the 
           //expected pin.
           result = TPM2C0VH;
           result <<=8;
           result = result + TPM2C0VL;
           result = PTAD_PTAD4;
           result = PTAD_PTAD5;
        } while (TPM2C0_CH0F == 0)

     } // here, this one is missing.
     else PTDD_PTDD2 = 0;
 }
 // }
 // ^ This one you added at the end isn't necessary.

Ayuda mucho si tu código está sangrado correctamente. Estoy muy sorprendido de que su compilador no se haya quejado de esto.

    
respondido por el stanri
0

Según la Hoja de datos, PWM solo puede configurarse para los pines específicos de la MCU, es decir, PWM alineado al borde. Y al mismo tiempo, solo algunos pines específicos (según la hoja de datos) solo pueden configurarse para detectar PWM, es decir, captura de entrada.

Como esta pregunta ya no tiene interés en el foro, consideraré esto como la respuesta.

    
respondido por el sheetansh

Lea otras preguntas en las etiquetas