Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 31:0475756cede6, committed 2021-06-10
- Comitter:
- bavovanachte
- Date:
- Thu Jun 10 13:29:48 2021 +0000
- Parent:
- 30:b463e1f3cae3
- Commit message:
- Implemented; - Word write; - SPEED aliases
Changed in this revision
--- a/i2c_mbed_fpga.cpp Thu Jun 10 12:45:11 2021 +0000
+++ b/i2c_mbed_fpga.cpp Thu Jun 10 13:29:48 2021 +0000
@@ -120,6 +120,29 @@
return ack;
}
+int i2c_mbed_fpga::i2c_word_write_interpreter(int address, int value){
+ int read_value;
+ int busy;
+ int ack = 0;
+ while(i2c_check_busy_flag()) {
+ /* Wait for the busy flag to clear */
+ }
+ ack += this->i2c_word_write_simple(I2C_CMD_INTERPRETER_DATA, value);
+ ack += this->i2c_word_write_simple(I2C_CMD_INTERPRETER_ADDRESS, (address & 0xFFFE)); /* Write the address with the LSB set to 0 to indicate a write operation */
+ /* Check if the command is finished by polling the LSB of CMD_INTERPRETER_ADDRESS */
+ do {
+ ack += this->i2c_word_read_simple(I2C_CMD_INTERPRETER_ADDRESS, &read_value);
+ if((read_value & 0x1) == 0u) {
+ busy = true;
+ } else {
+ busy = false;
+ }
+ wait_us(100);
+ }
+ while(busy == true);
+ return (ack == 0) ? 0 : 1;
+}
+
/** i2c enter key to open I2C window (for old releases)
--- a/i2c_mbed_fpga.h Thu Jun 10 12:45:11 2021 +0000
+++ b/i2c_mbed_fpga.h Thu Jun 10 13:29:48 2021 +0000
@@ -42,6 +42,7 @@
int i2c_word_read_interpreter(int address, int* return_value);
int i2c_word_write(char *word);
int i2c_word_write_simple(char address, int value);
+ int i2c_word_write_interpreter(int address, int value);
//int i2c_window_open();
//int i2c_motor_start();
--- a/scpi-def.cpp Thu Jun 10 12:45:11 2021 +0000
+++ b/scpi-def.cpp Thu Jun 10 13:29:48 2021 +0000
@@ -113,6 +113,30 @@
return SCPI_RES_OK;
}
+scpi_result_t write_word(scpi_t* context)
+{
+ int address = 0;
+ int value = 0;
+
+ /* read first parameter: address */
+ if (!SCPI_ParamInt(context, &address, TRUE)) {
+ return SCPI_RES_ERR;
+ }
+
+ /* read first parameter: address */
+ if (!SCPI_ParamInt(context, &value, TRUE)) {
+ return SCPI_RES_ERR;
+ }
+
+ if((address >= 0x1000) && (address < 0x1200)) {
+ address = (address - 0x1000) / 2;
+ i2c.i2c_word_write_simple(address, value);
+ } else {
+ i2c.i2c_word_write_interpreter(address, value);
+ }
+ return SCPI_RES_OK;
+}
+
/**
* Reimplement IEEE488.2 *TST?
@@ -166,9 +190,12 @@
/* DMM */
{"TARGet:DUTYcycle", set_duty, 0},
{"TARGet:DUTYcycle?", get_duty, 0},
+ {"TARGet:SPEED", set_duty, 0},
+ {"TARGet:SPEED?", get_duty, 0},
{"LED1", set_led1, 0},
{"LED1?", get_led1, 0},
{"MEMory:WORD?", read_word, 0},
+ {"MEMory:WORD", write_word, 0},
SCPI_CMD_LIST_END