Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   ASM y Microcontroladores (https://www.clubdelphi.com/foros/forumdisplay.php?f=44)
-   -   Presentando a Mikropascal (https://www.clubdelphi.com/foros/showthread.php?t=57999)

rretamar 04-07-2008 12:36:55

Presentando a Mikropascal
 
Hola.
Envío un pequeño artículo sobre este compilador de Pascal para PICs. Después de todo, este es un foro de Delphi, ¿ no ?. Aclaro que las opiniones aquí vertidas son puramente personales y no tengo ningún tipo de relación con la empresa.

Introducción a Mikropascal


El producto consiste en un compilado de lenguaje Pascal para microcontroladores PIC, una librería con funciones de alto nivel para múltiples propósitos y un software para programación (PicFlash) para usar un hardware de programación/depuración provisto por la misma empresa.


El IDE de Mikropascal

Ventajas:
* Utiliza el lenguaje Pascal, lo que se traduce en una sintaxis muy cómoda y legible. Esta versión de Pascal contiene algunas extensiones para poder trabajar con los distintos recursos que nos provea el microcontrolador. Al igual que el Pascal estándar, soporta unidades, pasaje de parámetros por valor o referencia, punteros, moldes de tipos, vectores, estructuras de datos multivariable como registros, variables absolutas, soporte de ensamblador en línea, directivas de compilación $define, archivos "include", etc.
* Tiene un entorno de desarrollo (IDE) muy cómodo, con completado de código, templates, colorización de sintaxis, depurador, administrador de proyectos, explorador de código, vista del código ensamblador generado, gráficos de ocupación de memoria, una excelente ayuda en línea (también disponible en formato PDF).
* La versión "de pruebas" difiere únicamente en el tamaño máximo de código que el enlazador es capaz de manejar (2 Kb como máximo). Salvo ese detalle, la versión descargable no difiere en nada más de la versión paga (se registra con un archivo de licencia .key que hay que copiar en la carpeta del compilador). El registro elimina esa limitación.
* El precio es muy accesible. Se paga la licencia por única vez, y las siguientes actualizaciones del producto son gratis.
* Excelente integración con el programador PicFlash de la misma empresa. Este programador también soporta depuración "en circuito" y muestra los registros de configuración de forma muy entendible.
* La librería de funciones es muy completa. Hay desde comunicación USB hasta acceso a displays LCD gráficos.
* El foro de Mikroelectronica tiene bastante actividad, y hay usuarios del producto con conocimientos muy avanzados.
* El soporte a registros, interrupciones, flags y memoria es por demás sencillo.

Desventajas:
* Sólo funciona en Windows. Había una versión para Linux (en estado alpha), pero aparentemente fue abandonada, coincidiendo con la discontinuación de Kylix.
* La libería de funciones y procedimientos no es open source. Es una lástima, porque se podría aprender "in situ" viendo cómo están implementadas muchas cosas. También podrían mejorarse otras si se tuviera acceso al código fuente. Hubo varios pedidos por parte de algunos usuarios para que abran la libería, pero parte del staff de la empresa no está de acuerdo por el momento (la parte técnica está de acuerdo, pero la parte directiva no).
* Algunos bugs. En el foro de la empresa suelen estar detallados y se publican los correspondientes parches. Las versiones antiguas tenían bugs realmente graves, que eran un verdadero dolor de cabeza si se deseaba hacer algo más complejo que un "hola mundo" y opacaban al resto del producto. Las versiones actuales son mucho más estables.
* El código binario generado es algo más grande que el de otros compiladores y obviamente mucho más extenso que el ensamblador "puro". Esto no es demasiado crítico ya que existen microcontroladores con cantidades de memoria más que generosas (en 32 Kb de flash -por ejemplo en el conocido pic18f452- se puede meter MUCHO código en Pascal) a precios económicos.
* Algunos "tips" que son de mucha utilidad (por ejemplo en el tratamiento de cadenas) no están del todo documentados. Nuevamente vale la pena recorrer el foro para encontrar cosas muy interesantes. Otras áreas como el ensamblador en línea y su integración con el código en Pascal también necesitarían más documentación.
* No es orientado a objetos. En parte esto es una consecuencia de la necesidad de generar un código pequeño y veloz. Después de todo, la memoria de los microcontroladores es limitada.
* El hardware y firmware de Picflash es propietario, lo que obliga a comprarlo a la empresa (a pesar de que su construcción es bastante sencilla -se conecta al port USB-). De todas maneras se puede usar cualquier programador de PICs, siempre que soporte el formato de archivo hex.


La ventana de depuración


El software de programación PicFlash

Ejemplo 1: Acceso a los bits de variables o registros

Código:

Program Prueba;
Var
  Variable: Byte;
  Cadena: String[10];
Begin
  Cadena := 'Mikropascal'; // Asignar valor a la cadena
  Cadena[5] := 0;          // Truncar cadena, agregando marca de "fin de cadena"
  Variable.5 := 1;        // Colocar bit número 5 en estado alto
  TRISE := 0;              // Acceso al registro de configuración del port E
  // Dos maneras de cambiar un bit en un registro
  PORTE.2 :=1;            // Colocar el bit #2 del port E en estado alto
  SetBit(PORTE, 2);      //
  // Cambiando todos los bits de un registro
  PortE := 0;              // Colocar todos los bits del port E en estado bajo
  //
  TMR0H := 0;              // Setear valor inicial de temporizador TIMER0 (byte alto)
  TMR0L := 0;              // Setear valor inicial de temporizador TIMER0 (byte bajo)
  ClrWdt;                  // Reiniciar "perro guardián" (watchdog)
End.

Ejemplo 2: Envío de un string en forma contínua por el puerto serie

Código:

Programa Hola_Mundo;
Var
  Saludo: String[15];  // Cadena a enviar
Begin
  Saludo := 'Hola, mundo!';              // Cadena a enviar
  Usart_Init(115200);                    // Habilito la USART a una velocidad de 115200 baudios
  While True Do
    Begin
      Usart_Write_Text(Saludo);              // Envío un string cada un segundo
      Delay_ms(1000);                        // Demora
    End;
End.

Ejemplo 3: Uso de registros, loops, vectores y cálculos (código usado en un equipo de balanceo)

Código:

//
  Suma_Senos := 0;
  Suma_Cosenos := 0;
  //
  For Contador := 1 To Capturas Do
    Begin
      // Actualizar acumulador de valores de tensión
      Ciclo.Valor_Medio  := Ciclo.Valor_Medio  + Muestras[ Contador ].Valor;
      // Actualizar mínimos y máximos de valores de tensión
      If Muestras[Contador].Valor > Ciclo.Valor_Maximo Then Ciclo.Valor_Maximo := Muestras[ Contador ].Valor;
      If Muestras[Contador].Valor < Ciclo.Valor_Minimo Then Ciclo.Valor_Minimo := Muestras[ Contador ].Valor;
      //
      // Calcular totales de senos y consenos (coordenadas x,y)
      Suma_Senos :=  Suma_Senos  + SIN( Radianes(Muestras [Contador].Angulo) );    // Obtener la suma de los senos  (coordenada y)
      Suma_Cosenos := Suma_Cosenos + COS( Radianes(Muestras [Contador].Angulo) );    // Obtener la suma de los cosenos (coordenada x)
    End;
  //
  // Obtener el ángulo medio a través del arco tangente de las coordenadas
  Ciclo.Angulo_Medio :=  Grados( ATAN2(Suma_Cosenos, Suma_Senos ) );
  If Ciclo.Angulo_Medio < 0 Then Ciclo.Angulo_Medio := Ciclo.Angulo_Medio + 360;  // Reducir ángulos "negativos"

Conclusión: a pesar de sus limitaciones, este producto constituye una excelente opción para desarrollar aplicaciones con la línea PIC, cuando la complejidad es entre media o alta. Vale la pena darle una mirada a la versión de pruebas, que tiene la ventaja de ser prácticamente igual a la versión paga.

poliburro 04-07-2008 14:52:06

Se ve interesante. En que tipo de proyecto los has usado compañero?, que resultados te ha dado?.

rretamar 04-07-2008 17:06:09

Cita:

Empezado por poliburro (Mensaje 298224)
Se ve interesante. En que tipo de proyecto los has usado compañero?, que resultados te ha dado?.

Ejemplo de un proyecto realizado con este compilador:
http://www.hrservicios.com.ar/index....tent&Itemid=67

El software desarrollado en Mikropascal en la máquina que se ve en el enlace hace las siguientes tareas:

* Lectura de teclado matricial y realimentación acústica
* Control de display LCD
* Lectura de enconder incremental
* Comunicación con RTC (chip reloj/calendario)
* Lectura de datos analógicos desde un ADC.
* Lectura de pulsadores
* Cálculos (de desbalanceo, angulares, umbrales, promedio)
* ABMC de piezas (el equipo guarda una lista de piezas)
* Control de variador de velocidad
* Generación de señal de frecuencia variable (en segundo plano)
* Impresión de etiquetas
* Comunicación con una PC
* Subprograma de ensayo automático (a partir de datos iniciales, el equipo realiza varios ciclos automáticamente, enviando datos a la pc)

En definitiva, me ha ahorrado muchas horas de trabajo. Si hubiera usado ensamblador todavía estaría programando y probando, además de haber obtenido un código kilométrico.

Ahora lo estoy usando para una placa E/S con una array de temporizadores programables desde una PC.

No soy experto en el producto, pero tengo algo de práctica y con gusto intentaré reponder las dudas que puedan surgir.

Saludos !

Al González 05-07-2008 05:45:22

¡Hola!

Muy interesante aplicación. Lo que hubiera hecho yo en mis años de Turbo Pascal con algo como esto. :)

Sólo habría que invitar a los autores de las traducciones a emplear la palabra biblioteca en lugar de librería. ;)

