Autor Tema: Programar sin foros-Hitec 9.80 - Funciones __delay_ms y delay_us indocumentadas.  (Leído 1692 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Thevenin

  • PIC10
  • *
  • Mensajes: 29
Buenos días,

Tengo una duda existencial.

¿Es posible en la actualidad programar sin los foros?

Acualmente programamos y consultamos mucho foros como este, o foros oficiales como los de Microchip, edaboard, stack oveflow, etc, y esto está bien.

Sin embargo, a veces hay un exceso de información, y también un desorden. Encuentras respuestas que no encajan porque a uno le funcionó pero a ni ti no porque no tienes la misma versión de compilador, etc.

Por lo tanto, quiero programar mirando solo documentación oficial, el manual del compilador, las release notes, etc.

Sin embargo me encuentro con imposibles, por más que leo, por más que sigo el camino oficial hay cosas que te pierdes.

Un ejemplo:

Compilador HITEC C Pro Versión 9.80.
IDE: Mplab X version 1.51

Quiero hacer un delay.

Me voy a Inicio->Todos los Programas->Hitec Software->Hitec C Pro for the PIC 18 MCU Family->User Manual.

Compruebo que el IDE tiene instalado y está usando este compilador.

Por lo tanto yo debería ser capaz de leer la documentación correspondiente, y obtener algo en claro.

Consulto el manual mencionado arriba, y en la página 231 me encuentro este código:

Código: [Seleccionar]
#include <htc.h>
void main (void) {
   control |= 0x80;
   _delay(10); // delay for 10 cycles
   control &= 0x7F;
}

Y aquí la página con la explicación completa:
Código: [Seleccionar]
_DELAY()
Synopsis
#include <htc.h>
void _delay(unsigned long cycles);
Description
This is an inline function that is expanded by the code generator. When called, this routine expands
to an inline assembly delay sequence. The sequence will consist of code that delays for the number
of cycles that is specified as argument. The argument must be a literal constant.

Example
#include <htc.h>
void main (void)  {
   control |= 0x80;
   _delay(10); // delay for 10 cycles
   control &= 0x7F;
}
See Also
_delay3()

Lo primero:
Ese código ni siquiera compila. Control no está declarada.

Dos:
Hay macros mucho mejores que __delay(), tal como __delay_ms o __delay_us que conocí gracias a foros.
El compilador las soporta pero no está documentada. No en ese manual.

Luego, en la ayuda del IDE, en HELP, cuando vamos en el menú a HI-TECH PICC and PICC18 Toolchains,
entramos en el ayuda del PIC18, y ahí, ahora sí, están documentadas las funciones __delay_ms y __delay_us.

Como eso me han pasado varias cosas más.

¿No es esto todo un poco fustrante?

¿Porqué no está documentado en el PDF propio del compilador esas macros tan útiles?

¿La documentación del IDE es más actualizada que la del compilador?

Saludos y felices fiestas.

« Última modificación: 29 de Diciembre de 2012, 09:31:34 por Thevenin »

Desconectado Thevenin

  • PIC10
  • *
  • Mensajes: 29
Re: Hitec 9.80 - Funciones __delay_ms y delay_us indocumentadas.
« Respuesta #1 en: 29 de Diciembre de 2012, 09:29:11 »
Ahondo un poco más, en este enlace a uno le pasa lo mismo que a mi, y es verdad que en el
manual de los PIC 10/12/16 si está documentada, pero no en el del 18.

http://forum.allaboutcircuits.com/showthread.php?t=70158

Me pierdo un poco la verdad, programo en C expresamente para los 18, es como si hubiera que tenido que
leer primero la docu. de los 10/12/16.

Pero repito la duda,

¿Si no existieran los foros que pasaría?

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Programar sin foros-Hitec 9.80 - Funciones __delay_ms y delay_us indocumentadas.
« Respuesta #2 en: 29 de Diciembre de 2012, 11:14:23 »
A mi tampoco me gustaba mucho la documentación de hitec, pero ahora que hitec y el c8 se estan uniendo en el xc8, estoy utilizando principalmente el ultimo, en este la documentacion esta mejor presentada a mi parecer.

saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Programar sin foros-Hitec 9.80 - Funciones __delay_ms y delay_us indocumentadas.
« Respuesta #3 en: 29 de Diciembre de 2012, 12:00:56 »
Cada uno inicia sus estudios de algo de forma diferente, algunos mas otros menos sistematizada.

Si estas pensando aprender C, no creo que sea conveniente aprender con un compilador como el Hitec, yo creo que deberias empezar por leerte un libro de ANSI C o similar que trate lo básico.

La documentación del Hitec no la conozco, si la de C18 y creo que es buena, obvio no te enseña a programar en C, solo como utilizar las libreria.
La documentación no trae explicación de todas las librerias que puedes usar, como el caso que citas del delay. Quizás es cuestión de investigar que tiene el htc.h y por ahí descubres cual es la mejor función para tu programa.

El ejemplo que citas del delay es eso mismo "un ejemplo". La variable control no esta definida porque es un extracto de un programa, es solo para mostrarte como usas el delay, es decir, _delay(10);

Yo consulto poco los foros, participo si, pero mas aportando que preguntado, me gusta investigar los datasheet y manuales, se que es mas laborioso, pero creo que se llega al mismo lugar.

Las consultas en los foro son buenas porque ahorran tiempo y ayudan a corregir los bugs del compilador.
Y para compartir experiencias, creo que ese es el fin principal de los foros.
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.


 

anything