Manipulación de registro del microcontrolador (5 / 6 paso)

Paso 5: ¿Cuál es el punto entonces?

Debe quedar bastante claro que escribir directamente a los registros puede ahorrar espacio en la memoria del chip. El bosquejo acortado también toma menos tiempo para ejecutar simplemente porque no hay bibliotecas para ver para cada llamada de función. Para la mayoría de las aplicaciones, esto no tendrá ningún uso real porque elimina una función como pinMode() no guardar mucho tiempo o espacio en un dibujo complejo. Sin embargo en algunas aplicaciones el tiempo de procesamiento es una preocupación enorme, y acortar la cantidad de tiempo perdido en los archivos de biblioteca permite más ciclos de reloj para otras cosas. Lo que quiero decir por eso es que aunque debe incluyen una función de biblioteca y por lo tanto ocupan espacio en memoria con ella, si no llama a muy a menudo y en lugar de otro utilizar los registros directamente, por lo menos ahorras tiempo (pero no espacio) por no mirando para arriba.

Otra opción es la habilidad de usar pernos de maneras que pueden no haber sido previstos originalmente, pero sin efectos secundarios. Por ejemplo, las patillas asociadas con PWM en el chipKIT Uno32 tienen un registro adicional asociado con ellos que en el módulo de comparación de salida (OCMP) llamado la salida comparan registro (OCxR). La OCMP tiene algunos registros más que lidiar con la sincronización de la señal PWM, pero la OCxR es el registro de salida de señal, similar al LATx (PIC32) o registros PORTx (ATMEL). El período PWM se calcula multiplicando... (fácil pero confusas cosas de matemáticas aquí)... y que valor se introduce en el período de registro (palanca). Palanca dice el registro del temporizador (TMRy) que impulsa la OCMP específico cuando reajustar a 0, pero tienes que añadir un extra 1. El ciclo de trabajo entonces se escribe en el registro secundario compara (OCxRS), que es básicamente un tampón porque este valor es transferido casi de inmediato a la compara (OCxR), pero no puede escribir directamente porque OCxR es de sólo lectura.

Ejemplo: Si la palanca tiene un valor de 5 y OCxRS se carga con un valor de 2, OCxR se carga con el 2 como bien. TMRy empieza a contar en 0. En 1, salidas de un alto valor y permanece allí. En el tiempo 2, nada cambia, OCx ha sido alto para la 1 cuenta. Al tiempo 3, OCx gotas baja puesto que ha sido elevado para 2 cuentas. Al tiempo 3, 4 y 5 nada cambia pero TMRy = palanca, por lo que se restablece y entonces empieza nuevamente en 0 en la siguiente cuenta. 1 señal de reloj pasa, que es Conde 0 otra vez y en la cuenta 1, OCx salidas alta otra vez. Aquí es figura 16-18 de sección 16: salida de comparar del manual de referencia familia PIC32:

Ajuste palanca 5 y OCxRS a 2 da realmente un ciclo de trabajo de 33% (2/6) y no el 40% (2/5). Es donde entra ese extra 1. Se agrega al valor de la palanca. Esto es sólo un simple ejemplo, y si palanca y OCxRS eran mucho más grandes, la diferencia de % sería mucho, mucho más pequeña.

Bueno, eso fue simple ¿no? sí, Nº podía oír los engranajes de pulido a un alto "Por ejemplo..." Debe has visto la mirada en rostros de mis compañeros de clase cuando el profesor nos mostró esto la primera vez. Pero por esta razón contamos con bibliotecas. Todas esta cosas es manejado por las bibliotecas cuando decimos el servo para que gire a cierta velocidad o queremos tocar una melodía con diferentes tonos. 1 pero) estamos limitados a sólo poder usar los pines PWM, y 2) bibliotecas ocupan espacio en memoria. ¿Qué hacemos si necesitamos más opciones de PWM? Utilizar los registros.

El siguiente bosquejo es un generador de tono simple. No voy a hacer un ejemplo servo ya no recomiendo usar servos sin la librería servo.h, aunque con algo de trabajo es definitivamente posible. Es muy fácil de extender más el servo más allá de su tope interno. Si quieres hacerlo, tendrás que escribir todas las cosas de fondo que servo.h maneja en su bosquejo, pero resultarán más bocetos en diferentes períodos PWM ya que cada línea lleva un poco de tiempo.

Antes de ver el bosquejo, algunas matemáticas simple rápido. En primer lugar determinar la frecuencia de salida que desee. Divida 1 por su frecuencia a llegar tu periodo y entonces dividir por la mitad. Asegúrese de que el valor es en microsegundos, entonces puesto que el valor tanto de las implementaciones de delayMicroseconds() función. Si queremos generar un ciclo de trabajo diferente del 50%, multiplique el valor de su período por el porcentaje de ciclo de deber que desea alta. Entrar en ese nuevo valor en la función de delayMicroseconds() dentro de la instrucción() if. Introducir el resto en la delayMicroseconds() función dentro de la declaración de otra persona .

Ejemplo: Desea una salida de 1kHz. 1/1000 Hz = 1 milisegundo = 1000 microsegundos = período. 1000μs/2 = 500 μs ⇒ delayMicroseconds(). Si desea que el ciclo de trabajo 60%: 1000μs * 60% = 600 μs ⇒ si() declaración delayMicroseconds() valor. 1000μs - 600μs = 400μs ⇒ otra declaración delayMicroseconds() valor. Agradable y fácil.

Aquí está el código del generador de tono:

A continuación encontrará imágenes o alcance de la salida, primero de chipKIT Uno32...

.. .y entonces desde el Arduino UNO.

