Autor Tema: preguntas de novato  (Leído 2655 veces)

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

Desconectado polo1984

  • PIC10
  • *
  • Mensajes: 13
preguntas de novato
« en: 08 de Febrero de 2007, 14:42:40 »
hola a todos!!

estoy haciendo las primeras pruebas con los pics progrmanado en c y tengo varias dudas de principiante.

lo primero ¿se pueden hacer programas sin que tengan un bucle infinito? ya que todos los ejemplos que he visto (tampoco es que haya visto muchos todavia) tienen un bucle que se repite; por ejemplo cogiendo datos de un adc y visualizandolos cada cierto tiempo. se podria hacer el siguiente programa:

Código: [Seleccionar]
#include <16F876A.h>
#device adc=8
#use delay(clock=16000000)
#fuses NOWDT,XT, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
#byte puerto_a=40
#byte puerto_b=48
#byte puerto_c=56
#use fast_io(B)

void main()
{
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   port_b_pullups(FALSE);  // Desactivamos pull-ups del puerto B

   int8 x, y;
   set_tris_a(0x00);
   set_tris_b(0x00);
   set_tris_c(0x00);
   
   /*puerto a todo salidas a nivel alto; puerto B todas salidas nivel bajo
   y puerto c sacara la suma entre dos enteros*/

   x=2;
   y=3;   
   puerto_a=0xff;
   puerto_b=0x00;
   puerto_c=x+y;
}

si se miran los pines del puerto C deberian ser la siguiente si se empieza opr el pin C7-->00000101, ¿verdad?

otra duda que tengo es sobre la libreria del lcd que incorpora el compilar PCWH o como he leido tambien CCS(por lo menos eso creo :D) tengo un lcd de 16x2 de cebek, el modelo exacto es el c2602, segun me ha parecido ojeando un poco el foro, esta libreria se usa para conectar el lcd con 4 pines de datos mas los de control, no hay otra libreria para conectar los 8 pines? aunque bueno esta duda no se puede decir que sea algo que me corra prisa, ya que como veis estoy empezando y no me voy a meter todavia con el lcd.

y por ultimo (aunque esta la tendria que hacer al lo mejor en otra parte del foro), si conecto la patilla MCLR/Vpp para que se realice un reset cuadno pierda la alimentacion, ¿que debo hacer con la patilla Vdd? y ya que estamos, ¿es conveniente conectar las dos patillas Vss que tiene por ejemplo el pic16f876 a masa, o solo con una valdria?

gracias por vuestro tiempo y un saludo;)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: preguntas de novato
« Respuesta #1 en: 08 de Febrero de 2007, 15:00:25 »
1. el bucle infinito es porque no tienes sistema operativo o a 'donde ir' cuando termine el programa.  Si haces un programa en ensamblador también harías lo mismo, siempre terminas haciendo un bucle para que el pic no siga ejecutando líneas al azar.

2. En un pic con varios pines de Vss, debes unirlos a TODOS.  Idem con pines de Vdd.

3. Un valor binario en ASM o en C, se arma de derecha a izquierda, donde el último dígito es el menos significativo.  Es como el sistema decimal. 

Ej. 0b00000001 

El 1 hace referencia a la posición 0, si fuera la lectura del PORTC, hablaríamos del PORTC<0>

En un número decimal si haces 25, el 5 es las unidades y el 2, las decenas.  Osea que el dígito más a la derecha es el menos significativo.

4. Un circuito de reset es muy sencillo, por ej.

4.a) Una resistencia de MCLR a Vdd
4.b) Una resistencia de MCLR a Vdd  y un capacitor pequeño de MCLR a GND.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: preguntas de novato
« Respuesta #2 en: 08 de Febrero de 2007, 15:06:40 »
Quiero agregar a lo expuesto por Maunix con tanta maestria, que el bucle infinito se hace luego de la configuracion del microcontrolador (puertos, timers, perifericos, etcetera).
Si no quieres un bucle infinito debes utilizar interrupciones y poner a dormir al micro (sleep).  :lol: :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: preguntas de novato
« Respuesta #3 en: 08 de Febrero de 2007, 15:15:13 »
Quiero agregar a lo expuesto por Maunix con tanta maestria, que el bucle infinito se hace luego de la configuracion del microcontrolador (puertos, timers, perifericos, etcetera).

Si, es cierto, debería ir luego de la preconfiguración de lo que solo se deba configurar una vez.  :)

Si no quieres un bucle infinito debes utilizar interrupciones y poner a dormir al micro (sleep).  :lol: :lol: :lol:

Si, jeje, muy ocurrente.

Y si justo despierta del sleep también debiera ir a un bucle.  Si mal no recuerdo al despertar del sleep se ejecuta la instrucción próxima siguiente y en ese caso estaríamos en lo mismo.   


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado polo1984

  • PIC10
  • *
  • Mensajes: 13
Re: preguntas de novato
« Respuesta #4 en: 08 de Febrero de 2007, 15:56:53 »
hola d eneuvo

gracias por las respuestas, ya me han quedado las dudas resueltas. me pondre a probar fisicamente para ver que tal fincionan.

sobre las librerias del lcd no sabeis como se deben conectar el lcd?
un saludo

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: preguntas de novato
« Respuesta #5 en: 08 de Febrero de 2007, 16:14:07 »
Creo recordar, que si no se pone un bucle infinito, el pic se resetea al llegar a la última instrucción


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: preguntas de novato
« Respuesta #6 en: 08 de Febrero de 2007, 17:05:41 »
yo lo que he visto es que sino se pone el bucle, en CCS aparece la instrucción SLEEP al final en ensamblador

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: preguntas de novato
« Respuesta #7 en: 08 de Febrero de 2007, 17:31:34 »
2. En un pic con varios pines de Vss, debes unirlos a TODOS.  Idem con pines de Vdd.

Siempre pensé que el hecho de que las alimentaciones estén duplicadas se debe a temas de diseño; es decir, para que cuando diseñes tu placa puedas alimentar el micro desde dos posiciones distintas. Por esto es que nunca cortocircuto las alimentaciones en el PIC. ¿Realmente es necesario cortocircuitarlas? ¿Por qué?

Saludos
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: preguntas de novato
« Respuesta #8 en: 08 de Febrero de 2007, 20:18:41 »
Creo recordar, que si no se pone un bucle infinito, el pic se resetea al llegar a la última instrucción

Depende del compilador... depende de tu código, depende de cómo lo organices.

Esto es cierto únicamente si tu código está bien arriba y termina bien abajo , y abajo están solamente sentencias NOP (0x3FF en los 16F o 0xFFF en los 18F), al llegar el PC a su máximo valor, ocurre un 'overflow' y se hace 0.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything