Implementando interrupciones en un PIC16

0

Estamos intentando construir una interfaz RC para transformar una señal PPM del RC (control remoto) en una señal PWM para los controles del motor. La idea es construir un robot de 2 canales que avance% back, right & izquierda.

En este momento nos enfrentamos con el problema de que intentamos usar PIC16F628A para generar esto Señal, pero este chip solo tiene 1 puerto CCP. Como lo entiendo, el pin del PCCh es la forma en que el PIC detecta las interrupciones externas.

Entonces, ¿cómo implemento las 2 interrupciones necesarias? ¿Agarro otro PIC o hay alguna forma de usar otros pines para manejar las interrupciones requeridas?

Cualquier ayuda muy apreciada

EDITAR para aclarar : PPM - modulación de la posición del pulso :

El control remoto enviará una señal que tiene su información almacenada durante el tiempo de funcionamiento del pulso. Si no hay entradas, el receptor transmitirá un pulso de 1,5 ms. Esto corresponderá a un PWM de salida del 0%, los motores que recibirán este PWM no se moverán.

Si la duración del pulso de PPM es de 2 ms, esto significa que el control se está moviendo hacia adelante o hacia la derecha (según el canal que se esté utilizando), y 1 ms si el control se está moviendo hacia atrás o hacia la izquierda (de nuevo, dependiendo de el canal)

Actualmente estamos utilizando el PIC en modo de captura, tan pronto como se detecta el flanco ascendente del pulso, iniciamos el temporizador, que solo se detiene una vez que detecta el flanco descendente.

Esto nos dará la información que necesitamos para enviar la señal PWM. 2 ms significa 100%, 1 ms significa -100% y 1,5 ms significa 0% (motores apagados). Se utilizará un puente en H para corregir la dirección del PWM para los valores negativos, pero esto ya se ha implementado.

Estamos usando este PIC porque es lo que tenemos en nuestra escuela, y algunos otros equipos lo han usado antes y tiene más referencias. Si existe otro PIC que haga mejor lo que pretendemos, hágamelo saber también, pero no estoy seguro de que sea necesario.

    
pregunta triplebig

1 respuesta

1

En primer lugar, no es una buena idea usar abreviaturas, especialmente las que pueden tener múltiples expansiones y en una lista internacional. Al principio pensé que "RC" significaba condensador de resistencia , pero tal vez te refieres a control remoto . Hágalo bien y deletree, o al menos defina abreviaturas inusuales o ambiguas antes de usarlas.

Segundo, necesitas leer la hoja de datos de PIC. Después de hacer eso, verá que este PIC tiene una serie de interrupciones externas. El módulo CCP en modo de captura puede ser una fuente de interrupción externa, pero hay otras. Estos incluyen el pin INT, la interrupción en los pines de cambio e incluso los dos comparadores.

Si planea usar el módulo CCP como generador de PWM, entonces no puede usarlo en modo de captura para generar una interrupción externa. Sin embargo, puede haber otras formas de lograr lo que quiere que otros utilizando un módulo CCP. Explique exactamente qué aspecto tiene esta señal de "PPM" (otra abreviatura ambigua), qué datos están codificados por ella y cómo se codifican. Con esa información, tal vez podamos ser inteligentes al interpretarla usando otro hardware.

Dicho todo esto, veo que no tiene mucho sentido decidir utilizar un PIC tan antiguo, especialmente si realmente no tiene el hardware que desea. Hay muchos muchos PIC para elegir. Retroceda y proporcione las especificaciones reales de lo que viene y lo que debe salir de este bloque, y probablemente podamos ayudarlo a elegir un PIC y aconsejarle cómo usarlo de manera efectiva. Por ejemplo, algunas de las partes centrales de 24 bits tienen una cantidad relativamente grande de módulos que pueden hacer cosas similares a CCP. En esos, hay módulos separados para captura y PWM, por lo que no se denominan módulos CCP.

Añadido

Ahora dice que este bloque debe interpretar dos señales de pulso de 1-2 ms "servo de pasatiempo" habituales y producir dos salidas bidireccionales de accionamiento de motor PWM en consecuencia.

El PIC 16F628A es el PIC incorrecto para este trabajo. Ya que esto es aparentemente un hecho aislado, no tiene sentido intentar ahorrar uno o dos dólares a un costo considerable en la complejidad del firmware. Obtenga el PIC correcto con la combinación correcta de periféricos y haga que esos periféricos hagan la mayor parte del trabajo.

El dsPIC33FJ128MC802 parece un buen candidato después de un par de minutos con la herramienta de selección de piezas MAPS de Microchip. Viene en un paquete de 28 pines y tiene módulos de captura de entrada y módulos PWM. También tiene hasta 8 salidas PWM de control de motor, lo que podría permitirle usar hardware de puente H relativamente simple con el PIC conduciendo cada esquina del puente H desde un pin separado.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas