RTC

Postby namir » Mon Jan 14, 2013 12:00 am

Hallo Freunde,

void rtc_check(void)
{
unsigned char help;

do
{
REGD = (REGD | 0x01); // HOLD Bit auf HIGH setzen!
help = (REGD & 0x02); // BUSY Bit maskieren
if (help) REGD = (REGD & 0x0e); // Wenn BUSY Bit HIGH ist,
} // HOLD Bit wieder auf LOW setzen und
while(help); // Schleife nochmals ausführen!
} // Wenn Busy Bit LOW ist, weiter mit Zugriff auf RTC


Frage: Ist die Zeile # if (help) REGD = (REGD & 0x0e);# korrekt?

Damit soll der Hold Bit auf 0 gesetzt (d.h. REGD = REGD & 0x00!!

Ist mein Verstaendnis nicht richtig?
namir
 
Posts: 17
Joined: Fri Jan 03, 2014 1:52 pm

Postby rai » Mon Jan 21, 2013 12:00 am

Hi,

Wenn die Variable "help" nicht null ist (d.h. wenn das Busy Bit gesetzt ist) wird das HOLD Bit zurück auf 0 gesetzt.

Dein Code passt also.

Zum Vergleich mal mein Code für die RTC:
while(1)
{
rtc_controlD = rtc_controlD | 0x01; //kurzes Anhalten der Uhr
zw = rtc_controlD & 0x02; //Auslesen Busy Flag
if(zw != 0)
{
rtc_controlD = rtc_controlD & 0xFE; //Uhr weiterlaufen lassen
continue;
}
//Auslesen Zeit
zeit[0] = rtc_hour10;
zeit[1] = rtc_hour1;
zeit[2] = rtc_min10;
zeit[3] = rtc_min1;
zeit[4] = rtc_sec10;
zeit[5] = rtc_sec1;

//Auslesen Datum
....
rtc_controlD = rtc_controlD & 0xFE; //Uhr weiterlaufen lassen
break; //Schleife unterbrechen
}

Rai
rai
 
Posts: 45
Joined: Fri Jan 03, 2014 2:12 pm


Return to Mikrocontroller-Fernlehrgang (TFH)

Who is online

Users browsing this forum: No registered users and 1 guest

cron