Autor Tema: generar delay de 1 segundo en c18  (Leído 9037 veces)

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

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: generar delay de 1 segundo en c18
« Respuesta #15 en: 18 de Agosto de 2007, 07:58:44 »
siento ser tan pesado pero es que todavía no me va, y en cuanto no me funcione este programita difícilmente voy a poder ponerme con cosas más complicadas. Así que a ver si alguien consigue ver cual es el fallo, si sois tan amables,

este es el código:

#include <p18f2455.h>
#include "delays.h"
#pragma config WDT = OFF

void main(void)
{ADCON1=0x0f;
TRISA=0x00;
PORTA=0xff;
while (1);
{PORTA=0xff;
Delay10KTCYx (255);
PORTA=0x00;
Delay10KTCYx (255);}
}


y adjunto tambien una captura de la configuracion del winpic a ver si es de algo de eso.

Un saludo.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: generar delay de 1 segundo en c18
« Respuesta #16 en: 18 de Agosto de 2007, 09:08:11 »
amigo si repasas la seccion de lenguaje C de cualquier libro veras que....

while(1);

es un bucle inifinito es como un GOTO $ en assembler.

algo distinto es....

while(1)
{
..
..
..
}

observa que no lleva "punto y coma".
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: generar delay de 1 segundo en c18
« Respuesta #17 en: 19 de Agosto de 2007, 11:15:32 »
sí, es cierto, ha sido un error tonto, pero lo he correjido y nada, no parpadea:

#include <p18f2455.h>
#include "delays.h"
#pragma config WDT = OFF

void main(void)
{ADCON1=0x0f;
TRISA=0x00;
PORTA=0xff;
while (1)
{PORTA=0xff;
Delay10KTCYx (255);
PORTA=0x00;
Delay10KTCYx (255);}
}


alguna solución? ¿será de la configuración del winpic?

1 saludo, y muchas gracias por toda vuestra ayuda!   :-) :-)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: generar delay de 1 segundo en c18
« Respuesta #18 en: 19 de Agosto de 2007, 13:14:11 »
Yo insisto. ¿Cuantos milisegundos supone esta instrucción?
Delay10KTCYx (255);

Si no supera los 30 o 40ms será difícil que veas el parpadeo.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: generar delay de 1 segundo en c18
« Respuesta #19 en: 19 de Agosto de 2007, 15:35:27 »
¿De cuanto es tú reloj principal? De todas formas, puedes hacerlo 'por la fuerza bruta'

Código: C
  1. #include <p18f2455.h>
  2. #include "delays.h"
  3. #pragma config WDT = OFF
  4.  
  5. void main(void)
  6. {
  7. ADCON1=0x0f;
  8. TRISA=0x00;
  9. PORTA=0xff;
  10. while (1)
  11. {PORTA=0xff;
  12. Delay10KTCYx (255);
  13. Delay10KTCYx (255);
  14. PORTA=0x00;
  15. Delay10KTCYx (255);
  16. Delay10KTCYx (255);
  17. }
  18. }

Ponle un super-retardo  :mrgreen:


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

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: generar delay de 1 segundo en c18
« Respuesta #20 en: 20 de Agosto de 2007, 09:38:35 »
intenta usando LATA en vez de PORTA.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: generar delay de 1 segundo en c18
« Respuesta #21 en: 22 de Agosto de 2007, 16:53:58 »
es posible que el retardo sea demasiado pequeño, pero para calcularlo me he basado en lo siguiente:

4/12*1000000 * 10 000 * 300 = 1
Delay10KTCYx (300); esto da

4/12*1000000 * 100 * 300 = 1/100
Delay100TCYx (300); esto da

y no olvides setear los bits del porta como digitales
ADCON=0; ADCON1=0xFF;


y en esto:

Además que tal vez se haya olvidado del K, el problema es el argumento, solo se acepta un byte, es decir un valor de 0 a 255.


que me habeis respondido en este mismo hilo. Entonces por eso puse 255. De todas formas he probado este código tambien (con el retardo multiplicado por tres):

#include <p18f2455.h>
#include "delays.h"
#pragma config WDT = OFF

void main(void)
{ADCON1=0x0f;
TRISA=0x00;
PORTA=0xff;
while (1)
{PORTA=0xff;
Delay10KTCYx (255);
Delay10KTCYx (255);
Delay10KTCYx (255);
PORTA=0x00;
Delay10KTCYx (255);
Delay10KTCYx (255);
Delay10KTCYx (255);}
}



