Hallo,

ich versuche hier gerade in der Echtzeituhr DS1307 ein Datum mit Zeit zu speichern (1.1.09 0:0:0), das ich dann erstmal zum testen mit dem Terminalprogramm von myAVR auslesen möchte. Doch leider funktionier das nicht ganz, da das Datum und die Zeit nicht in ihr gespeichert werden (es wird noch das zuvor gespeicherte Datum mit der zuvor gespeicherten Zeit angezeigt).

Hier ist mal mein Code. Es würde mich freuen, wenn mir jemand bei der Fehlersuche helfen könnte.

Code:
#define _C_

#define LCD_PORT 			PORTD
#define LCD_PORT_DDR 		DDRD
#define LCD_LIGHT
#define LCD_LIGHT_PORT 		PORTB
#define LCD_LIGHT_PORT_DDR 	DDRB
#define LCD_LIGHT_PORT_PIN 	1

#define TWI_FAKTOR 10

unsigned char text[7];

#include <avr/io.h>
#include "D:\Eigene Programme und Dateien\ATMEL\Eigene Projekte\def.h"
#include "D:\Eigene Programme und Dateien\ATMEL\Eigene Projekte\lcd.h"

typedef struct
{
	int Sekunde,Minute,Stunde,Tag,Monat,Jahr;
}time;

void twi_init()
{
	TWSR=0;
	TWBR=TWI_FAKTOR;
	TWAR=0;
}

void rtc_init(time x)
{
	TWCR |= (1 << TWSTA) | (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	cbi(TWCR,TWSTA);
	TWDR=0b11010000;
	TWCR |= (1 << TWEA) | (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	TWDR=0;
	TWCR |= (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	TWDR=(x.Sekunde);
	cbi(TWDR,7);
	TWCR |= (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	TWDR=x.Minute;
	TWCR |= (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	TWDR=x.Stunde;
	TWCR |= (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	TWDR=x.Tag;
	TWCR |= (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	TWDR=x.Monat;
	TWCR |= (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	TWDR=x.Jahr;
	TWCR |= (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	cbi(TWCR,TWEA);
	TWCR |= (1 << TWSTO) | (1 << TWEN) | (1 << TWINT);
	loop_until_bit_is_set(TWCR,TWINT);
	cbi(TWCR,TWEN);
}

void main()
{
	time t={0,0,0,1,1,9};
	twi_init();
	rtc_init(t);
}
mfg
_R2D2