Paso 2: Selección de programación y Micro
Porque este iba a ser tan pequeño como sea posible usé un 16F88 SOIP de 20 pines. Esto era una versión amplia de 300MIL, Microchip tiene un SSOIP de 150mil (paquete de contorno delgado, pequeño), pero teniendo en cuenta que el dispositivo iba a ser el prototipo de la mano, quería usar un más grande más fácil para manejar el chip.
Obviamente un SOIP paquete costumbre caben en un programador así que tuve que usar ICSP... que dio lugar a un montón de duelo! ICSP es una manera de programar el microcontrolador, mientras que está todavía en un circuito. ICSP significa en circuito serie de programación y se utiliza habitualmente para programar tableros 'en blanco', o actualizar el software sin el microcontrolador desoldadura/forjar.
En primer lugar no había leído lo suficiente sobre ICSP para añadir el circuito adecuado para manejar ICSP en mi primer prototipo. Luego no he leído la hoja de datos de microchip sobre un par de pines extras en la 16F88SOIP de 20 pines. Estos pines son las patillas AVss y AVdd. Normalmente proporcionan los voltajes de referencia para el convertidor A/d.
Tomó un tiempo para averiguar que estos pines deben estar conectados (que conectado a GND/Vdd) para ICSP trabajar.
También es importante tener un circuito de reset adecuado para el pin MCLR. Esto es muy importante para que el programa ICSP puede reiniciar el microcontrolador, antes de hacer su programación.
Ver la imagen principal de esta sección. Muestra el pin MCLR conectado a Vss a través de una resistencia de pullup y un diodo. La subida es necesaria, porque para que ICSP funcione realmente debería tener el MCLR configurado como un pin de reset, en lugar de un pin de entrada (más sobre esto más adelante). El diodo evita que el voltaje de Vpp del programador ICSP que puede ser alrededor de 13V de dañar el resto del circuito.
El cuadro también muestra las conexiones para Vdd y AVdd conectados entre sí en cuanto a GND/AVss.
Consulte los archivos de esquema de Eagle para esquema completo (o en la sección siguiente) pero en el cuadro principal tenga en cuenta los símbolos 'X' poco en forma. Estos pads SMD, no hay ningún conector en este dispositivo para que pads SMD se utilizan para la soldadura de las conexiones de alimentación y la conexión ICSP. Los pines ICSP se arreglan en el tablero en un lugar conveniente. Longitudes cortas de cable conectan a una cabecera IDC de 10 pines (bastante estándar para programadores ICSP). La imagen de sub muestra este arreglo.
También se utilizan para la soldadura en el cristal del reloj. En el 16F88 los pines PGD y PGC son también las patillas T1OSO y T1OSI que se utilizan para conectar un cristal externo para el oscilador PIC T1 para hacer un reloj de tiempo real. Afortunadamente usted también puede utilizar estos de programación via ICSP así... Si tiene cuidado.
Si el oscilador se va cuando el programador ICSP intenta utilizar las clavijas, el programador ICSP va a tener problemas. Es necesario añadir un retraso en el comienzo de su programa. El fragmento de código siguiente muestra esto en acción. Tenga en cuenta que soy también deshabilitar al oscilador externo tan pronto como sea posible después del inicio sólo para la buena medida:
void main()
{
unsigned char i;
nDelay corto sin firmar;
t1con = 0; desactivar el timer1 como restablecemos
osccon = 0x76; para el reloj interno de 8MHz
mientras que ((osccon & 0 x 04) == 0); y esperar para que el reloj y estar listo
periféricos de configuración
Porta = 0;
PORTB = 0;
cmCon = 0x07; desactivar la salida del comparador, hacer ahora para configurar trisa correctamente
TRISA = 0xff; Todo listo para la entrada en el arranque
TRISB = 0xff; todos los pines de portb a la entrada
Ansel = 0 x 00; no análogo en este cct... paso importante muchas veces olvidado, lo hice!
delay_s(2); permitir tiempo de programador para hacer cosas... MUY IMPORTANTE
Por último, en la nota de la imagen principal el símbolo SMJ100 que es un puente sobre en la esquina superior izquierda superior llamado SJ100. Este iba a ser utilizado en una emergencia si accidentalmente programé en una configuración que desactiva el pin MCLR y no podía parar el oscilador de reloj relleno hasta los pines ICSP DGP/PGC. Esta es otra manualmente en formato Eaglecad biblioteca parte, un simple enlace SMD. Puente en la board es un lugar conveniente a unbridge si es necesario. Esto sería necesario en la situación anterior. Normalmente sólo conectas el pin MCLR (para restablecer el chip), el pin GND (de referencia) y los pernos de la DGP/PGC utilizar ICSP. En la práctica el programador la viruta del reajuste, enviar señales de control mágico al procesador mediante DGP/PGC y conseguir ser receptivos a algunos nuevos datos Lovin '.
Sin embargo si el procesador está ocupado haciendo otras cosas y no va a responder a un reset, necesita tire su carril de poder para conseguir su atención. En este caso el pin Vdd del programador ICSP debe conectarse al circuito. Quisiera cortar el puente, conecte un cable a la plataforma de Vdd SMD (el símbolo 'X' poco cerca) y dar el procesador nuevo. Al final cuando he descargado código Chunga, yo sólo alimenta el cct del programador sin utilizar este sistema. Si tuvieras un circuito más complejo o poder hambre debe tener alguna manera de desconectar el procesador del carril de alimentación del circuito y conectarlo al pin Vdd en su programador.
Así que en Resumen hacen acertados ICSP Recuerde:
-configuración de un circuito de reset adecuado con diodo y pullup resistencia de protección
-conectarse AVdd/AVss los carriles de la energía si usted no las está utilizando (y tiene el chip, solamente para el 16F88 de 20 pines... no para otras versiones).
-en su diseño, poner las conexiones ICSP en algún lugar sensible y fácil de obtener en el.
-tienen una manera de aislar la potencia del procesador de la energía de la cct y la conexión ICSP Vdd para emergencias
-evitar las situaciones de emergencia al asegurar que los pernos de la DGP/PGC están listos para usarse tan pronto como sea posible después de un reset.