y el resultado es el mismo: led encendido permanentemente. Incluso le he puesto un xtal de 4mhz con lo el restardo de la función Delay10KTCYx(255) debería ser de 4/4*1000000 * 10 000 * 255 = 2,55 seg , más o menos

entonces no se que puede ser lo que esté mal. ¿quizá la configuración del winpic? ( he posteado una captura de la configuración del winpic más arriba en otro post)

gracias x vuestra ayuda. :)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: generar delay de 1 segundo en c18
« Respuesta #22 en: 22 de Agosto de 2007, 17:21:12 »
mmm....  :? has leido el datasheet del 18f2455?

EXAMPLE 10-1:INITIALIZING PORTA   

CLRF      PORTA;  Initialize PORTA by clearing output data latches
CLRF      LATA; Alternate method to clear output data latches
MOVLW  0Fh; Configure A/D
MOVWF  ADCON1; for digital inputs
MOVLW  07h; Configure comparators
MOVWF  CMCON; for digital input
MOVLW  0CFh; Value used to initialize data direction
MOVWF  TRISA;  Set RA<3:0> as inputs RA<5:4> as outputs

fijate no solo tiene conversores AD sino tambien comparadores... entonces te falta setear los comparadores.

TAREA: leer TODO el datasheet  :mrgreen:
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: generar delay de 1 segundo en c18
« Respuesta #23 en: 25 de Agosto de 2007, 10:06:13 »
de todas formas aunque hago parpadear todo el porta tan sólo conecto el led en el RA0 y en RA0 no hay comparador. Tiene que ser de otra cosa, yo creo que es culpa del retardo o de la configuracion del winpic.

1 saludo.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: generar delay de 1 segundo en c18
« Respuesta #24 en: 25 de Agosto de 2007, 13:57:51 »
 :5] hey pequeño no has hecho tu tarea  :evil:





Citar
en RA0 no hay comparador.
tienes que leer el datasheet.  :5]
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: generar delay de 1 segundo en c18
« Respuesta #25 en: 09 de Septiembre de 2007, 09:33:38 »
:5] hey pequeño no has hecho tu tarea  :evil:





Citar
en RA0 no hay comparador.
tienes que leer el datasheet.  :5]

por fin he tenido un hueco y he hecho mi tarea   :mrgreen:

y no ha resultado. Tenía yo algo de esperanza de que fuese por esto pero lo cierto es que he configurado el CMCON con el valor '00001111' que tal y como indica el datasheet se desactivan los comparadores y el bit CIS lo he puesto a 1 ya que el valor es indiferente para los comparadores desactivados. Y el resultado es el mismo: led encendido ininterrumpidamente.

este es el programa:

#include <p18f2455.h>
#include "delays.h"
#pragma config WDT = OFF

void main(void)
{ADCON1=0x0f;
CMCON=0x0f;
TRISA=0x00;
PORTA=0xff;
while (1)
{PORTA=0xff;
Delay10KTCYx (255);
PORTA=0x00;
Delay10KTCYx (255);
}
}



esta la configuracion del winpic:

http://img158.imageshack.us/my.php?image=clipboardvp7.jpg

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: generar delay de 1 segundo en c18
« Respuesta #26 en: 10 de Septiembre de 2007, 01:01:59 »
•TRIS register (data direction register)
•Port register (reads the levels on the pins of the
device)
•LAT register (output latch)

cambia PORTA por LATA a ver que pasa. Saludos  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: generar delay de 1 segundo en c18
« Respuesta #27 en: 16 de Septiembre de 2007, 14:42:26 »
pues sigue sin parpadear:

#include <p18f2455.h>
#include "delays.h"
#pragma config WDT = OFF

void main(void)
{ADCON1=0x0f;
CMCON=0x0f;
TRISA=0x00;
PORTA=0xff;
while (1)
{LATA=0xff;
Delay10KTCYx (255);
LATA=0x00;
Delay10KTCYx (255);
}
}



puede ser que esté mal la configuración del winpic?
http://img158.imageshack.us/my.php?image=clipboardvp7.jpg
  1 saludo.   :mrgreen:



Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: generar delay de 1 segundo en c18
« Respuesta #28 en: 21 de Septiembre de 2007, 19:35:18 »
hola amigos  qué tal, el led sigue sin parpadear, sólo quisiera, si puede ser, que alguien me confirmase si la configuración del winpic está correcta:
http://img158.imageshack.us/my.php?image=clipboardvp7.jpg

y prometo no molestar más con este post  :mrgreen: :mrgreen:

un saludo.