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

Ds18b20 by 18f4520

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



Joined: 04 Oct 2010
Posts: 53
Location: Dhaka

View user's profile Send private message Send e-mail

Ds18b20 by 18f4520
PostPosted: Tue Dec 28, 2010 4:47 am     Reply with quote

Dear member again I'm in problem with 18f4520

My program works well in Proteus but not in real board.

I use common ds18b20 program and modified
Code:

/*-------1-wire definitions-------*/
#define ONE_WIRE_PIN PIN_D0

/*******************1-wire communication functions********************/

that portion

and use flex driver for lcd.

But my program always show TEMP=0'C.

Heres my code for fuses:
Code:

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC_IO                    //Internal RC Osc
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES BORV25                   //Brownout reset at 2.5V
#FUSES PUT                    //No Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOIESO                     //Internal External Switch Over mode enabled
#FUSES NOFCMEN                    //Fail-safe clock monitor enabled
#FUSES NOPBADEN                   //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOLPT1OSC                  //Timer1 configured for low-power operation
#FUSES NOMCLR                     //Master Clear pin enabled
#FUSES NOXINST                    //Extended set extension and Indexed Addressing mode enabled

#use delay (INTERNAL=8MHZ)


then my original program
Code:

void main()
{
Delay_ms(500);

lcd_init();

onewire_write(0xCC);
onewire_write(0x4E);

onewire_write(125);
onewire_write(-55); //this should be done for proper working of DS18B20
onewire_write(127);

onewire_reset();
onewire_write(0xCC);
onewire_write(0x48);
delay_ms(15);

TEMP=ds1820_read();

while(1)
  {
TEMP=ds1820_read();

lcd_gotoXY(1,1);
printf(lcd_putc, "Temp=%u",TEMP);
lcd_putc(223);
lcd_putc("C    ");
  }   

}

regards
misel
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Tue Dec 28, 2010 3:15 pm     Reply with quote

You are using code for multiple ds18b20 sensors.
Try the code at the start of the thread below. It's for one sensor.
http://www.ccsinfo.com/forum/viewtopic.php?t=28425

Be sure to comment the first line and un-comment the 2nd line in the
calculation code, so it looks like this:
Code:

//result = (float) temp3 / 2.0;   //Calculation for DS18S20 with 0.5 deg C resolution
result = (float) temp3 / 16.0;  //Calculation for DS18B20 with 0.1 deg C resolution
misel0019



Joined: 04 Oct 2010
Posts: 53
Location: Dhaka

View user's profile Send private message Send e-mail

reply
PostPosted: Thu Dec 30, 2010 5:02 am     Reply with quote

Yes sir I implemented that code you gave me.
But still having problem with 18f4550.

Now I change my ic and take 18f452 and use internal crystal and get 99.99% accurate. means temperature does not become 0.
I get output real.

Is that problem with my 18f4550 or ? I don't know.
Now I solve my problem by changing IC. Is not a good solution.

thanks
Misel
Ttelmah



Joined: 11 Mar 2010
Posts: 19504

View user's profile Send private message

PostPosted: Thu Dec 30, 2010 10:49 am     Reply with quote

There is no such thing as an 'internal crystal', on _any_ PIC. You are using an internal RC oscillator. If this works, and code using the external crystal does not, then it says you have a problem with your external circuitry, or the settings you are using....
Now some odd comments. You refer to a 18f4550, but the only code posted was for a 18f4520. Which are you using?.
The posted code is using the internal RC circuit.
Proteus, is notorious for allowing 'wrong' oscillator fuse settings to work.
So, post:
What chip?.
What oscillator?.
What fuses and clock settings?.
How is the external circuitry actually built (PCB, breadboard, etc. etc.)?.
What compiler version?.

Best Wishes
misel0019



Joined: 04 Oct 2010
Posts: 53
Location: Dhaka

View user's profile Send private message Send e-mail

reply for Ttelmah
PostPosted: Sat Jan 01, 2011 2:09 am     Reply with quote

Dear sir thanks for the reply.
Yes firstly I tried in 18f4550.
But now for getting problem there I shift in 18f4520.

Now I'm using 18f4520 and oscillator is internal RC oscillator 8MHz.

Fuse setting was in my previous post.

External is in PCB.

Compiler verson PCW4.049.

Fuse setting I used in 18f4550 is given below:
Code:

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES NOPUT                      //Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES NOSTVREN                 //Stack full/underflow will not cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLPT1OSC                  //Timer1 configured for low-power operation
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
//#FUSES PLL1                     //Divide By 5(20MHz oscillator input)
//#FUSES CPUDIV1                  //No System Clock Postscaler
#FUSES NOUSBDIV                 //USB clock source comes from primary oscillator
#FUSES NOVREGEN                   //USB voltage regulator enabled
#FUSES NOICPRT                  //ICPRT disabled
#use delay(clock=8000000)

I use burner Smartpro X5.

Fuse setting of Smartpro is

FOSC3-FOSC0=1100
PWRT=1,DEBUG=1

Thats all.

Again thanks for reply.

Regards misel
misel0019



Joined: 04 Oct 2010
Posts: 53
Location: Dhaka

View user's profile Send private message Send e-mail

Ttelmah
PostPosted: Sat Jan 01, 2011 6:00 am     Reply with quote

Dear sir,
I'm still having problem.
Another thing I'm accessing two Dallas from two pins. I did it the easiest way just make two function and accessed it by calling
Code:

#include <ds18b20_1.c>
#include <ds18b20_2.c>

and use name of different pin
Code:

define ONE_WIRE_PIN PIN_A0
define ONE_WIRE_PIN2 PIN_A0

and change every func name in two file such as
Code:

onewire_reset() in  _1 file
onewire_reset2() in _2 file

Both dallas shows garbage result means 1,2,20,15,30 etc in different time execution.

thanks

Misel
misel0019



Joined: 04 Oct 2010
Posts: 53
Location: Dhaka

View user's profile Send private message Send e-mail

still having problem
PostPosted: Sat Jan 01, 2011 6:01 am     Reply with quote

still having problem with 18f4550
but not in 18f4520

thanks
regards Misel
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Sat Jan 01, 2011 8:42 pm     Reply with quote

Quote:
Compiler verson PCW4.049
There used to be a sticky topic at the top of this discussion forum where the problems in the new V4 compiler version were discussed but since the comiler has been stable now for over a year the sticky tag has been removed and the topic moved many pages down.

In short, your compiler is a very old and unreliable version that shouldn't be used. In releasing the new v4 compiler CCS has made many releases of the new product using the users as a Test Team. Only around version number 4.070 the compiler became stable enough to compile the programs again that were working properly in the old v3.249

You are lucky with your compiler version to have some things working, but it is a waste of your (and our) time to continue using it. Please upgrade to a recent version or downgrade to the stable v3.249 that was available at your time pf purchase.
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