Announcement

Collapse
No announcement yet.

RTC Programming

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • RTC Programming

    Hallo!

    Steck mitten in der Diplomarbeit und hab ein Problem mit der RTC.
    Obwohl ich in meiner Software die RTC öffnen und diverse Einstellungen ohne Fehlermeldungen vornehmen kann, werden diese vom meinem Gentoo System offenbar nicht übernommen. Auf anderen Systemen (Gentoo als auch Kubuntu) klappt es bestens. Hat jemand ne idee?

    Bin dankbar für jeden Hint!

    Gruss busa


    Hier ein kleines Testprog
    Code:
    #include <fcntl.h>
    #include <stdio.h>
    #include <unistd.h>
    
    #include <linux/rtc.h>
    
    #include <sys/ioctl.h>
    
    
    
    static int rtc;
    unsigned long ticks;
    int rc;
    char g[3];
    
    int main(int argc, char *argv[]) {
    
    printf("Opening /dev/rtc.\n");
    if(-1==(rtc=(rc=open("/dev/rtc",O_RDONLY))))
    		return -1;
    printf("RC is %i\n\n",rc);
    
    printf("Turning on interrupts.\n");
    	if(-1==(rc=ioctl(rtc,RTC_PIE_ON,0)))
    		return -1;
    
    printf("RC is %i\n\n",rc);
    
    printf("Setting Freq.\n");
    	if(-1==(rc=ioctl(rtc,RTC_IRQP_SET,8192)))
    		return -1;
    printf("RC is %i\n\n",rc);
    
    ioctl(rtc,RTC_IRQP_READ,&ticks);
    printf("RTC is running at %li Hz.\n",ticks);
    fflush(stdout);
    
    ioctl(rtc,RTC_IRQP_SET,64);
    close(rtc);
    
    return 0;
    Und der Output sieht folgendermassen aus:
    Code:
     # ./compile.sh && ./test
    
    Opening /dev/rtc.
    RC is 3
    
    Turning on interrupts.
    RC is 0
    
    Setting Freq.
    RC is 0
    
    RTC is running at 1024 Hz.
    
    # cat /proc/driver/rtc
    
    rtc_time        : 15:19:40
    rtc_date        : 2007-10-15
    rtc_epoch       : 1900
    alarm           : 14:58:15
    DST_enable      : no
    BCD             : yes
    24hr            : yes
    square_wave     : no
    alarm_IRQ       : no
    update_IRQ      : no
    periodic_IRQ    : no
    periodic_freq   : 1024
    batt_status     : okay
Working...
X