int status;
void* mf614_mem = NULL;
-void delay()
-{
- for (int i = 0; i < 65000; i++) {}
-}
void mf614_adc_init(int channel)
{
int disable_interrupts(int device_fd)
{
- char buff[4]; // we have to write 32 bit number
- strncpy(buff, "0", 4);
+ uint32_t control_value = 0;
- status = write(device_fd, buff, 4);
+ status = write(device_fd, &control_value, sizeof(uint32_t));
if (status == -1) {
perror("write()");
return -1;
int enable_interrupts(int device_fd)
{
- char buff[4]; // we have to write 32 bit number
- strncpy(buff, "1", 4);
+ uint32_t control_value = 1;
- status = write(device_fd, buff, 4);
+ status = write(device_fd, &control_value, sizeof(uint32_t));
if (status == -1) {
perror("write()");
return -1;
}
- while(1) {
-
+ while (1){
for (int i = 0; i <= 7; i++) {
+ enable_interrupts(device_fd);
mf614_adc_init(i);
- //enable_interrupts(device_fd);
- //read(device_fd, read_buff, 1); // should block until interrupt erceived
-
+ status = read(device_fd, read_buff, sizeof(uint32_t)); // should block until interrupt received
+
// ... got interrupt -- handle it
- //disable_interrupts(device_fd);
-
- delay();
adc_value = *(((uint8_t *) mf614_mem) + AD_LO) | (*(((uint8_t *) mf614_mem) + AD_HI) << 8);
printf("[CH %d] ADC = %f V\n", i, adc_value/819);
}
printf("\n");
+ sleep(1);
}
}