Olimex AVR-MT-128 and DS1307 Real Time Clock

Your source for all things Atmel.
Locked
gray01cgr
Posts: 1
Joined: Fri Apr 21, 2006 11:15 am
Contact:

Olimex AVR-MT-128 and DS1307 Real Time Clock

Post by gray01cgr » Fri Apr 21, 2006 11:34 am

I am currently in the process of building a digital clock using the Olimex AVR-MT-129 board with a DS1307 connected to it. The AVR-MT128 is working great and has a lot of functionality. Got most of my code working for a menu system for setting the clock but when i hookup the DS1307 to the AVR i get nothing. I am wondering if anyone else has tried to do this and has had any luck and if anyone might know what i am doing wrong. I am including a code snippet and the wiring that i have done. Thanks for any help.
Garry


DS1307 AVRmega128
Pin 5 SDA to PD1
Pin 6 SCL to PD0
Pin 7 SQW to PE2
Pin 8 to +5
Pin 4 to GND
Pin 1 and 2 got to a 32.768kHZ crystal

Code:
#include <mega128.h>
#include <delay.h>
#include <stdio.h>

// I2C Bus functions
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>

// DS1307 Real Time Clock functions
#include <ds1307.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

// Declare your global variables here
unsigned char date,month,year,hour,minute,second;
char lcd_buffer[33];

void main(void)
---
snip
---
// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1Hz
rtc_init(0,1,0);

// LCD module initialization
lcd_init(16);
rtc_set_date(31,12,02);
lcd_clear();
rtc_set_time(23,59,58);
lcd_clear();

while (1)
{
// Place your code here
rtc_get_date(&date,&month,&year);
sprintf(lcd_buffer,"%2u-%2u-200%u",date,month,year);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer);
delay_ms(500);
rtc_get_time(&hour,&minute,&second);
sprintf(lcd_buffer,"%2u:%2u:%2u",hour,minute,second);
lcd_gotoxy(0,1);
lcd_puts(lcd_buffer);
delay_ms(500);
lcd_clear();
};
}

transcendentnb2
Posts: 54
Joined: Tue Aug 16, 2005 6:05 pm

Post by transcendentnb2 » Sat Apr 22, 2006 8:02 am

I've never used that code, but check to make sure you have pull-up resistors on your clock and data lines. You never mentioned it and it's a fundamental I2C/TWI requirement.

Sumit_Dave
Posts: 1
Joined: Mon Aug 14, 2006 4:46 am

Post by Sumit_Dave » Mon Sep 04, 2006 7:58 am

1) which IDE are u using ?
2) can you send me the mega128.h and delay.h as i wanted to run demo code.

stevech
Support Volunteer
Posts: 2882
Joined: Sat Jun 05, 2004 8:51 pm
Location: USA, California

Post by stevech » Mon Sep 04, 2006 12:16 pm

Among the winAVR files for OPEX, a scheduler OS based on date/times rather than only delay() as in RTOSes - is code for a DS1307.
That code doesn't rely on libraries - - so maybe it'll help.

At the link, below, you can get the OPEX source code and look at the DS1307 source file.

And I included that file from the OPEX files as an attachment here.

These are old versions - newer exist.

http://www.avrfreaks.net/index.php?modu ... tem_id=230

http://www.atmanecl.com
http://www.atmanecl.com/EnglishSite/opex.htm (lower left)

and if you ever get involved with the new ZX24a, here's DS1307 code for ZBasic's VM is at
http://www.zbasic.net/forum/viewtopic.php?t=215

Locked

Return to “Code”