Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

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