CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Help for PIC18F67K22 and LCD driver HDM64GS12.C

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
MegatroniC



Joined: 08 Dec 2009
Posts: 35

View user's profile Send private message ICQ Number

Help for PIC18F67K22 and LCD driver HDM64GS12.C
PostPosted: Thu Mar 12, 2015 12:44 am     Reply with quote

Hello all.
I hope you can help me on this problem.
Display works without problems in the simulation.

http://s2.postimg.org/70t7onhqh/problem.jpg

But does not work in the real PCB. :(
Maybe not initialize because all voltages in the display are available.
Sometimes backlight only lights up, and sometimes displayed pixels randomly.

I have never encountered this in other chips, such as 18F4620, 18F46K22 ...


Here configuration:

HDM64GS12.C
Code:


#ifndef HDM64GS12
#define HDM64GS12

#ifndef GLCD_WIDTH
#define GLCD_WIDTH   128
#endif

#ifndef GLCD_CS1
#define GLCD_CS1     PIN_E3   // Chip Selection 1 
#endif

#ifndef GLCD_CS2
#define GLCD_CS2     PIN_E4   // Chip Selection 2     
#endif

#ifndef GLCD_DI
#define GLCD_DI      PIN_E5   // Data or Instruction input - RS pin
#endif

#ifndef GLCD_RW
#define GLCD_RW      PIN_E6   // Read/Write
#endif

#ifndef GLCD_E
#define GLCD_E       PIN_E7   // Enable
#endif

//#ifndef GLCD_DIT
//#define GLCD_DIT     PIN_C0   // Reset
//#endif


test.h
Code:


#include <18F67K22.h>     

#FUSES WDT                      //Watch Dog Timer     
#FUSES WDT1024                  //Watch Dog Timer uses 1:1024 Postscale ->4.096s
#FUSES SOSC_DIG                 //Digital mode, I/O port functionality of RC0 and RC1
#FUSES NOXINST               //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES HSH                      //High speed Osc, high power 16MHz-25MHz
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES PUT                      //Power Up Timer
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES WDT_NOSLEEP              //Watch Dog Timer, disabled during SLEEP
#FUSES PROTECT                  //Code protected from reads
#FUSES NOWRTD


#use delay(int=16000000,RESTART_WDT)
...


test.c
Code:


void main()
{
   
 gc_old_switch_status = read_switches();        // Read and save the initial state of the switches

 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);   //1.0 s overflow
 setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);     //32.7 ms overflow
 //setup_timer_2(T2_DIV_BY_16,250,10);         //1.0 ms overflow, 10.0 ms interrupt
 setup_timer_2(T2_DIV_BY_16,250,15);         //1.0 ms overflow, 15.0 ms interrupt
 setup_timer_3(T3_DISABLED);                 
 setup_timer_4(T4_DISABLED,0,1);           
 setup_timer_5(T5_DISABLED);               
 setup_timer_6(T6_DISABLED,0,1);             
 setup_timer_7(T7_DISABLED);                 
 setup_timer_8(T8_DISABLED,0,1);         
 setup_timer_10(T10_DISABLED,0,1);       
 setup_timer_12(T12_DISABLED,0,1);       
 
 setup_rtc(RTC_DISABLE);
 setup_psp(PSP_DISABLED);
 setup_spi(SPI_DISABLED);
 //setup_uart(FALSE);
 setup_adc(ADC_OFF);
 setup_adc_ports(NO_ANALOGS);
 setup_ccp1(CCP_OFF);
 setup_ccp2(CCP_OFF);
 setup_ccp3(CCP_OFF);
 setup_ccp4(CCP_OFF);
 setup_ccp5(CCP_OFF);
 setup_ccp6(CCP_OFF);
 setup_ccp7(CCP_OFF);
 setup_ccp8(CCP_OFF);
 setup_ccp9(CCP_OFF);
 setup_ccp10(CCP_OFF);
 setup_comparator(NC_NC_NC_NC);
 setup_vref(FALSE);
 
 //ODCON1=0x00;    //Open-drain capability is disabled
 //ODCON2=0x00;
 //ODCON3=0x00;
 //port_d_pullups(0xFF);
 //port_e_pullups(0xFF);
 set_tris_a(0xBF);             
 set_tris_b(0x3F);           
 set_tris_c(0x00);           
 set_tris_e(0x00);
 set_tris_f(0x00);
 set_tris_g(0x00);
 
 output_c(0x00);

 delay_ms(500);
 glcd_init(ON);
 
 enable_interrupts(GLOBAL);
 
 
 ReadStoreValue();

....



Perhaps I'm wrong settings for port D and port E ...
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Thu Mar 12, 2015 1:00 am     Reply with quote

Your schematic doesn't show any connections to the LCD on pins 4 and 5,
which are Vdd and contrast.

Your Proteus schematic doesn't even show a connection for the backlight.

Post a schematic of your real hardware connections.
MegatroniC



Joined: 08 Dec 2009
Posts: 35

View user's profile Send private message ICQ Number

PostPosted: Thu Mar 12, 2015 1:21 am     Reply with quote

Thanks


PIC
http://s14.postimg.org/m12faum9t/Clipboard02.jpg

LCD
http://s14.postimg.org/6gv1kbc5d/Clipboard04.jpg

V0 ~ 5,6V
VEE ~ 9,4V

This scheme for display use often without problems.
But this PIC I use for the first time.
Ttelmah



Joined: 11 Mar 2010
Posts: 19499

View user's profile Send private message

PostPosted: Thu Mar 12, 2015 1:22 am     Reply with quote

He is also setting the clock to use both the internal oscillator, and an external crystal....
The real chip needs the oscillator setup correctly.
MegatroniC



Joined: 08 Dec 2009
Posts: 35

View user's profile Send private message ICQ Number

PostPosted: Thu Mar 12, 2015 2:25 am     Reply with quote

HSH -> #FUSES INTRC_IO //Internal RC Osc, no CLKOUT ?

The rest of the program works correctly, only the display does not work.
MegatroniC



Joined: 08 Dec 2009
Posts: 35

View user's profile Send private message ICQ Number

PostPosted: Thu Mar 12, 2015 3:29 am     Reply with quote

I tried

output_d(0xFF);
output_e(0xFF);

and removing the initialization for LCD.

only RE5(RS for LCD) and RE7(E for LCD) stay at 0.
probably this is the reason for the problem, but why?
MegatroniC



Joined: 08 Dec 2009
Posts: 35

View user's profile Send private message ICQ Number

PostPosted: Thu Mar 12, 2015 3:51 am     Reply with quote

Problem is solved!

With new 67К22. Very Happy
Perhaps a manufacturing defect or soldering ...

Good Day to all!
Ttelmah



Joined: 11 Mar 2010
Posts: 19499

View user's profile Send private message

PostPosted: Thu Mar 12, 2015 8:53 am     Reply with quote

MegatroniC wrote:
HSH -> #FUSES INTRC_IO //Internal RC Osc, no CLKOUT ?

The rest of the program works correctly, only the display does not work.


You are just being lucky.....

HSH, is the fuse for High speed crystal/resonator, running in high power mode.

It is being overriden by your clock setting, and luckily happens to hit a combination that works. INTRC_IO is the fuse for internal RC oscillator no CLKOUT.

Look at the file 'fuses.txt' in your compiler directory, to find what each fuse 'name' does.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group