Vous êtes sur la page 1sur 14

Programacin del Microcontrolador

AT91SAM7S256
2010 -10 - ADSD

Consideraciones Fsicas: PINES

Los pines resaltados son los de propsito general. Son 32 pines compartidos
con perifricos como USART, Timer, ADCs, PWMs, etc..

Consideraciones Fsicas: PINES


Multiplexados
Existen 32 entradas/salidas multiplexadas con 3 dispositivos, lo que implica que por cada
uno de estos pines se puede configurar el microcontrolador para que funcione de una
manera determinada (de 3 opciones posibles).
Cada pin es independiente de los dems; por ejemplo, mientras un pin puede funcionar
como puerto paralelo, otro puede funcionar como PWM, otro como receptor serial, otro
como timer, etc.
Para saber qu funciones puede implementar cada uno de estos pines, es necesario
consultar la tabla de la pgina 36 del Datasheet. Una seccin de esta tabla se presenta a
continuacin.
Perifrico A
Perifrico B
Puerto Paralelo

Ms adelante se mostrar
cmo configurar los pines.

Estructura del AT91SAM7S256


Recuerde lo bsico:
Buses y
direcciones.

Cada perifrico tiene registros


de configuracin y sus
direcciones asociadas

Memorias
Internas

uP
(ARM7TDMI)
Perifricos
Datos
Direcciones
Control

Timers (3)
USB
Two Wire Interface
USART0
USART1
PWM
Sync. Serial Controller
ADCs (7)
Serial Peripheral Interf.
Otros Perifricos
Contr. Interrupc.

Puerto Paralelo

Mapa de memoria de Perifricos

Cuando va a utilizar un perifrico


debe configurarlo; por ejemplo si
va utilizar una USART debe
establecer:
Velocidad, bit de paridad, bit de
parada, tamao de datos, etc.
Para esto, cada perifrico tiene
registros en una direccin
especfica.

El mapa completo est en la pgina 20 del Datasheet.

Uso de perifricos
El PMC (Power Management Controller) es un mdulo
dentro del AT91SAM7S256, el cual tiene (entre otras
funciones) entregar la seal de reloj a los perifricos que
se vayan a utilizar. Para tal motivo el PMC tiene un
registro denominado PMC_PCER (Peripheral Clock Enable
Register) mediante el cual se puede habilitar dichas
seales de reloj. Revisar la hoja de datos del microcontrolador e ir a la seccin del PMC para ms detalles.
Dado que los pines del micro-controlador AT91SAM7S256
estn compartidos entre distintos perifricos (adems del
mismo puerto paralelo), el PIO (Programmable
Input/Output) se encarga de controlar quien tiene el
manejo de dichos pines. Revisar la hoja de datos del
micro-controlador e ir a la seccin del PIO Controller para
ms detalles

Recuerde seguir este flujo para utilizar


cualquier perifrico. Ahora se ver cmo usar el
puerto paralelo (pines como entradas o salidas).
Necesitar el perifrico PMC y el PIOA.

1. Power Management Controller


(PMC)
Bloque encargado de suministrar la seal de reloj a cada perifrico y sistemas
internos. Se busca optimizar el consumo de potencia.
Cuando se vaya utilizar algn
perifrico se debe activar la seal de
reloj para el mismo a travs del registro
llamado: Peripheral Clock Enable

Register (PMC_PCER).
En este registro de 32 bits, escribir un
1 en alguna posicin del mismo
implica activar determinado perifrico.

Para saber qu escribir en el registro se


debe consultar la tabla que establece
cul Identificador de Perifrico
corresponde a cada bit de este registro.

Registro PMC_PCER

En esta tabla se observa que cada perifrico tiene un identificador PIx. Los bits 0 y 1 de este
registro no se utilizan por lo que se puede escribir 0en ellos (lo cual no tiene ningn efecto).
El ltimo paso para activar el reloj para los perifricos es determinar en cul(es) bit se debe(n)
colocar 1 . Se necesita consultar la tabla de Identificacin de Perifricos.

Peripheral Identifiers
El puerto paralelo
corresponde a

PID2
Si se quiere
activar la seal de
reloj para este
perifrico se
necesita escribir
1en el bit que
corresponda a
PID2 del registro
PMC_PCER, es
decir, en el bit 3.
El valor a escribir
sera:
0x00000004H

Configuracin de Pines para Puerto


Paralelo
Puesto que las lneas son compartidas en primer lugar se necesita especificar en qu modo
funcionar el pin. Para esto existen 3 registros de 32 bits (un bit por cada pin) llamados
PIO_PER, PIO_PDR, PIO_PSR, cuya funcionalidad es:

PIO_PER [32](PIO Enable Register): Activa los pines para funcionar como puerto paralelo
(entrada o salida de propsito general). Cada bit corresponde a un pin, as si se quiere
utilizar el pin 0 como puerto paralelo el valor de PIO_PER(0) debe ser 1.

PIO_PDR [32] (PIO Disable Register): Cuando el pin se va utilizar con uno de los perifricos
disponibles y no como puerto paralelo se debe escribir un 1 en la posicin deseada. Si el
pin 31 se quiere utilizar con los perifricos, el valor de PIO_PDR(31) debe ser 1.

Pines como entradas salidas


Una vez se ha configurado el pin para puerto paralelo es necesario determinar si este ser
de entrada o salida. Los registros encargados de esta funcin son:

PIO_OER [32](Output Enable Register): Activa los pines para funcionar como salida. Cada
bit corresponde a una lnea, as si se quiere utilizar el pin 0 como salida de puerto paralelo
el valor de PIO_OER(0) debe ser 1.

PIO_ODR [32] (Output Disable Register): Cuando el pin se va utilizar como entrada del
puerto paralelo se debe escribir un 1 en la posicin deseada. Si se requiere que el pin 31
sea una entrada, el valor de PIO_ODR(31) debe ser 1

Para saber qu valor se va escribir si el pin fue de salida, se utilizan los registros:

PIO_SODR [32](Set Output Data Register): Si se requiere sacar un 1 en la lnea x, se


escribe 1 en PIO_SODR[x].
PIO_CODR [32] (Clear Output Data Register): Si se requiere sacar un 0 en la lnea x, se
escribe 1en PIO_SODR[x].

Prender-Apagar LED en el PIN 26


(Con un retardo para visualizar)
Inicio
si
no

si
no

Programa en Assembler
Declarar como constantes
los valores que se utilizarn
en el programa. En este caso
son las direcciones.

R0 = PMC_PCER = 0xFFFFFC10
R1 = 0x004H
(Direccin apuntada por R0) = R1:
PMC_PCER = 0x04H

R0 = 0xFFFFF400
R1 = 0xFFFFF410
R2 = 0x04000000
PIOA_PER = 0x04000000H
PIOA_OER = 0x04000000H

Programa en Assembler (2)


Se cargan en R0 y R1 las direcciones de los registros
del puerto paralelo que permitirn prender y apagar
los pines.
En R3 se carga una constante para hacer el retardo.
Prende PIN

La instruccin BL es para llamar una subrutina, es


decir, saltar a una funcin y poder devolverse.
Apaga PIN
R3 = R3 - 1

La instruccin: BX
R14; se devuelve a donde se
hizo el llamado a subrutina.

Vous aimerez peut-être aussi