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
diff -r b6230e4d0ed8 -r 1e704604e1ac main.cpp
--- 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);
