Tengo una señal periódica que quiero usar como disparador de dos temporizadores: TIM8 y TIM2. Cuando la señal sea alta, TIM8 debería comenzar a funcionar y TIM2 se sincronizará una vez. TIM2 se configurará en modo de reloj externo 2. He configurado PA0 como disparador externo para TIM8 y PA5 como disparador externo para TIM2, y conecté la señal a ambos pines.
Encuentro que TIM8 no se inicia, a menos que desconecte el PA5. Tan pronto como PA5 y PA0 están conectados, TIM8 ya no se inicia. También encuentro que TIM8 se inicia si comento la línea que configura PA5. En este caso, PA5 está en un estado alto-Z de forma predeterminada.
Parece que la señal solo puede conducir un solo pin a la vez, no múltiples. Por qué sería este el caso? La señal que estoy usando se puede configurar a diferentes potencias de unidad, he experimentado con todos ellos y obtuve el mismo resultado.
PA5 no está conectado a ninguna otra cosa en la placa de desarrollo que estoy usando , y Observé el mismo comportamiento con algunos otros pines. Intenté configurar otros pines en GPIOA como entradas AF y observé que TIM8 dejaba de funcionar cuando tanto el PA0 como los otros pines estaban conectados.
El código que estoy usando es el siguiente:
GPIO_InitTypeDef gpio;
NVIC_InitTypeDef nvic;
GPIO_StructInit(&gpio);
/* Configure PA0 for TIM8 ETR (HSYNC to start pixel clock), datasheet page 62 */
gpio.GPIO_Pin = GPIO_Pin_0;
gpio.GPIO_Mode = GPIO_Mode_AF;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &gpio);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_TIM8);
/* Configure PA1 for TIM2 CH2 (This will be VSYNC, to reset the timer) */
/* Configure PA5 for TIM2 ETR (External clock, this will be HSYNC to count syncs) */
gpio.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_5;
gpio.GPIO_Mode = GPIO_Mode_AF;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &gpio); // Works if this is commented
GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_TIM2);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_TIM2);
La única explicación que se me ocurre es que PA5 está bajando la línea, lo que evita que PA0 reciba la señal. Pero si PA5 se configura como una entrada, no debe tirarse bajo ya que tendrá una alta impedancia. Entonces estoy pensando que debe estar mal configurado, o dañado. PA0 también puede ser un ETR para TIM2 y PA0 definitivamente funciona, lo intentaré y veré si puedo hacer que TIM2 funcione. Si lo hace sospecharé del pin