|
|
View previous topic :: View next topic |
Author |
Message |
faizkeats
Joined: 01 Aug 2010 Posts: 1
|
An error |
Posted: Sun Aug 01, 2010 12:23 am |
|
|
In last two statements where printf is used, it gives me an error:
Expecting a close paren
Can someone help me in this regard? Rest of the code is same as given above by Phil. Thanks. |
|
|
matheuslps
Joined: 29 Sep 2010 Posts: 73 Location: Brazil
|
|
Posted: Sun Dec 05, 2010 9:26 pm |
|
|
I know this is an old topic, but here the code worked like a charm! :D
BUT, can someone tell me what is dow? From:
Code: | ds1307_set_date_time(day,mth,year,dow,hour,min,sec) Set the date/time |
thanks |
|
|
Phil
Joined: 09 Sep 2003 Posts: 12
|
|
Posted: Mon Dec 06, 2010 2:08 am |
|
|
Day of week: 1 = Sunday, 2= Monday....7=Saturday |
|
|
matheuslps
Joined: 29 Sep 2010 Posts: 73 Location: Brazil
|
|
Posted: Mon Dec 06, 2010 6:43 am |
|
|
Thanks man! |
|
|
ajaygautam.ic
Joined: 28 Apr 2011 Posts: 1
|
|
Posted: Thu Apr 28, 2011 12:14 am |
|
|
Hi ,
I am new for this, please correct me if I am wrong.
This code is not looking a driver code. Means I am not able to get that where is the init_module, cleanup_module, device_open, device_release, device_read, device_ioctl functions in this code ?
Please clarify me.
--Thanx
Ajay Gautam |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Apr 28, 2011 11:13 am |
|
|
This is not a Linux driver. It's for small PIC micro-controllers, and is
written for the CCS C compiler. These micro-controllers don't have
an operating system. |
|
|
Koslov
Joined: 02 May 2011 Posts: 2
|
|
Posted: Wed May 11, 2011 11:42 am |
|
|
Hi,
I've used that driver with a pic18f4550, but for some weird reason the display doesn't show the hours, and the minutes parameter freezes when arrive at 59 minutes, here's my code
Code: | #include "C:\Users\Koslov\Desktop\Electronica\C08 - Elec. Sistemes\rellotge_lcd\programa.h"
#define loader_end 0x7ff
#define loader_size 0x6ff
#build (reset=loader_end+1,interrupt=loader_end+9)
#org 9, loader_end{}
#include <ds1307.c>
#include <string.h>
#include <lcd2011_noread.c>
#include <ds1621M.c>
int min,sec,hrs,dow,month,yr,day,a;
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
setup_oscillator(False);
lcd_init();
init_temp(1);
ds1307_init();
ds1307_set_date_time(15,6,5,2,23,58,50);
while(1)
{
ds1307_get_time(hrs,min,sec);
ds1307_get_date(day,month,yr,dow);
// hh : mm : ss
//1234567891234
lcd_gotoxy(10,1);
if(sec>9 ){
printf(lcd_putc,": %u ",sec);}
else{printf(lcd_putc,": 0%u",sec);}
lcd_gotoxy(5,1);
if(min>9){
printf(lcd_putc,": %u ",min);}
else{(lcd_putc,": 0%u",min);}
lcd_gotoxy(2,1);
if(hrs>9){(lcd_putc,"%u ",hrs);}
else{(lcd_putc,"0%u ",hrs);}
lcd_gotoxy(1,2);
printf(lcd_putc,"%u - %u - %u : %u",day month yr dow);
}
} |
can someone tell me how to solve this? |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Wed May 11, 2011 1:39 pm |
|
|
Your printing code is too complicated. Test it with the example code
for main() in the first post in this thread.
If it doesn't work, then make a post in the main CCS forum.
It's better to have a long thread about problems in the main forum. |
|
|
Koslov
Joined: 02 May 2011 Posts: 2
|
|
Posted: Mon May 16, 2011 7:57 am |
|
|
Thank you PCM programmer, compiling the example program made me see the trouble was in my program, and its a noob one, I forgot to put printf function at the hours parameter |
|
|
mutthunaveen
Joined: 08 Apr 2009 Posts: 100 Location: Chennai, India
|
same hang problem...now solved |
Posted: Sun Nov 27, 2011 11:51 pm |
|
|
Hello
yesterday, when i first programmed DS1307 i got the same problem.. hanging and not refreshing auto resetting etc... i analyzed my code and did the following things
1. use proper pullup resistors for I2C communication (i used 10K) hardware not in software...
2. Use WDT for 500 - 800 ms as your PIC18F supports.
3. for first compilation set date and time and for next compilation comment set date and time function, and then load that again. (when WDT reset is done then there will be no resetting of time).
hope it will help |
|
|
small_chick
Joined: 17 Jul 2012 Posts: 53
|
must set clock every run |
Posted: Fri Jul 20, 2012 10:39 am |
|
|
hadeelqasaimeh wrote:
Quote: |
Its work fine with this driver but this mean i must set clock every run!!!!!!! How to avoid this?
|
I haven't understood what you mean, hadeelqasaimeh ! Would you mind explaining more clearly ? Thanks! |
|
|
small_chick
Joined: 17 Jul 2012 Posts: 53
|
|
Posted: Sat Jul 21, 2012 7:20 pm |
|
|
Phil, I'd like to ask you this:
1/- if I assign variables such as: date,year,hr,sec... in "char" or "int8" type => is it okay ?
2/- I've contracted 2 subroutines: bin2bcd & bcd2bin, as follow:
Code: |
//subroutine converting BCD to Binary.
char bcd2bin(char bcd_value)
{
return((bcd_value >> 4) * 10 + (bcd_value & 0x0F));
}
//---------------------------------------
//subroutine converting Binary to BCD.
char bin2bcd(char binary_value)
{
return( (swap(binary_value/10)) & (binary_value % 10));
}
|
if it has any problems, please let me know ! |
|
|
kaem1189
Joined: 27 Dec 2011 Posts: 12
|
|
Posted: Sat Jun 01, 2013 8:20 pm |
|
|
I know that this is already a decade old thread. I am wondering why there is a ds1307_init() code. I think it makes no sense (unless there is function that stops the oscillator). init command fetch the value from seconds register and set oscillator enable bit and disable the squarewave output as well.. but ds1307_setdatetime also do those routine(except fetching seconds value of course) |
|
|
freesat
Joined: 08 Feb 2011 Posts: 32
|
ds1307 problems with interrupts |
Posted: Mon Sep 16, 2013 6:09 pm |
|
|
I have used this code, it really works, but is not perfect. I have found errors when any timer(x) interrupt is enabled, this causes data written or read with errors, looks like interrupt is freezing code, then continues and data lost some bits.
Can anyone confirm that?
I'm not posting sample code because is not my code problem. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Tue Sep 17, 2013 1:59 pm |
|
|
Look at this driver code for the pcf8583. This driver assumes you are
using interrupts in another part of your main program:
http://www.ccsinfo.com/forum/viewtopic.php?t=27988
The routines that call CCS i2c library functions (i2c_start, i2c_write, etc).
are protected from interrupts by being enclosed with disable/enable lines
for Global interrupts.
I suggest that you edit the ds1307 driver routines and protect them in
the same way. See if that fixes the problem. |
|
|
|
|
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
|