/* * This programmer uses AT91' System clock * * 2010 by Ricardo V. Rojas Quispe */ #include #include #include #include #include #include #include #include #include "./Librerias/at91sysclock.h" //Mapeando los registro en memoria: AT91S_PMC *clock_map(unsigned int clockbase){ int fd; void *base; AT91S_PMC *clock; off_t addr = clockbase; if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) { fprintf(stderr, "Cannot open /dev/mem.\n"); exit(EXIT_FAILURE); } //fprintf(stderr, "/dev/mem opened.\n"); base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, addr & ~MAP_MASK); if (base == (void *) -1) { fprintf(stderr, "Cannot open /dev/mem.\n"); exit(EXIT_FAILURE); } //fprintf(stderr, "Memory mapped at address %p.\n", base); clock = base + (addr & MAP_MASK); return clock; } //Habilitamos el clock de ADC void enable_clock_adc(AT91S_PMC * clock){ clock->PMC_PCER=0x20; } //Leemos el registro de estado de clock para perifericos unsigned int status_clock_adc(AT91S_PMC * clock){ return (clock->PMC_PCSR); }