Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

DCF und RTC Kategorie: Programmierung C (von Rainer - 4.05.2009 17:42)
Ich nutze:
C-Control Pro Mega128
Hallo zusammen,

ich möchte die RTC auf dem Mega128 Application Bord mit dem
DCF Modul von Conrad Best. 641138 syncronisieren.
Um das ganze zu testen und zu verstehen habe ich ein Beispiel etwas abgewandelt.

Leider Funktioniert die Sysncronisation nicht. DCF Singnal
ist da (andere Geräte brauchen ca. 2 - 3 Minuten).

Hier mein Prog:

byte seconds, minute, hour, day, mon, year;
byte sec, last_sec;
word xi;
//------------------------------------------------------------------------------
// character output
void WriteTwoDigits(byte pos,byte val)
{
    char num[3];

    LCD_CursorPos(pos);                     // set LCD Cursor
    Str_WriteWord(val,10,num,0,2);
    LCD_WriteText(num);                     // output string
}
//------------------------------------------------------------------------------
// set display format
void Display_Time(void)
{
    WriteTwoDigits(0,Clock_GetVal(CLOCK_HOUR));                 // hour
    LCD_WriteChar(':');
    WriteTwoDigits(3,Clock_GetVal(CLOCK_MIN));                 // minute
    LCD_WriteChar(':');
    WriteTwoDigits(6,sec);                // second

    WriteTwoDigits(0 + 0x40, Clock_GetVal(CLOCK_DAY)+1);                 // day
    LCD_WriteChar('.');
    WriteTwoDigits(3 + 0x40, Clock_GetVal(CLOCK_MON)+1);                 // month
    LCD_WriteChar('.');
    WriteTwoDigits(6 + 0x40, xi/100);                // year

}

void Int_10ms(void)
{
  xi++;
  DCF_PULS();
  DCF_SYNC();
  DCF_FRAME();
  if (xi > 65000)
  {
    xi = 0;
    DCF_START();
  }
  Irq_GetCount(INT_TIM2COMP);
}
void Init_DCF(byte Port)
{
  Port_DataDirBit(Port,0);
  Port_WriteBit(Port,PORT_OFF);
  DCF_INIT();
  DCF_START();
  Irq_SetVect(INT_TIM2COMP,Int_10ms);
}
//------------------------------------------------------------------------------
// main program
void main(void)
{
    xi =0;
    LCD_Init();                             // init Display
    LCD_ClearLCD();                         // clear Display
    LCD_CursorOff();                        // turn Display Cursor off

    Clock_SetTime(19,20,00,00);
    Clock_SetDate(21,03,09);

    Init_DCF(40);

    last_sec= Clock_GetVal(CLOCK_SEC);
    while(1)
    {
      sec= Clock_GetVal(CLOCK_SEC);
      if(sec != last_sec) Display_Time();
      last_sec= sec;
    }
}

Wo mache ich einen Fehler ?

GruĂ? und Danke Rainer


    Antwort schreiben


Antworten:

Re: DCF und RTC (von Rainer - 5.05.2009 13:55)
    Re: DCF und RTC (von Rodrunner - 5.05.2009 17:14)
        Re: DCF und RTC (von Rainer - 5.05.2009 19:01)
            Re: DCF und RTC (von Rainer - 6.05.2009 21:22)
                Re: DCF und RTC (von Rainer - 9.05.2009 22:52)
                    Re: DCF und RTC (von Ch-M - 7.08.2010 22:01)
                    Re: DCF und RTC (von Mike Gilbert - 22.10.2009 16:17)
                    Re: DCF und RTC (von dergeheime - 4.10.2009 21:58)