Introducción a la depuración del microcontrolador (y un cronómetro Pomodoro) (5 / 9 paso)

Paso 5: Puntos de interrupción, los locales y registros

Golpeó el "ir" (
) el botón para iniciar la pomodoro. Preste especial atención a los LEDs. Hay algo sospechoso acerca de los valores que se muestran. Cuando el temporizador comienza en primer lugar, debe mostrar el número total de minutos de pomodoro (25) más los minutos de descanso (5). En binario, es '11110'. Hmm... ¿por qué en todos los cinco LEDs?

Por lo tanto, echemos un vistazo a la función 'setLEDs'. O bien, es recibir el valor incorrecto o recibir el valor correcto pero mostrando el valor incorrecto (o alguna extraña combinación de ambos).

Desplácese hacia abajo hasta la primera línea de la función setLEDs (línea 22, ver imagen 1). Haga clic derecho en cualquier parte de la línea y selecciona "Toggle Breakpoint (código)". ¿Observa el punto rojo a la izquierda de esa línea de código? Puede hacer doble clic en ese margen a set/unset puntos de interrupción, así. (imagen 2) Un punto de interrupción es un punto de la en el código donde interrumpirá la ejecución del programa que permite depurar.

Con el sistema de punto de interrupción, presione el "Reset" (

) botón. Después de presionar "Reset" se le pedirá con un mensaje de largo aliento que dice 'Ejecutar a principal' puede tomar mucho tiempo. Lo que esto significa es que el depurador es parar en la primera línea en la función principal pero su único punto de interrupción de hardware se encuentra en la línea 22. Para parar en el principal, el programa ejecutará una línea en un momento hasta que llega al principal. Ahora, eso no es un gran problema, pero esta limitación puede ser un problema con el código más complicado. Nota que microcontroladores más capaz pueden permitir muchos más puntos de interrupción hardware, pero es mejor que nada (sí, te estoy miro Arduino). :)

Por ahora, simplemente entender, que si un punto de interrupción se establece cuando se inicia el código, va a tomar un segundo extra o dos para llegar a la principal.

¡ UF... bien. ¿La flecha verde está en la primera línea principal ahora (línea 50, ver imagen 3)? Genial, ahora nos podríamos solo paso (es decir, "Paso en" (

)) hasta el setLEDs función, pero esto podría tomar mucho tiempo. En su lugar, porque tenemos un punto de interrupción, acaba de salir "ir « (
).

Casi inmediatamente, la flecha verde se desplaza a la línea de 22. Para tener una mejor idea acerca de lo que está haciendo esta función, seleccione "Ver"→"locales" en el menú. (imagen 4) En la ventana que surge, la variable local "valor" se muestra con... err... su valor, "0x1e". Clic derecho sobre la variable en la ventana locales le permite cambiar la notación de la base del valor. Cambiarlo a decimal y aviso ahora que la función de hecho pasan el número correcto (30).

Puesto que esta función sólo se ocupa de una sola variable y sabemos que es correcto, vamos a cerrar la ventana de "locales". Ahora seleccione "Ver" → "registrarse" del menú. En la ventana "registro", cambiar el cuadro de lista desplegable para mostrar "puerto 1/2". Expanda el árbol de "P1OUT". (imagen 5)

P.0 y pág. 7 pueden tener valores aleatorios pero P.1, P.6 deben ser todos cero. Pulsa "Paso en" (

) un par de veces. Como que solo paso a través del código, podemos ver los registros de cambio. Incluso no necesitas mirar la hoja de datos para saber que el registro P1OUT es el estado de los pines digitales en el microcontrolador ya que los LEDs deben estar reflejando lo que se ve en la ventana de "Registro". Valores de rojo en la ventana "registro" significan que la última instrucción ejecutada cambiado ese valor en particular. Esto se aplica a las variables en la ventana de "Gente" así.

Tenga en cuenta que el valor sólo se ilumina en rojo si el registro cambia, así que después de ejecutar la línea 45, el registro es de color rojo y está mostrando un 1 en lugar del esperado 0. Hemos encontrado nuestro error! Parece invertir los operadores binarios. (imagen 6)

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
Cronómetro con microcontrolador ATmega328 de vuelta

Cronómetro con microcontrolador ATmega328 de vuelta

este instructable le mostrará cómo construir su propio cronómetro para registrar múltiples fracturas utilizando un microcontrolador programable ATmega328. Cuando uno presiona el botón de inicio (o abofetea a la banda de metal en mi reloj), la pantall
Controlado de radio del cronómetro

Controlado de radio del cronómetro

Como profesor y miembro de diversas organizaciones deportivas, he observado varios sistemas de tiempos diferentes, desde el tradicionales cronómetros independientes a sistemas coordinados más sofisticados (y caros) que al mismo tiempo tiempo, luego g
Campeonato de Barista preparación cronómetro • Introducción

Campeonato de Barista preparación cronómetro • Introducción

Sobre las necesidades de la (2014) Campeonato Mundial de baristas de las reglas y regulaciones, es necesario un tiempo adecuado y preciso de medición durante la competición. Estas mediciones se realizan generalmente por cronómetros regulares con toda
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
Manipulación de registro del microcontrolador

Manipulación de registro del microcontrolador

Siempre estoy sorprendido por la nueva tecnología que constantemente está saliendo que permite a aficionados como yo acceso a microcontroladores poderosos y baratos como los consejos de desarrollo de Arduino o chipKIT. Son fácil de programar y fácil
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
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.
Medida del ángulo mediante giroscopio, acelerómetro y Arduino

Medida del ángulo mediante giroscopio, acelerómetro y Arduino

el dispositivo es un prototipo áspero de lo que eventualmente se convertirá en un robot de balance del uno mismo, esta es la segunda parte de la cosa del agujero (leer acelerómetro y controlar un motor a balance del uno mismo). La primera parte con s
Trípode caballete soporte para cuchillo y lanzamiento del tomajao en 16" diámetro objetivo redondo

Trípode caballete soporte para cuchillo y lanzamiento del tomajao en 16" diámetro objetivo redondo

esto es para apoyar un objetivo redondo de cuchillo competitivo y tomahawk lanzando práctica utilizando la Alianza de lanzadores de cuchillo americano reglas y regulaciones.  La circular deberá ser un mínimo de 16 pulgadas (41 cm) de diámetro y 8 pul
Inicio rápido de la Junta de ARM7 desarrollo

Inicio rápido de la Junta de ARM7 desarrollo

la Junta de desarrollo de ARM7 viene con LPC2148 microcontrolador de brazo. El microcontrolador puede programarse a través del puerto serial usando el gestor de arranque serial de la en-viruta. La Junta cuenta con varias interfaces disponibles a bord
Self balancing one wheeled electric skateboard

Self balancing one wheeled electric skateboard

NOTE:Mayo de 2011: Este instructable es ahora bastante antiguo (relativamente) y ahora pude reconstruir este proyecto más simplemente con un Arduino como el controlador.Actualmente estoy trabajando en un monociclo con el mismo controlador de motor OS
Escalas de analfabetismo personas

Escalas de analfabetismo personas

para mi dayjob, trabajo con personas con discapacidades físicas y mentales. Algunas de estas personas son también analfabetismo y que a veces puede causar problemas para el trabajo que tienen que hacer. Uno de los puestos de trabajo que hacen es volv