Autor Tema: Programar PIC  (Leído 4648 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jagmarej

  • PIC10
  • *
  • Mensajes: 5
Programar PIC
« en: 23 de Mayo de 2011, 11:14:58 »
Hola, soy nuevo (pero nuevo en todos los sentidos) en ésto de los PIC.

Después de leer algo sobre el tema me he lanzado a intentar hacer mis primeros programas, lo típico:
- con una entrada un led hace un blink cada 15 segundos
- con otra entrada el led permanece fijo
- con otra entrada el led blinkea, medio segundo encendido y medio segundo apagado.

Dado que utilizo tres entradas y una salida me he ido a comprar el PIC10F204, me he descargado el MPLAB, el CCS, lo he instalado y tengo en mis manos el PICkit3 de Microchip. A la hora de conectar el programador me orienté por ésta imagen
PICkit3

pero uniendo:
PICkit3 - 10F204
1--------- 8 - VPP
2--------- 2 - VDD
3--------- 7 - VSS
4--------- 5 - DAT
5--------- 4 - CLK
6---------

y recibo el mensaje PK3Err0045: You must connect to a target device to use PICkit

No se si es debido a que conecto algo mal, a que no puedo programar ese PIC con ese programador o a que me falta algo (una tensión auxiliar o alguna resistencia en algún sitio), pero el tema es que no puedo avanzar y estoy algo desanimado. A ver si con vuestra ayuda puedo salir de este pequeño bache debido a la inexperiencia en el tema.

Gracias por vuestra ayuda por adelantado

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Programar PIC
« Respuesta #1 en: 23 de Mayo de 2011, 13:05:25 »
Conectas directamente al microcontrolador o en los pines DAT y CLK tienes algún dispositivo conectado?
No contesto mensajes privados, las consultas en el foro

Desconectado jagmarej

  • PIC10
  • *
  • Mensajes: 5
Re: Programar PIC
« Respuesta #2 en: 23 de Mayo de 2011, 13:14:14 »
Directamente.

Exclusivamente:
- PlacaBoard (creo que la llamáis así)
- PIC
- cinco cables
- PICkit3

Creo que el problema va a ser que necesito conectar una fuente externa de 5 Vcc entre el Vdd y el Vss, pero no me atrevo por si me cargo el PICkit3.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Programar PIC
« Respuesta #3 en: 23 de Mayo de 2011, 14:00:19 »
hola, no necesitas ponerle una fuente externa al pic, el pickit te da el voltaje para programarlo, quizas sea obvio, pero checa que hayas elegido bien el pic que vas a programar, es decir, que coincida tu moldelo y el que seleccines en el pickit.

tambien depende de con que lo programes, si es en mplab, primero te pide que energices el circuito para programarlo, para esto en programmer y luego en opciones le dices que prenda el pickit, para que te energice el cicuito
"Nada es imposible, no si puedes imaginarlo"

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Programar PIC
« Respuesta #4 en: 23 de Mayo de 2011, 14:15:54 »
tambien depende de con que lo programes, si es en mplab, primero te pide que energices el circuito para programarlo, para esto en programmer y luego en opciones le dices que prenda el pickit, para que te energice el cicuito

Exactamente eso debe ser, en opciones coloca que el pickit provea de 5V al microcontrolador. Creo que en pickit3 hay habilitarlo,  en pickit2 el mismo testea la condición.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jagmarej

  • PIC10
  • *
  • Mensajes: 5
Re: Programar PIC
« Respuesta #5 en: 24 de Mayo de 2011, 03:12:19 »
hola, no necesitas ponerle una fuente externa al pic, el pickit te da el voltaje para programarlo, quizas sea obvio, pero checa que hayas elegido bien el pic que vas a programar, es decir, que coincida tu moldelo y el que seleccines en el pickit.

tambien depende de con que lo programes, si es en mplab, primero te pide que energices el circuito para programarlo, para esto en programmer y luego en opciones le dices que prenda el pickit, para que te energice el cicuito

Efectivamente, esa era la solución. Muchísimas gracias, ahora ya me sale el tan ansiado "Programming...  Programming/Verify complete"

Al ser mi primer programa me gustaría publicarlo por aquí, pues seguro existirá una forma más profesional de hacerlo y, dado que lo que quiero es aprender, me gustaría conocerla. Pero primero me voy a pegar un poco con él.

¿Conocéis de algún sitio donde pueda ver ejemplos de programación con CCS de éste PIC?. He buscado en el foro y he visto un par de ellos con el PIC10F200, pero ninguno con el 204

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Programar PIC
« Respuesta #6 en: 24 de Mayo de 2011, 08:54:07 »
puedes usar los ejemplos que encuentres en el foro, veraz que es facil y pronto podras pasarte a un pic de gama mas alta
"Nada es imposible, no si puedes imaginarlo"

Desconectado jagmarej

  • PIC10
  • *
  • Mensajes: 5
Re: Programar PIC
« Respuesta #7 en: 24 de Mayo de 2011, 10:25:40 »
Quisiera saber vuestra sincera opinión sobre el programa.

Por favor, ser críticos, pero no destructivos, es mi primer programa.

Por supuesto, toda mejora del programa será bienvenida y me ayudará a comprender algo más a estos grandes desconocidos para mi.

Código: [Seleccionar]
#INCLUDE <10F204.h> // Incluir librería del PIC

#FUSES NOWDT // Deshabilitar Watch Dog
#FUSES NOMCLR // Deshabilitar el Reset por el pin 8 (MCLR)
#FUSES NOPROTECT // Deshabilitar la protección del código

#USE delay(clock=4 000 000) // Utilizar el oscilador interno y su velocidad

#define SALID PIN_B0 // Asignar la patilla GP0 a la variable "SALID"
#define LINEA PIN_B1 // Asignar la patilla GP1 a la variable "LINEA"
#define AVISO PIN_B2 // Asignar la patilla GP2 a la variable "AVISO"
#define ALARM PIN_B3 // Asignar la patilla GP3 a la variable "ALARM"

void main( void)
{
int En_Linea;
int Avisando;

setup_comparator( NC_NC); // No se utiliza el comparador, sólo Entradas/Salidas
set_tris_b(0x0E); // 1110 -> Puerto GP0 como Salida. Puertos GP1, GP2, GP3 como entradas
output_low(SALID); // Iniciar apagado

while( true) // Bucle infinito
{
if ( !(input ( ALARM))) // Alarma = mantener el led encendido
{
output_high(SALID);
}
else if ( !(input ( AVISO))) // Aviso = Cambiar estado de la salida cada medio segundo
{
Avisando = Avisando + 1;
if ( Avisando > 5)
{
output_toggle( SALID);
Avisando = 0;
}
}
else if ( !(input ( LINEA))) // En línea = un flash cada 10 segundos
{
En_Linea = En_Linea + 1;
if ( En_Linea > 100)
{
output_high(SALID);
En_Linea = 0;
}
else
{
output_low(SALID);
}
}
else
{
output_low(SALID); // Apagar, no está en línea
}
delay_ms( 100); // Esperar 100 milisegundos
}
}

El circuito que he montado es también de lo más simple:
- alimentación de 5Vcc entre los pines 2 (+) y 7 (-)
- resistencias de 10k entre los pines 3, 4 y 8 y el cero de la fuente (entradas)
- resistencia de 270 ohmios en serie con un led entre el pin 5 y el cero de la fuente (salida)

Gracias a todos por vuestros comentarios
« Última modificación: 24 de Mayo de 2011, 10:28:02 por jagmarej »