Un abrazo microcontrolado.

Al González.

egostar 05-07-2008 18:10:11

Cita:

Empezado por rretamar (Mensaje 298205)

Vaya, esta imagen me recuerda al buen amigo [JoseFco] :)

Salud OS

JoseFco 05-07-2008 21:10:07

Cita:

Empezado por egostar (Mensaje 298489)
Vaya, esta imagen me recuerda al buen amigo [JoseFco] :)

Salud OS

Asi nos llevamos?:mad: toy feo pero no pa tanto.:D:D:D

No se crean... pura broma.:p

Un Saludo.

Ñuño Martínez 06-07-2008 18:52:22

Cita:

Empezado por Al González (Mensaje 298425)
¡Hola!

Muy interesante aplicación. Lo que hubiera hecho yo en mis años de Turbo Pascal con algo como esto. :)

Sólo habría que invitar a los autores de las traducciones a emplear la palabra biblioteca en lugar de librería. ;)

Un abrazo microcontrolado.

Al González.

Totalmente de acuerdo, incluso en lo referente a biblioteca. Es más, to también les diría que utilizasen programa, aplicación. herramienta, sistema... en vez de software. :p:)

Al González 06-07-2008 23:11:18

Cita:

Empezado por Ñuño Martínez (Mensaje 298589)
Totalmente de acuerdo, incluso en lo referente a biblioteca. Es más, yo también les diría que utilizasen programa, aplicación. herramienta, sistema... en vez de software. :p:)

