Ultrasónico Robot evitando obstáculo (8 / 16 paso)

Paso 8: PIC programación, parpadear un LED, cargador de arranque

¿Por qué necesitamos un gestor de arranque en primer lugar?

Es necesario, sin embargo él que miente alrededor de nuestra área de trabajo con sin razón no es un PicKit3 alrededor. Inicialmente no quería complicar mi vida con bootloaders, pero más tarde me di cuenta la verdad: este proyecto es mejor sin el PicKit. Es agradable, especialmente si es un cable mini USB extremadamente común, que cada aficionado tiene un montón de tener un solo cable para la programación. La cabecera de cinco pines ICSP fue dejada fuera el diseño intencionalmente, utilicé mi tablero de conector ZIF flashear el bootloader en el PIC.

Gestor de arranque USB, simple y buena

Mirando la hoja de datos del procesador que me decidí a utilizar, se puede ver que existe UART y USB. Si escojo UART, necesito un USB-UART convertidor y un montón de hilos - en contra del propósito. Así que la opción mejor, más simple, más bonita es USB. Microchip ofrece todo tipo de muestras de código para las fotos, gestores de arranque también. Si usted descarga e instala "Librerías de Microchip para aplicaciones", habrá una carpeta completa sobre todo tipo de aplicaciones USB, bootloaders, herramientas y otras cosas útiles. En la subcarpeta "Bootloaders" escogió "USB HID Bootloader" y abrió en MPLAB X. Después de leer a través de ella un par de veces para entender su lógica, he implementado modificaciones para que sea perfecto para mi RekaBot.

Unas palabras sobre gestores de arranque

Un gestor de arranque es una sección especial del código que está escrito en microcontroladores una vez y proporciona una manera para cargar firmware sin necesidad de un programador (alto voltaje) especial, como el PicKit3 en nuestro caso. Desafortunadamente, no hay ninguna manera de evitar completamente el uso del PicKit, el gestor de arranque tiene que llegar de alguna manera en el PIC. La parte buena: usted puede pedir prestado un PicKit, ICD2 o cualquier interruptor intermitente de la foto de un amigo, y dar de nuevo una vez que el gestor de arranque está escrito en el microcontrolador. Después de - dependiendo de qué tipo de gestor de arranque tiene flasheada, puedes subir firmware a la memoria de programa a través de UART, USB, CAN o lo que sea. Utilizar gestores de arranque es simple, pero viene con la desventaja de perder la memoria de programa precioso. Algunos gestores de arranque comen menos espacio, algunos comen más - este se come 1K de memoria. Al inicio de cada PIC en la dirección 0 se enciende y comienza a ejecutar cualquier código el programador ha escrito allí. Si es el gestor de arranque = el PIC se ejecuta el gestor de arranque. Si es el código de usuario = la PIC se ejecuta el código de usuario. Bastante simple!

Para poder utilizarlos dos, tenemos que cambiar de alguna forma entre estos dos programas. Este cambio puede hacerse en base a una condición, evento o lo que sea - va a ser muy parecido a una declaración enorme "if". Elegí esta condición que el nivel de voltaje en un pin de entrada, llamado sentido de USB en los esquemas. Este pin es conectado al pin de 5V del conector USB a través de un resistor. Si el pin está a 5 [V] en el arranque, el PIC tiene que ejecutar la rama del gestor de arranque de la gran "si", si es a 0 [V], el código de la aplicación de usuario tenía que ejecutar. Coloqué el código de usuario justo después del código de gestor de arranque, en la dirección 1000h. El PIC18F4550 verifica el pin de pin de sentido varias veces, así que cuando se quita el cable USB y 5 [V] desaparece de RD3, el PIC va saltar el código colocado en el 1000h, código de la aplicación de usuario. En el código de la aplicación de usuario verificar nuevamente el nivel de voltaje en el pin de sentido, si el programa ve a 5 [V] en él, el cable USB está conectado otra vez y el PIC tiene que saltar para el gestor de arranque. Hacer este salto al modo gestor de arranque con una instrucción de "RESET" de montaje en línea. Desde el PIC comienza a ejecutar desde la dirección 0, lo más simple y más común es colocar el código de gestor de arranque allí y el código de usuario justo después el gestor de arranque.

