• Domingo 22 de Diciembre de 2024, 16:59

Autor Tema:  Programar un IC por puerto serie  (Leído 2375 veces)

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Programar un IC por puerto serie
« en: Domingo 19 de Diciembre de 2010, 17:23 »
0
Hola:

He estado mirando programas de este tipo como ic-prog y winpic800. Siento curiosidad como hacen para enviar un archivo a los PIC por puerto serie. Se enviar tramas de bytes y texto pero no logro que un archivo .hex de los PIC se meta dentro.

 Uso el TE20:


Quiero hacer una interfaz sencilla, con tal de enviar el .hex y leerlo desde el TE20x. El código fuente que he hecho hasta ahora no me funciona.

Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. using System.IO.Ports; // No olvidar estos using.
  11.  
  12. //http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/86149304-c26f-4dcf-b003-198a8879decf
  13.  
  14. namespace RS232_a
  15. {
  16.     public partial class Form1 : Form
  17.     {
  18.         public Form1()
  19.         {
  20.             InitializeComponent();
  21.         }
  22.  
  23.         private void button_Abrir_Click(object sender, EventArgs e)
  24.         {
  25.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  26.                 {
  27.                     textBox1.Text = openFileDialog1.FileName;
  28.                 }
  29.  
  30.         }
  31.  
  32.         private void button_Enviar_Click(object sender, EventArgs e)
  33.         {
  34.             serialPort1.Open();
  35.             byte[] mBuffer = Encoding.ASCII.GetBytes(textBox1.Text);
  36.             serialPort1.Write(mBuffer, 0, mBuffer.Length);
  37.             serialPort1.Close();
  38.             MessageBox.Show("Enviado.");
  39.         }
  40.     }
  41. }
  42.  
  43.  

Saludo.

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Programar un IC por puerto serie
« Respuesta #1 en: Domingo 19 de Diciembre de 2010, 18:45 »
0
Muy buenas, te explico, el problema está en que si no recuerdo mal el te20 ahunque este conectado al puerto serie no trabaja con el protocolo RS232, sino que con las señales de comando del puerto serie (DTR, RTS, CTS y TDX) se emula el protocolo ICSP, por lo que la libreria IO.Ports no te servida para este fin.

Por otro lado aunque en este caso no tenga nada que ver ya que por la razon anterior ya no pude funcionar es que estas enviando el archivo .hex a pelo caracter por caracter "ASCII" y el formato de un archivo .hex esta formado por:
:xxxxxx (direccion de memoria de los datos) xxxxxxxxxxxxxxxxxxxxxxxxxx(datos) xx(checksum) (el numero de xx no coincide, lo puse a boleo)

y donde esta el detalle es que cada pareja de xx es un número en exadecimal, por lo tanto si tuvieras FF tu deberias mandar un solo byte (255)o(11111111) o (0xFF) pero del modo en que tu lo estas haciendo en realidad estas mando dos bytes corespondientes a la F, en este caso (70)(1000110)(0x46)

Un saludo

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Re: Programar un IC por puerto serie
« Respuesta #2 en: Domingo 19 de Diciembre de 2010, 20:19 »
0
Muy buenas:

Gracias por responder. Con razón que nunca podía grabar nada, ni de broma.

he encontrado alguna información en san google y hay que leer bastante. Parece ser un reto eso de grabar PIC de esa manera.
http://www.iearobotics.com/proyectos/cu ... 4/ct4.html
viewtopic.php?f=74&t=19162

Haber si somos capaces entre todos grabar y leer un PIC16F84A y 16F88 aunque sea. En la hoja de datos del PDF página 149 hay un buen esquema.
http://ww1.microchip.com/downloads/en/d ... 30487c.pdf

Salu2.