Tanto librería, biblioteca y software son palabras aceptadas en el español. El punto es respetar cabalmente y sin artificios lingüísticos las traducciones. ;) http://www.clubdelphi.com/foros/showthread.php?t=52131

JoseFco 07-07-2008 00:16:11

Hola amigos.

El tema de las traduciones del ingles al español, en materia de electronica y programacion es muy variado.Dependiendo de donde se realizo la traducion.Yo he tenido la oportunidad de leer algunos libros de electronica en español y a pesar de creerme que hablo español.:D Algunas veces no entiendo ni maiz.En Puerto Rico tienen sus nombres,en Argentina usan otros, en Mexico pues tambien se le tienen nombres a los componentes.Para no hacer esto muy largo, no creo que en Latino America se pueda decir que se habla español.Hablamos algo que le decimos español, pero Nereida Naranjo y si Cervante nos pesca en esa nos quema vivos y emplearia algunos de nuestros libros para atizar la lumbre.:D

PD: Leer del ingles directamente es la mejor opcion si no quieres perderte en la lenguistica criolla.

Un Saludo.

eduarcol 07-07-2008 00:27:27

Cita:

Empezado por egostar (Mensaje 298489)
Vaya, esta imagen me recuerda al buen amigo [JoseFco] :)

Salud OS

Pues porq no entiendes lo que dicen las pantallas??

Cita:

Empezado por JoseFco (Mensaje 298515)
Asi nos llevamos?:mad: toy feo pero no pa tanto.:D:D:D

No se crean... pura broma.:p

Un Saludo.

Amanecimos sensibles...

Cita:

