Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] DS1307 with ATmega32

Status
Not open for further replies.

remona

Newbie level 4
Joined
Jun 10, 2013
Messages
6
Helped
1
Reputation
2
Reaction score
1
Trophy points
3
Location
Khartoum, Sudan, Sudan
Activity points
44
Hello All
i am working on RTC DS1307 interface with ATmega32
i am using built in library of DS1307 in CodeVision AVr.
i cannot set the day of week
can we help me Please :roll:
 

What problem u face is default day consider or any other please mentioned
 
  • Like
Reactions: remona

    remona

    Points: 2
    Helpful Answer Positive Rating
i can not read and set the day of week ,i was used
day=i2c_read(0)& 0x07; to read the content of RTC register "day" and always i have number 7
and used
i2c_start(); //transmit start cpndition
i2c_write(0b11010000); //transmit addres od DS1307 +w
i2c_write(0x03);
i2c_write(day & 0b00000111); //set day of weak
delay_ms(20);
i2c_stop();
i never get that day i was entered
 

Try by Write address D3 only instead of 0d & 03 .then write day data
 
  • Like
Reactions: remona

    remona

    Points: 2
    Helpful Answer Positive Rating
what r u means by D3??????????????
In each case i was try that
if i lay day=5 then used

i2c_start(); //transmit start cpndition
i2c_write(0b11010000); //transmit addres od DS1307 +w
i2c_write(0x03); //set register pointer to 03
i2c_write(day); //set day of week "day value"
delay_ms(20);
i2c_stop();

to read day of week used day=i2c_read(3)& 03;
always day =3
 

Try This
i2c_start();
i2c_write(0b11010011);
i2c_write(0b00000111); //set day of weak
delay_ms(20);
i2c_stop();

if it work or not
inform result

- - - Updated - - -

Try This
i2c_start();
i2c_write(0b11010011);
i2c_write(0b00000111); //set day of weak
delay_ms(20);
i2c_stop();

if it work or not
inform result
 
  • Like
Reactions: remona

    remona

    Points: 2
    Helpful Answer Positive Rating
The objective of the project to give the user the possibility to adjust the day to receive the value of it
So I need to write on the Registrar then read the Registrar to test result
But in the code sender value of each day is always fixed by 3
i2c_write (0b00000111); / / set day of weak
 
From above I guess like this
1. User always set Day as per his choice. so u required day setting. I suggest first check whether logic work for any day value which may 1 to 7 . for this u set fix value check if it work then u change ur logic.
2. In code sender u say always fixed value =3 but in write command u write 0x00000111 which = 0x07 so which is correct
 
  • Like
Reactions: remona

    remona

    Points: 2
    Helpful Answer Positive Rating
Unfortunately, I tried and did not get any satisfactory result
What's supposed to work I am doing :sad:
 

Thank you a lot for you try to help me, finally ,I was resolved the problem and got the desired results, interest permeated i was used :
/* set Day of weak from DS1307 */
i2c_start(); //transmit start cpndition
i2c_write(0xD0); //transmit addres od DS1307 +w
i2c_write(0x03); //set Dregister pointer to 03
i2c_write(day); //set day of weak
delay_ms(20);
i2c_stop();
/* Read current "Day" from DS1307 */
i2c_start();
i2c_write(0xD0); // transmit addres od DS1307 +w
i2c_write(0x03); // set register pointer to 3
i2c_start();
i2c_write(0xD1); // RD from RTC
day = i2c_read(0)& 07; // Read current "Day" in DS1307
i2c_stop();

Thanks alot :smile:
 

u problem is with just bit which is 3 instead of 7 may correct. Just try for D3 instead of seperate D & 3
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top