El código de gestor de arranque puede modificarse para comprobar si existe o no un firmware válido por escrito en la foto. Esto se hace comprobando el contenido de la memoria en dirección 1006-1007 horas. Después de cada programación, los insertos de bootloader "600D" (leet de 'bueno') en este lugar, lo que significa que el código se ha escrito en el PIC con éxito - esto es lo que consigue comprobar su validez. Debemos especificar en la configuración de proyecto de aplicación de usuario que esta ubicación no debe ser sobrescrito, ver las imágenes para ver cómo se hace (ROM gamas se especifican para saltar este lugar cuando se compila el código de la aplicación de usuario). No hacerlo resultará en errores muy difíciles de detectar más tarde. La sección donde las mentiras del gestor de arranque deben estar protegidas así: esto se hace por compensación el código de la aplicación de usuario todo por 1000h (código offset parámetro en las opciones del vinculador). Gestores de arranque son generalmente situados al principio o al final de la memoria de programa - debe tener cuidado de no sobreescribirlo! Quería añadir alguna parametrización para este dispositivo, por eso la gama de 3000-3100 está protegida así. No necesitas eso, solo uno!

Problemas llegué a trabajar con el gestor de arranque

Compilar el proyecto resultará en un archivo hexadecimal generado - esto tiene que ser flasheado en el PIC con un PicKit o lo que sea. En un proyecto más viejo que me encontré con un problema extraño, la herramienta de gestor de arranque USB no detecta nada. Decidí hacer las mediciones en el pin VUSB del PIC de mi alcance y el momento que mencioné el perno con la sonda de alcance, el conocido sonido de USB y tiene reconocida la Junta! Pensé que el problema se fue, pero en cuanto me lo quitaron la sonda, la cosa dejó de funcionar otra vez. Me di cuenta de que todo funciona cuando la sonda alcance, incluso las escrituras, se restablece - el problema tuvo que ser algo que fija la sonda. Entonces pensé: ¿Qué tienen las puntas de prueba alcance? Capacitancia parásita. El condensador en el pin VUSB fue enorme en valor y no podía filtrar los ruidos de alta frecuencia. Se agregó un capacitor de 100nF en paralelo, y la junta fue reconocida inmediatamente.

Sabiendo esto por adelantado, he añadido un condensador de valor pequeño en la parte superior original, el USB vino en sin problema en el primer intento! Lección aprendida!

Si funciona el gestor de arranque, flash el programa de luz intermitente de LED, depurarlo si es necesario y proceder a escribir cosas más serias, que se describe en los pasos siguientes.

Artículos Relacionados

Cómo hacer un Robot evitando obstáculo

Cómo hacer un Robot evitando obstáculo

evitando el obstáculo el robot es un robot sencillo que es funcionado por un arduino y lo que hace es que sólo deambula alrededor y evita obstáculos. Detecta los obstáculos con un sensor de ultrasonidos HC-SR04 en otras palabras si el robot detecta o
Coche RC robot evitando obstáculo

Coche RC robot evitando obstáculo

este es el coche antiguo.Encuentro un viejo coche de RC en mi galpón.¿Cómo me convertido en un robot? Es sencillo, que te explico en el siguiente paso.Paso 1: El viejo coche del RC 1. quitar la carcasa2 quitar el circuito.Paso 2: Control Control util
Coche de Arduino evitando obstáculo

Coche de Arduino evitando obstáculo

Hola a todos estoy compartiendo aquí hago un obstáculos evitando coche de arduino. Aquí utilicé material fácilmente disponible, estos robo seguir ejecutar hasta y a menos que algún obstáculo delante de coche así que vamos a ver y hacer...Paso 1: mate
Robot de obstáculo de Arduino

Robot de obstáculo de Arduino