Empezado por JoseFco (Mensaje 298601)
Hola amigos.

El tema de las traduciones del ingles al español, en materia de electronica y programacion es muy variado.Dependiendo de donde se realizo la traducion.Yo he tenido la oportunidad de leer algunos libros de electronica en español y a pesar de creerme que hablo español.:D Algunas veces no entiendo ni maiz.En Puerto Rico tienen sus nombres,en Argentina usan otros, en Mexico pues tambien se le tienen nombres a los componentes.Para no hacer esto muy largo, no creo que en Latino America se pueda decir que se habla español.Hablamos algo que le decimos español, pero Nereida Naranjo y si Cervante nos pesca en esa nos quema vivos y emplearia algunos de nuestros libros para atizar la lumbre.:D

PD: Leer del ingles directamente es la mejor opcion si no quieres perderte en la lenguistica criolla.

Un Saludo.

Me perderia en la traduccion con los diccionarios ;)

JoseFco 07-07-2008 00:39:17

Fijate lo complicado del tema: Una vez un amigo estaba estudiando para sacar la licencia de electricidad y no le queria entrar al ingles.Se compra un libro. National Electrical Code (NEC) en español, estaba editado en Puerto Rico.Este amigo es cubano y me dice un dia que le ayudara con unas cosas que no entendia y me pasa el libro, jajajajaja decia algo de "La Batea de cableado" para mi una batea es donde mi abuela lavaba la ropa.En fin que termine mirando mi NEC a ver que era la famosa batea esa.
Cuando yo me mude a Los Angeles en el 1984 me toco aprender español otra vez.:D:D:D Y si mañana me mudo A Buenos Aires me tocara aprender otra vez.

Un Saludo.

eduarcol 07-07-2008 00:45:01

y que termino resultando la dichosa batea?

JoseFco 07-07-2008 00:49:28

Cita:

Empezado por eduarcol (Mensaje 298605)
y que termino resultando la dichosa batea?

La famosa batea era un Cable Tray System.;)

Ñuño Martínez 07-07-2008 09:33:29

Cita:

Empezado por JoseFco (Mensaje 298601)
Hola amigos.

El tema de las traduciones del ingles al español, en materia de electronica y programacion es muy variado.Dependiendo de donde se realizo la traducion.Yo he tenido la oportunidad de leer algunos libros de electronica en español y a pesar de creerme que hablo español.:D Algunas veces no entiendo ni maiz.En Puerto Rico tienen sus nombres,en Argentina usan otros, en Mexico pues tambien se le tienen nombres a los componentes.Para no hacer esto muy largo, no creo que en Latino America se pueda decir que se habla español.Hablamos algo que le decimos español, pero Nereida Naranjo y si Cervante nos pesca en esa nos quema vivos y emplearia algunos de nuestros libros para atizar la lumbre.:D

PD: Leer del ingles directamente es la mejor opcion si no quieres perderte en la lenguistica criolla.

Un Saludo.

¡Qué razón tienes! A ver cuándo se independizan las lenguas mejicana, argentina, chilena, cubana, ecuatoriana, etc. de la madre castellana. :rolleyes:;):D

JoseFco 07-07-2008 21:27:05

Cita:

Empezado por Ñuño Martínez (Mensaje 298639)
¡Qué razón tienes! A ver cuándo se independizan las lenguas mejicana, argentina, chilena, cubana, ecuatoriana, etc. de la madre castellana. :rolleyes:;):D

Hola Ñuño, bueno yo creo que hace mucho que existe el divorcio entre lo que se habla el Latino America y lo que en realidad es el idioma castellano.Mas bien creo que el castellano esta dando entrada al ajiaco que nosotros hemos creado alrededor de esa lengua.
Yo en lo particular no me sentiria comodo decir que hablo español.Lo concideraria un atropello a la lengua de Cervantes.Menos ahora que tengo 28 años lejos de mi entorno familiar.Despues de estar entre tantas culturas y usando el modismo y los dialectos de otros paises pues lo poco que aprendi de mi madre, quedo en el camino.

PD: Estaria interesante contar con La real academia de la lengua cubana.:D

Un Saludo.

donald shimoda 10-07-2008 08:44:31

Cita:

Empezado por rretamar (Mensaje 298286)
No soy experto en el producto, pero tengo algo de práctica y con gusto intentaré reponder las dudas que puedan surgir.

Saludos !

