PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nachhilfe in C bzgl PCF 8583



becherglas
16.04.2004, 00:31
EDIT: Problem die 1. dank Kjion gelöst !
Danke !

Da ich nicht noch einen Thread für fast das gleiche Problem eröffnen wollte hab ich Ihn kurzer Hand mal geändert 8-[

Und nun zu meinem aktuellen Problem. Also mein PCF 8385 läuft mitlerweile und ich habe bis auf eine sich aus irgendeinem grund nicht ändernde stundenzahl auch eine schön laufende uhr.

so weit so gut wollte ich mich am datum versuchen und hab mir entsprechende code zeilen die ich irgendwo im netz gefunden habe angeschaut ... leider blicke ich nicht ganz durch.



void GetDate()
{
int var_l=0,var_h=0,flag;

tag = read_rtc(0x05)&0x3F;
monat = read_rtc(0x06)&0x1F;

// Da der PCF8583 nur 4 Jahre zählen kann, ist das Jahr in Adresse 0x10 gespeichert
// Mit dem Inhalt in der Adresse 0x11 wird verglichen, ob sich das Jahr verändert hat
jahr = (read_rtc(0x05)&0xC0)>>6;
zeit[6]=jahr;
flag=read_rtc(0x11);
if(jahr!=flag)
{flag=jahr;
var_l=read_rtc(0x10);
var_l++;
if((var_l&0xf)>9)
{
var_l=var_l&0xF0;
var_l=var_l+0x10;
}
write_rtc(0x10,var_l);
write_rtc(0x11,flag);
}
jahr =read_rtc(0x10);

//Hier wird der Wochentag bestimmt
dow = (read_rtc(0x06)&0xE0)>>5;
dow = dow+1;

zeit[3]=hexd2decD(jahr); // Das aktuelle Jahr wird in den Array gespeichert
zeit[4]=hexd2decD(monat); // Der aktuelle Monat wird in den Array gespeichert
zeit[5]=hexd2decD(tag); // Der aktuelle Tag wird in den Array gespeicher
return;
}


Wäre nett wenn mir das jemand mal schritt für schritt erklären könnte ... vor allem das &-Zeichen bereitet mir Kopfschmerzen. Was wird da gemacht ?


Danke !

Mfg

Kjion
16.04.2004, 07:44
Vielleicht wäre auch der Rest des Codes interessant. Ich würde jetzt spontan darauf tippen, das entweder das LCD oder I2C den gesamten Port "belegt", also in der Software der ganze Port angesprochen wird und nicht nur die einzelnen Pins.
Initialisisierst du vorher eigentlich die ganzen Register des ATmega16 ? Das könnte nämlich dazu führen, das der entsprechende Pin der Led zuerst als Eingang geschaltet ist und dann durch das LCD wieder zum Ausgang wird.

Du könntest also mal überprüfen ob beides funktioniert wenn du sie an komplett verschiedene Ports hängst. Sollte dies der Fall sein, müsste man im Quelltext mal nachschauen was da gemacht wird...

MfG Kjion

becherglas
16.04.2004, 15:26
*Eröffnungspost geändert*