Problemas con el control periférico de un LED en un chip AT91SAM7X

1

Estoy usando un chip AT91SAM7 en el tablero de MakingThings para algún trabajo personalizado. Para comprender mejor el controlador de periféricos, estoy intentando llamar / controlar directamente un pin de salida (PA12) para encender el LED de estado.

main()
{
    AT91C_BASE_PIOA->PIO_PER = AT91C_PIO_PA12; //Enable Pin PA12
    AT91C_BASE_PIOA->PIO_OER = AT91C_PIO_PA12; // Enable Pin PA12 as 'peripheral manager' controlled pin 
    AT91C_BASE_PIOA->PIO_PPUDR = AT91C_PIO_PA12; //Disable Pull Up resistors
    AT91C_BASE_PIOA->PIO_SODR =  AT91C_PIO_PA12; // Set pin state to 'high'
}

Ese código se construye bien. Cuando quemo el firmware y lo pruebo, eso no enciende el LED en el pin A 12. El controlador periférico es un poco complejo, por lo que me preocupa que esté haciendo algo en un orden incorrecto o que me falte algo. otro registro que se debe establecer. ¿Alguien tiene comentarios o información sobre por qué podría estar mal?

(Puedo ejecutar otro código, hacer otros ejemplos, ejecutar datos USB, etc. Es solo el simple encendido de un LED que es extraño).

    
pregunta Far McKon

2 respuestas

1

Eche un vistazo a este código de muestra de LED parpadeante.

enlace

¿Cómo se ha conectado el LED?

    
respondido por el Toby Jaffey
0

Si es una cuestión de hardware, hay un par de formas diferentes de hacer que una luz LED use un pin PIO ..

Si tiene el ánodo cableado de LED a + V, el cátodo hacia el pin PIO (con una resistencia limitadora adecuada, por supuesto), será un estado de pin BAJO que encenderá el LED.

Si tiene el ánodo del LED hacia el pin PIO y el cátodo hacia el suelo, un ALTO debería encender el LED, como lo ha codificado.

Una rápida búsqueda en Google para ARM91SAM7 mostró una hoja de datos de Atmel para toda la serie, el documento de Atmel se denomina doc6175.pdf.

Una regla de oro para elegir la resistencia limitadora es elegir un valor que ofrezca entre 5 y 20 mA, al disminuir una tensión de aproximadamente 1.25 V menos que su riel de suministro. Sin embargo, mirando la hoja de datos, la especificación dice que este chip puede "dibujar" solo 8 mA (sección 6.6), que es lo suficiente para obtener luz de un LED; Más corriente LED.

La figura 27-3 en ese pdf muestra todos los ajustes de registro de control PIO que configuran el pin. Después de haber pasado unos 15 minutos mirando eso y tu código, parece que has cubierto lo necesario. El único registro que no modificaste fue PIO_MDSR, pero si leo el diagrama correctamente, este se restablece en un estado compatible con lo que intentas hacer.

    
respondido por el JustJeff

Lea otras preguntas en las etiquetas