Yo también lo uso en toda la gama de productos de hardware que tiene la empresa, así que en lo que pueda ayudar... ahí vamos.

Comentario: van por la versión 8.1 estable y la 8.3 beta. Si van a probar bajen la 7 con todos sus parches. Lo único reprochable de mikropascal es que las versiones nuevas suelen tener muchos bugs que traen varios dolores de cabeza. La versión de prueba permite generar hasta 2K de memoria de programa, por lo tanto sirve para proyectos pequeños.

Saludos.

--
Donald Shimoda [Team RO]

http://blogs.remobjects.com/blogs/donald

rretamar 13-07-2008 02:46:58

Donald Shimoda es un experto, y es un gusto tenerlo participando en del foro. Bienvenido !!!!

Saludos !

donald shimoda 13-07-2008 03:35:45

Cita:

Empezado por rretamar (Mensaje 299931)
Donald Shimoda es un experto, y es un gusto tenerlo participando en del foro. Bienvenido !!!!
Saludos !

Amigo gracias pero no me considero un experto. Lo que si puedo decir es que amo lo que hago.

Parece que todos los caminos conducen a Pascal (anteriormente Delphi) ;)

Saludos.

spluis2000 11-02-2009 00:18:07

mikropascal
 
hola a todos me pueden ayudar quiero programar en mikropascal demo ya lo tengo, hice el programa para un pic16f873 por lo que entiendo es que tambien lo graba con extencion .hex, ahora mi pregunta es como me comunico para grabar el pic, del mikropascal al pic hay algun circuito o algo asi para conectarlo a la pc y poder grabar el pic, se los agradeceria si me hubicaran con esto gracias.

rretamar 11-02-2009 02:21:10

Hola.
Para grabar los archivos .hex generados con Mikropascal necesitas un programador (hardware y software). Veamos las diferentes alternativas:

Alnternativa 1) La gente de Mikroelectronika vende el programador Picflash (se conecta al puerto USB).



Ventajas:
* Es bastante económico, se integra muy bien con los compiladores de Mikro-E y se puede hacer depuración "en circuito" (no siempre se puede usar, depende del tipo de aplicación que se esté desarrollando). El software PicFlash interpreta los parámetros de configuración del microcontrolador (los "config flags") mostrándolos en forma muy clara y explícita (menos posibilidad de cometer errores). Es apto para programación "en circuito", aunque si no tenemos la placa preparada para ello, habrá que armar un adaptador externo con un zócalo "zif".

Desventajas:
* Solamente funciona bajo Windows. Al ser un desarrollo propietario (privativo), no se dispone de información técnica del protocolo ni del circuito. Menos aún del firmware del pic que usa el programador. Tampoco funcionará con otro soft de programación que no sea el Picflash.

Alternativa 2) Otra alternativa es usar otro tipo de programadores. Por internet hay información para construirse uno. En mi caso, uso el programador p16pro, muy fácil de construir y se conecta al puerto paralelo.


el programdor p16pro (sin el zócalo zif)

El circuito de ese programador es:

http://picallw.feniks-pro.com/hardware.htm (en la parte inferior de la página esa el esquema).

http://www.circuitsarchive.org/image...rog_p16pro.gif (en color)

La parte más costosa de ese programador es el zócalo "zif" (zero insertion force), que permite colocar y retirar fácilmente el microcontrolador, usando una palanca lateral. La contrucción no debería ser difícil para alguien que conozca de electrónica.

Hay varios softwares que usan ese programador. El más antiguo es el llamado P16PRO (el software), pero además de estar desactualizado, carece de soporte para microcontroladores recientes. Igual vale la pena tenerlo, ya que es muy práctico.

Otra alternativa más moderna es el software Ic-Prog (freeware y en español), que soporta modelos de microcontroladores más modernos.

Se puede descargar aquí:

http://www.ic-prog.com/main.html

Si te decides por este software y el circuito p16pro, te puedo pasar los parámetros de configuración apropiados (no los tengo acá en mi casa, ya que están en mi oficina/taller).

Hay muchos otros programadores (circuitos y software), pero no los he usado, ya que con estos dos me alcanza y sobra. Si alguien tiene experiencia con otros circuitos más elaborados (como el "PicAll") sería interesante poder conocer sus experiencias.

Saludos electrónicos ! :)


La franja horaria es GMT +2. Ahora son las 07:43:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi