uint16_t DA7;
} BAR2_t;
+/* Not implemented */
typedef struct {
// uint32_t CTR0STATUS;
// uint32_t CTR0MODE;
int addr;
/* The real voltage which is on inputs od A/D convertors.
- Until new conversion is started, there is old value in ADC registers*/
+ Until new conversion is started, there is still old value in ADC registers*/
unsigned int real_world_AD0; //Value in "ADC internal" format
unsigned int real_world_AD1;
unsigned int real_world_AD2;
BAR2_t BAR2;
BAR4_t BAR4;
- int ADDATA_FIFO[8]; //this array tells us which ADCs are being converted
+ int ADDATA_FIFO[8]; //this array tells us which ADCs are being converted
unsigned int ADDATA_FIFO_POSITION; //ADDATA is FIFO register;
- //We need to know, position in this FIFO =
- //Which value will come next
+ //We need to know, position in this FIFO =
+ //Which value will come next
} mf624_state_t;
int instance = 0; // Global variable shared between multiple mf624 devices
{
return ((((double)dacinternal)/0x4000)*20.0 - 10.0);
}
+
//-----------------------------------------------------------------------------
+
+/* Initialize register values due to MF624 manual */
void mf624_init_registers(mf624_state_t* s)
{
#define INTCSR_default_value 0x000300
s->ADDATA_FIFO_POSITION = 0;
}
-
+/* After some widget's value is changed, new value is send via socket to Qemu */
void socket_write(mf624_state_t *s, const char* reg, double val)
{
int status;
struct sockaddr_in addr_srv;
int port;
int yes = 1;
-
mf624_state_t* dev = (mf624_state_t*) ptr;
- // If no client connected, we will know about it
+
dev->socket_tmp = -1;
port = dev->port;
s->BAR0.INTCSR = (value & 0x7FF) | INTCSR_default_value; // Only first 11 bits are writable
socket_write(s, "INTCSR", s->BAR0.INTCSR);
break;
+
case GPIOC_off:
//Don't write anywhere else than into these two bits
s->BAR0.GPIOC = (value & (GPIOC_LDAC_mask | GPIOC_DACEN_mask)) | GPIOC_default_value;
socket_write(s, "DA6", dacinternal_to_volts(GND));
socket_write(s, "DA7", dacinternal_to_volts(GND));
}
-
break;
+
default:
printf("mf624_BAR0_write32(): addr = %d; value = %d\n", addr, value);
break;
printf("mf624_BAR2_write16(): addr = %d; value = %d\n", addr, value);
break;
}
-
}