Cuando este proyecto en el coche de control remoto circuito de Arduino es quitado y pegado detectar los obstáculos en el frente de la dönüştürüldü.arab robot instalar sensor ultrasónico para detectar sağlandı.engel golpear obstáculos o barreras que m
Robot de obstáculos evitando L298N puente H doble controlador Motor y sensor ultrasónico

Robot de obstáculos evitando L298N puente H doble controlador Motor y sensor ultrasónico

¡ Hola chicos!Aquí les dejo algunas imágenes del robot:el hardware necesario:Arduino protoboard.protoboard.sensor de ultrasonidos.2 motores DCcables.Regulador del motor L298N puente h dual.chasis de aluminio.el código de arduino:http://SH.St/PQEQT¡¡B
Utiliza un sensor ultrasónico robot carro funcionando con batería de la motocicleta con pantalla LCD

Utiliza un sensor ultrasónico robot carro funcionando con batería de la motocicleta con pantalla LCD

Este coche robot trabaja con sensor ultrasonido HC-SR04 y alimentado con batería de la motocicleta 12V usado.Paso 1: Cuerpo de coche robot Hacer el cuerpo del robot utilizando madera contrachapada y una pieza plana de madera. Cortar la madera contrac
Obstáculo, evitando Robot - escudo del Motor

Obstáculo, evitando Robot - escudo del Motor

¡ Hola chicos! Este es un tutorial fácil y básico para la fabricación de un Robot evitando obstáculo... Sigue leyendo...Paso 1: Materiales necesarios Para construir el Robot evitando obstáculo, se necesita-Arduino Uno R3 (recomendamos usar Arduino Un
Un infrarrojo de Arduino controlado y Robot de evitación del obstáculo

Un infrarrojo de Arduino controlado y Robot de evitación del obstáculo

Hola todo el mundo,Este Instructables se divide en dos fases, que hace conveniente para el principiante y los diseñadores de robots intermedios.La primera fase abarca el uso de la placa de arduino nano solamente como controlador. Con esto, vamos a co
Obstáculos del Robot Qtechknow

Obstáculos del Robot Qtechknow

¿Has pensado de controlar su FuzzBot de forma inalámbrica? ¿Quieres hacer un real - life video juego? ¿Quieres aprender sobre la tecnología detrás de NFC y RFID? -el Qtechknow Robot de obstáculos cómo - a guía es para usted!Por favor votar para mí (e
Obstáculo, evitando Robot con Arduino

Obstáculo, evitando Robot con Arduino

Hola chicos en este instructable veremos cómo hacer un obstáculo autónomo evitando Robot.This robot ha sido diseñado y programado de tal manera que evita la colisión. Básicamente, el robot se mueve hacia delante y siempre que detecte un objeto/obstác
Obstáculo de Arduino evitando Robot

Obstáculo de Arduino evitando Robot

En este instructable le mostraré cómo hacer tu propio obstáculo evitando robot!Vamos a utilizar la placa de Arduino uno y un sensor de ultrasonidos. Si el robot detecta un objeto delante de él, con la ayuda de un pequeño servomotor, explora la zona i
Obstáculo del uno mismo evitando Robot

Obstáculo del uno mismo evitando Robot

Es un obstáculo del uno mismo evitando el robot. Utiliza dos sensores de ping para detección de obstáculos. Utiliza un escudo del Motor L293D Adafruit para alimentar cuatro motores de 12 voltios de alto esfuerzo de torsión. Él también feawtures un Ar
Obstáculo evitando Robot V2

Obstáculo evitando Robot V2

recientemente hice un instructable sobre un obstáculo sencillo evitando robot. En este instructable implementará un barrido PING))) sensor, a diferencia del anterior robot que tiene sensor estaba inmóvil. Utilizaré este tercer servo que el PING))) se
Cómo hacer un obstáculo evitando Arduino Robot! "Mi Robot V1"

Cómo hacer un obstáculo evitando Arduino Robot! "Mi Robot V1"

Este instructable muestra las instrucciones de pasos para hacer un obstáculo evitando robot con Arduino.Empezar a dejarmi bloghttp://robot4pro.blogspot.com/p/My-robots.htmlPaso 1: Materiales necesariosAquí le damos todo que lo necesario para hacer My