Autor Tema: Problema con delays.h (pic18f2550 & C18)  (Leído 2532 veces)

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

Desconectado sycho

  • PIC16
  • ***
  • Mensajes: 195
Problema con delays.h (pic18f2550 & C18)
« en: 28 de Septiembre de 2008, 13:18:14 »
Hola,
Me he puesto a probar la librería XLCD que trae C18 para los displays tipo HD44770, y he empezado por el programa más tonto... un "hola mundo".
El caso es que cuando antes del putrsXLCD("Hola mundo") meto un DelayKTCYx(200) para que se demore un poco en salir, el programa deja de funcionar.
Aqui os pego el código, a ver si alguno sabe que me pasa. No obstante, en las subrutinas de delay del LCD se usan funciones de la libreria delays.h y parecen funcionar...

Código: [Seleccionar]
/** I N C L U D E S **********************************************************/
#include <p18f2550.h>
#include <delays.h>
#include <xlcd.h>

#pragma config FOSC = HS, FCMEN = OFF,IESO = OFF //CONFIG1H
#pragma config CPUDIV = OSC1_PLL2
#pragma config PWRT = ON,BOR = OFF,BORV = 0 //CONFIG2L
#pragma config WDT = OFF,WDTPS = 32768 //CONFIG2H
#pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = OFF//CONFIG3H
#pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF//CONFIG4L
#pragma config CP0 = OFF,CP1 = OFF,CP2 = OFF//CONFIG5L
#pragma config CPB = OFF,CPD = OFF//CONFIG5H
#pragma config WRT0 = OFF,WRT1 = OFF,WRT2 = OFF//CONFIG6L
#pragma config WRTB = OFF,WRTC = OFF,WRTD = OFF//CONFIG6H
#pragma config EBTR0 = OFF,EBTR1 = OFF,EBTR2 = OFF//CONFIG7L
#pragma config EBTRB = OFF//CONFIG7H
/*********************************************************************************/

void main(void)
{
TRISA = 0XFF;
TRISB = 0X00;
TRISC = 0X00;
PORTA = 0X00;
PORTB = 0X00;
PORTC = 0X00;


OpenXLCD (FOUR_BIT & LINES_5X7);
while(BusyXLCD());
WriteCmdXLCD(CURSOR_OFF & BLINK_OFF);

Delay10KTCYx(200); // <-- CAUSA DEL PROBLEMA

while(BusyXLCD());
SetDDRamAddr(0x00);
while(BusyXLCD());
putrsXLCD("Hola mundo");


while(1);
}


void DelayFor18TCY( void )
{
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();
       Nop();

}

void DelayXLCD (void)
{
Delay1KTCYx(25); // Delay of 5ms -> (TimeDelay * Fosc) / 4
return;
}

void DelayPORXLCD (void)
{
Delay1KTCYx(75); // Delay of 15ms -> (TimeDelay * Fosc) / 4
return;
}
Me parece que el C18 tiene algo en contra mía, porque estoy siempre igual con tontadas así  :(

Desconectado sycho

  • PIC16
  • ***
  • Mensajes: 195
Re: Problema con delays.h (pic18f2550 & C18)
« Respuesta #1 en: 28 de Septiembre de 2008, 13:44:09 »
No me pregunten por que, pero al cambiar el display por otro modelo ya funciona!
El que da problemas es un MDLS16265B (HD44100FS+HD44780A) y el que funciona es un DataImage con los IC embebidos.