Loco lo suficiente, estas imágenes fueron generadas utilizando el bosquejo de manipulación del registro como se muestra arriba, y cuando he probado el bosquejo de la función estándar, la misma imagen exacta apareció. ¿Raro, correcto? Así que pensé repuesto de tener que perder tiempo buscando en un duplicado. Yo también no tienen idea de por qué el Arduino UNO es bastante inestable en el pico de salida, así que si alguien tiene alguna explicación legítima, por favor aclarar en los comentarios.

Artículos Relacionados

Cómo conducir una gran cantidad de LEDs de unos pines del microcontrolador.

Cómo conducir una gran cantidad de LEDs de unos pines del microcontrolador.

Con el hecho de que muchos pines del microcontrolador tienen tres Estados (+ V, GND, o"alta impedancia", coche N*(N-1) LEDs de pines N. Así que el pequeño 8microcontrolador de PIN como un PIC12Fxxx o un ATtiny11 puede conducir 20 LEDs ensus cinc
Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Temporizadores y contadores son tan esenciales que usted verá muchos ejemplos que a lo largo de esta serie. Como el nombre lo dice, se utilizan temporizadores para tiempo y contando. Cuenta y el tiempo le permite hacer algunas cosas muy prolijo como
El registro del cambio del 74HC164 y su Arduino

El registro del cambio del 74HC164 y su Arduino

registros de desplazamiento son una parte muy importante de la lógica digital, actúan como pegamento entre los mundos paralelos y en serie. Reducir cuentas de alambre, perno uso e incluso ayudar a tomar la carga de tu cpu por ser capaces de almacenar
Introducción a la depuración del microcontrolador (y un cronómetro Pomodoro)

Introducción a la depuración del microcontrolador (y un cronómetro Pomodoro)

Lectores de Hola Hack-A-Day y prototipos peligroso!  Por favor voten por mí en la uC de Sparkfun concurso!  (Si votas por mí puede todavía votar para otros proyectos así)  El botón de votación es justo arriba e izquierda de aquí... hay que ir... más.
Cómo crear números de registro del barco

Cómo crear números de registro del barco

lo hice en TechShop Menlo Park. http://www.techshop.comEn el proceso de pintar un barco que consiguieran raspar las cifras de registro para una limpieza suave mirar. Sin estos el barco es ilegal estar en el agua. Se trata de cómo crearlas:Paso 1: Gua
Conceptos básicos del microcontrolador mbed para el brazo

Conceptos básicos del microcontrolador mbed para el brazo

mientras que visita a una feria de Brsitol Pi, recogí una placa de microcontrolador de brazo gratis (normalmente cuesta £30 +). Hubo dos juntas siendo regalados, que eran nuevos en el modelo de LPC1768 tiempo. Lo tengo porque en el momento había esta
STATSulator: Registro del entrenamiento

STATSulator: Registro del entrenamiento

el STATSulator es un php/mysql de la aplicación y bs2 escritorio pantalla lcd que realiza un seguimiento de tu entrenamiento. Le permite ver lo que sus compañeros de entrenamiento también están poniendo en, horas de raws, no los detalles para su acti
Registro del corte del laser

Registro del corte del laser

Paso 7: Haga su propio Puede convertir sus archivos de audio en trazados de corte vectoriales en diez pasos:1. descargar el procesamiento.2. Descargar Python 2.5.4.3. Descargar Audacity.4. descargar el código en GitHub (se puede descargar el archivo
DIY Laser Tag sistema (versión de prueba del microcontrolador)

DIY Laser Tag sistema (versión de prueba del microcontrolador)

aquí está el esperada etiqueta sistema microcontrolador setup! Si usted tiene tener un microcontrolador con entradas múltiples, entonces esto le dirá cómo utilizarlo para crear y programar un sistema de etiquetas láser de su cuenta con una personaliz
Araña y registro del bosque negro

Araña y registro del bosque negro

Utilice estos pasos para hacerte un registro con una araña y los huevos directamente de la selva negra!INGREDIENTESReceta de pastel de chocolate-blanco 1 taza de azúcar-1 taza de harina-6 cucharadas cacao en polvo sin azúcar-3/4 cucharaditas polvo de
FUENTE de alimentación del microcontrolador de PIC

FUENTE de alimentación del microcontrolador de PIC

Hola todo el mundo,Mi nombre es Atanas, de MACEDONIAEn primer lugar, quiero que todo el mundo para ver mi YouTube video.Mi video para este proyecto.Volveré pronto a publicar el esquema y el código de este proyecto.Gracias.
Gran pantalla de LED de desplazamiento

Gran pantalla de LED de desplazamiento

Este es un instructivo para crear una pantalla de LED desplazamiento grande (600 mm x 400 mm).Este fue un proyecto en Hackspace de Nottingham en el Reino Unido junto a Instructables. Instructables enviado el hackspace cientos de grandes (10mm) LEDs p
¿$ 15,00 informática básica? ¿

¿$ 15,00 informática básica? ¿

Imaginar un microcontrolador que se puede conectar un terminal de serie hasta para obtener un prompt ok? ¿Qué pasaría si se cambia uno de los registros de control puedo ver el efecto inmediato? ¿Es realmente posible descargar programas en este chip d
Construir y una bobina de Tesla Musical de MONSTER con un microcontrolador del código

Construir y una bobina de Tesla Musical de MONSTER con un microcontrolador del código

visita mi página de youtube para más proyectos: http://www.youtube.com/channel/UCksEFn8xaLP0z4rsiHa9zcA?feature=mheeComo suben los meses de invierno, muchos se obligado a permanecer en el interior... Para muchos, esto significa jugar scrabble con la