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.
Dependencies: MODSERIAL USBDevice_for_Rev_C_HW mbed
Fork of mbed_sv_firmware_with_init by
Diff: main.cpp
- Revision:
- 17:1e704604e1ac
- Parent:
- 16:b6230e4d0ed8
- Child:
- 18:d128c7020292
--- a/main.cpp Wed Feb 04 02:33:11 2015 +0000 +++ b/main.cpp Sun Mar 01 02:53:23 2015 +0000 @@ -116,12 +116,13 @@ rfid_int = 0; // RFID FE power control (active high) rfid_isp = 0; // RFID FE In-System Programming (active high) rfid_rst = 1; // RFID FE Reset (active high) - rfid_pwr = 1; // RFID power switch on USB board (active high for prototype 1, low for all others) +// rfid_pwr = 1; // RFID power switch on USB board (active high for prototype 1) + rfid_pwr = 0; // RFID power switch on USB board (active low for all others) wait(0.25); // wait 250ms before... rfid_rst = 0; // ... taking RFID out of reset wait(0.25); - while(!uart.readable()) // wait for RESET message from RFID + while(!uart.readable()) // wait for RESET message from RFID { led_err.write(LEDON); // flash LED until it arrives wait(0.1); @@ -215,13 +216,12 @@ int rfid_rd(void) { int rfid_len = 0; - + led_com.write(LEDON); for (i = 0; i < (RFIDLENLOW); i++) // Get first part of message to find out total count { uart_buffer_rx[i] = uart.getc(); // get a byte from rfid } - rfid_len = ((uart_buffer_rx[i-2]<<8) + (uart_buffer_rx[i-1])); // location of message length for RFID for (i = RFIDLENLOW; i < (RFIDLENLOW + rfid_len + 3); i++) @@ -440,9 +440,9 @@ int eeprom_msg_wr() // write proximity I2C register { int i2c_err; - i2c_err = i2c.write((EEPROM | i2c_buffer[3]), &i2c_buffer[4], i2c_buffer[2] + 1, 0); + i2c_err = i2c.write((EEPROM | (i2c_buffer[3] << 1 )), &i2c_buffer[4], i2c_buffer[2] + 1, 0); // I2C Address & block select, pointer to buffer, number of bytes (for address + data), stop at end. - while (!i2c.write(EEPROM | i2c_buffer[3])); // wait until write is done (EEPROM will ACK = 0 for single byte i2c.write) + while ( i2c.write(EEPROM | (i2c_buffer[3] << 1 ))); // wait until write is done (EEPROM will ACK = 0 for single byte i2c.write) return i2c_err; // 0 = ACK received, 1 = NAK/failure } @@ -483,14 +483,13 @@ int eeprom_msg_rd() { int i2c_err; - i2c_err = i2c.write((EEPROM | i2c_buffer[3]), &i2c_buffer[4], 1, 1); + i2c_err = i2c.write((EEPROM | (i2c_buffer[3] << 1)), &i2c_buffer[4], 1, 1); // I2C Address & block select, pointer to buffer (just the index), index, number of bytes (for address + data), no stop at end. - i2c_err |= i2c.read((EEPROM || i2c_buffer[3]), &i2c_buffer[5], i2c_buffer[2], 0); + i2c_err |= i2c.read((EEPROM | (i2c_buffer[3] << 1)), &i2c_buffer[5], i2c_buffer[2], 0); // I2C Address & block select, pointer to buffer (just the data), number of data bytes, stop at end. return i2c_err; // 0 = ACK received, 1 = NAK/failure } - /** * @name main * @brief main firmware loop @@ -508,7 +507,6 @@ while(1) { led_com.write(led_com_state); // turn off communication LED unless it was specifically turned on by GPIO command - if (prox_irq_state == 1) // process the proximity interrupt { prox_irq_state = 0; @@ -538,7 +536,6 @@ } cdc.writeBlock(cdc_buffer_tx, (em_pos + 2)); } - if (usb_irq_state == 1) // message available from PC { led_com.write(LEDON); // Message received - turn on LED @@ -584,7 +581,7 @@ else if (i2c_buffer[1] == 0) // I2C write = 0 status = prox_msg_wr(); // send buffer to proximity sensor and get response - if (!status) led_err.write(LEDON); + if (status) led_err.write(LEDON); em_pos = 0; for (i = 0; i < sizeof(cdc_buffer_tx); i++) @@ -650,7 +647,7 @@ else if (i2c_buffer[1] == 0) // I2C write = 0 status = eeprom_msg_wr(); // send buffer to proximity sensor and get response - if (!status) led_err.write(LEDON); + if (status) led_err.write(LEDON); em_pos = 0; for (i = 0; i < sizeof(cdc_buffer_tx); i++) @@ -670,6 +667,7 @@ cdc.writeBlock(cdc_buffer_tx, (em_pos + 2)); led_com.write(LEDOFF); break; + default: led_err.write(LEDON); while(1);