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: HDSP253X mbed PCF8574_Bus
Revision 7:8680b8b718c8, committed 2015-01-25
- Comitter:
- wim
- Date:
- Sun Jan 25 17:52:55 2015 +0000
- Parent:
- 6:aaefa04f06be
- Commit message:
- Test of PCF8574 Bus interface to control HDSP253X Smart Alphanumeric LED matrix display.
Changed in this revision
--- a/BusDefines.h Sun Jan 25 17:30:47 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* BusDefines - Use the MBED Port pins and PCF8574s for controlling the Bus - * Copyright (c) 2011 Wim Huiskamp - * - * Released under the MIT License: http://mbed.org/license/mit - * - * version 0.2 Initial Release -*/ -#ifndef _BUS_DEFINES_H -#define _BUS_DEFINES_H - - -//Pin Defines for MBED Control Bus (inputs) -#define D_CDINT p20 -//Pin Defines for MBED Control Bus (outputs) -#define D_DTR p21 -#define D_CDBUF p22 -#define D_RD p23 -#define D_WR p24 - -#define D_CTRL_MSK 0xFF - -//Pin Defines for I2C Bus -//#define D_SDA p9 -//#define D_SCL p10 -#define D_SDA p28 -#define D_SCL p27 - -//I2C Bus Address Defines for PCF8574 slaves -#define D_I2C_DATA_BUS 0x40 -#define D_I2C_ADDR_BUS 0x42 -#define D_I2C_ENA_BUS 0x44 - - -//Host PC Baudrate (Virtual Com Port on USB) -#define D_BAUDRATE 9600 -//#define D_BAUDRATE 57600 - -#endif \ No newline at end of file
--- a/BusEnums.h Sun Jan 25 17:30:47 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-/* BusEnums - Use the MBED Port pins and PCF8574s for controlling the Bus
- * Copyright (c) 2011 Wim Huiskamp
- *
- * Released under the MIT License: http://mbed.org/license/mit
- *
- * version 0.2 Initial Release
-*/
-#ifndef _BUS_ENUMS_H
-#define _BUS_ENUMS_H
-
-//Enums for Control Bus and Enable Bus
-enum Bit_Level { LOW, HIGH };
-enum Bus_Dir { READ, WRITE };
-enum Bus_Ena { ENABLE, DISABLE };
-
-
-#endif
\ No newline at end of file
--- a/PCF8574_AddressBus.cpp Sun Jan 25 17:30:47 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/* PCF8574_AddressBus - Use the PCF8574 I2C Port Extender for controlling the Address Bus
- * Copyright (c) 2011 Wim Huiskamp
- *
- * Released under the MIT License: http://mbed.org/license/mit
- *
- * version 0.2 Initial Release
-*/
-#include "mbed.h"
-#include "PCF8574_AddressBus.h"
-
-/** Create an PCF8574_AddressBus object connected to the specified I2C object and using the specified deviceAddress
- *
- * @param I2C &i2c the I2C port to connect to
- * @param char deviceAddress the address of the PCF8574
-*/
-PCF8574_AddressBus::PCF8574_AddressBus(I2C &i2c, char deviceAddress) : _i2c(i2c) {
- _writeOpcode = deviceAddress & 0xFE; // low order bit = 0 for write
- _readOpcode = deviceAddress | 0x01; // low order bit = 1 for read
- _init();
-}
-
-/** Optimised AddressBus write operation.
- * @param address the addressvalue to output on the bus
-*/
-void PCF8574_AddressBus::write(char address) {
- char data[1];
-
- data[0] = address;
- _i2c.write(_writeOpcode, data, 1); // Write addressvalue to bus
-}
-
-
-/** Init PCF8574_AddressBus
- * @param
- * @returns
- */
-void PCF8574_AddressBus::_init() {
-
- write(0x00);
-}
\ No newline at end of file
--- a/PCF8574_AddressBus.h Sun Jan 25 17:30:47 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/* PCF8574_AddressBus - Use the PCF8574 I2C Port Extender for controlling the Address Bus
- * Copyright (c) 2011 Wim Huiskamp
- *
- * Released under the MIT License: http://mbed.org/license/mit
- *
- * version 0.2 Initial Release
-*/
-#ifndef _PCF8574_ADDRESSBUS_H
-#define _PCF8574_ADDRESSBUS_H
-
-
-//Pin Defines for PCF8574 Address Bus
-#define D_A0 0x01
-#define D_A1 0x02
-#define D_A2 0x04
-#define D_A3 0x08
-#define D_A4 0x10
-#define D_A5 0x20
-#define D_A6 0x40
-#define D_A7 0x80
-
-#define D_ADDR_MSK 0x3F
-
-
-/** Create an PCF8574_AddressBus object connected to the specified I2C object and using the specified deviceAddress
- *
- * @param I2C &i2c the I2C port to connect to
- * @param char deviceAddress the address of the PCF8574
-*/
-class PCF8574_AddressBus {
-public:
- PCF8574_AddressBus(I2C &i2c, char deviceAddress);
- void write(char address);
-protected:
- I2C &_i2c;
- char _readOpcode;
- char _writeOpcode;
- void _init();
-};
-
-#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PCF8574_Bus.lib Sun Jan 25 17:52:55 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/wim/code/PCF8574_Bus/#12207c70f4ea
--- a/PCF8574_DataBus.cpp Sun Jan 25 17:30:47 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/* PCF8574_DataBus - Use the PCF8574 I2C Port Extender for controlling the Data Bus
- * Copyright (c) 2011 Wim Huiskamp
- *
- * Released under the MIT License: http://mbed.org/license/mit
- *
- * version 0.2 Initial Release
-*/
-#include "mbed.h"
-#include "PCF8574_DataBus.h"
-
-/** Create an PCF8574_DataBus object connected to the specified I2C object and using the specified deviceAddress
- *
- * @param I2C &i2c the I2C port to connect to
- * @param char deviceAddress the address of the PCF8574
-*/
-PCF8574_DataBus::PCF8574_DataBus(I2C &i2c, char deviceAddress) : _i2c(i2c) {
- _writeOpcode = deviceAddress & 0xFE; // low order bit = 0 for write
- _readOpcode = deviceAddress | 0x01; // low order bit = 1 for read
- _init();
-}
-
-/** Optimised DataBus write operation.
- * @param byte the datavalue to output on the bus
-*/
-void PCF8574_DataBus::write(char byte) {
- char data[1];
-
- data[0] = byte;
- _i2c.write(_writeOpcode, data, 1); // Write datavalue to bus
-}
-
-/** Optimised DataBus read operation.
- *
- * @returns current data from Databus
-*/
-char PCF8574_DataBus::read() {
- char data[1];
-
-//Make sure that databus is enabled for Read
-// data[0] = 0xFF; // Init Port for datainput by Writing 0xFF
-// _i2c.write(_writeOpcode, data, 1); // Write to bus
-
- _i2c.read(_readOpcode, data, 1); // Read data from bus
-
- return data[0];
-}
-
-
-/** Enable databus for Write or Read
- *
- * @param Bus_Dir bus_dir
-*/
-void PCF8574_DataBus::busdir (Bus_Dir bus_dir) {
-
- if (bus_dir == READ) {
- // Make sure that databus is enabled for READ
- write(0xFF); // Init Port as input by Writing 0xFF
-
- }
- else {
- // Make sure that databus is enabled for WRITE
- write(0xFF); // Not really needed, just Init Port to safe settings
- }
-}
-
-
-
-/** Init PCF8574_DataBus
- * @param
- * @returns
- */
-void PCF8574_DataBus::_init() {
-
- busdir(WRITE); // Init Port as output
-}
\ No newline at end of file
--- a/PCF8574_DataBus.h Sun Jan 25 17:30:47 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/* PCF8574_DataBus - Use the PCF8574 I2C Port Extender for controlling the Data Bus
- * Copyright (c) 2011 Wim Huiskamp
- *
- * Released under the MIT License: http://mbed.org/license/mit
- *
- * version 0.2 Initial Release
-*/
-#ifndef _PCF8574_DATABUS_H
-#define _PCF8574_DATABUS_H
-
-//Pin Defines for PCF8574 Data Bus
-#define D_D0 0x01
-#define D_D1 0x02
-#define D_D2 0x04
-#define D_D3 0x08
-#define D_D4 0x10
-#define D_D5 0x20
-#define D_D6 0x40
-#define D_D7 0x80
-
-#define D_DATA_MSK 0xFF
-
-//Enums for Data Bus
-#include "BusEnums.h"
-
-
-/** Create an PCF8574_DataBus object connected to the specified I2C object and using the specified deviceAddress
- *
- * @param I2C &i2c the I2C port to connect to
- * @param char deviceAddress the address of the PCF8574
-*/
-class PCF8574_DataBus {
-public:
- PCF8574_DataBus(I2C &i2c, char deviceAddress);
- char read();
- void write(char byte);
- void busdir (Bus_Dir bus_dir);
-protected:
- I2C &_i2c;
- char _readOpcode;
- char _writeOpcode;
- void _init();
-};
-
-#endif
\ No newline at end of file
--- a/PCF8574_EnableBus.cpp Sun Jan 25 17:30:47 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/* PCF8574_EnableBus - Use the PCF8574 I2C Port Extender for controlling the Chip Enable Bus
- * Copyright (c) 2011 Wim Huiskamp
- *
- * Released under the MIT License: http://mbed.org/license/mit
- *
- * version 0.2 Initial Release
-*/
-#include "mbed.h"
-#include "PCF8574_EnableBus.h"
-
-
-/** Create an PCF8574_EnableBus object connected to the specified I2C object and using the specified deviceAddress
- *
- * @param I2C &i2c the I2C port to connect to
- * @param char deviceAddress the address of the PCF8574
-*/
-PCF8574_EnableBus::PCF8574_EnableBus(I2C &i2c, char deviceAddress) : _i2c(i2c) {
- _writeOpcode = deviceAddress & 0xFE; // low order bit = 0 for write
- _readOpcode = deviceAddress | 0x01; // low order bit = 1 for read
- _init();
-}
-
-
-/** Set or Reset Chip Select pins on Enable Bus
- *
- * @param CS_Pin cs_pin
- * @param Bit_Level cs_level
-*/
-void PCF8574_EnableBus::chipselect (CS_Pin cs_pin, Bit_Level cs_level) {
- int result = 1;
-
- switch (cs_pin) {
- case CS_SWITCH : if (cs_level == LOW)
- _enable_bus = ~D_CS_SWITCH; // CS Pin Low, make sure that only one CS is active
- else
- _enable_bus |= D_CS_SWITCH; // CS Pin High
- break;
- case LATCHEN_1 : if (cs_level == LOW)
- _enable_bus = ~D_LATCHEN_1; // CS Pin Low, make sure that only one CS is active
- else
- _enable_bus |= D_LATCHEN_1; // CS Pin High
- break;
- case LATCHEN_2 : if (cs_level == LOW)
- _enable_bus = ~D_LATCHEN_2; // CS Pin Low, make sure that only one CS is active
- else
- _enable_bus |= D_LATCHEN_2; // CS Pin High
- break;
- case CS_BRIGHT : if (cs_level == LOW)
- _enable_bus = ~D_CS_BRIGHT; // CS Pin Low, make sure that only one CS is active
- else
- _enable_bus |= D_CS_BRIGHT; // CS Pin High
- break;
- case CS_DISP : if (cs_level == LOW)
- _enable_bus = ~D_CS_DISP; // CS Pin Low, make sure that only one CS is active
- else
- _enable_bus |= D_CS_DISP; // CS Pin High
- break;
-
- default: // Oops, we should never end up here....
- result = -1;
- }
-
- _write(); // Write chip enable bits to bus
-}
-
-/** Set or Clear the Reset pin on Enable Bus
- *
- * @param Bit_Level rst_level
-*/
-void PCF8574_EnableBus::reset (Bit_Level rst_level) {
-
- if (rst_level == LOW) {
- _reset_pin = 0x00; // Reset Pin Low
- }
- else {
- _reset_pin = D_RESET; // Reset Pin High
- }
-
- _write(); // Write RST bit to bus
-}
-
-
-/** Set or Clear the NoGo pin on Enable Bus
- *
- * @param Bit_Level nogo_level
-*/
-void PCF8574_EnableBus::nogo (Bit_Level nogo_level) {
-
- if (nogo_level == LOW) {
- _nogo_pin = 0x00; // NOGO Pin Low
- }
- else {
- _nogo_pin = D_NOGO; // NOGO Pin High
- }
-
- _write(); // Write NoGo bit to bus
-}
-
-
-/** Optimised EnableBus write operation.
- * @param byte the value to output on the bus
-*/
-void PCF8574_EnableBus::_write(char byte) {
- char data[1];
-
- data[0] = byte;
- _i2c.write(_writeOpcode, data, 1); // Write value to bus
-}
-
-/** Optimised EnableBus write operation.
- * @param
-*/
-void PCF8574_EnableBus::_write() {
- char data[1];
-
- data[0] = (_enable_bus & D_ENABLE_MSK) | _reset_pin | _nogo_pin; // Combine enable bits and control bits
- _i2c.write(_writeOpcode, data, 1); // Write value to bus
-}
-
-
-/** Init PCF8574_EnableBus
- * @param
- * @returns
- */
-void PCF8574_EnableBus::_init() {
- _enable_bus = 0xFF; // Make sure that all CS pins are disabled
- _reset_pin = D_RESET; // Make sure that Reset pin is disabled
- _nogo_pin = D_NOGO; // Make sure that NoGo pin is disabled
- _write(); // Write value to bus
-}
\ No newline at end of file
--- a/PCF8574_EnableBus.h Sun Jan 25 17:30:47 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/* PCF8574_EnableBus - Use the PCF8574 I2C Port Extender for controlling the Chip Enable Bus
- * Copyright (c) 2011 Wim Huiskamp
- *
- * Released under the MIT License: http://mbed.org/license/mit
- *
- * version 0.2 Initial Release
-*/
-#ifndef _PCF8574_ENABLEBUS_H
-#define _PCF8574_ENABLEBUS_H
-
-//Pin Defines for PCF8574 Enable Bus
-//Note: 'Reset' causes all devices on the 'Control & Display Unit' to be reset!
-#define D_CS_SWITCH 0x01
-#define D_LATCHEN_1 0x02
-#define D_LATCHEN_2 0x04
-#define D_CS_BRIGHT 0x08
-#define D_CS_DISP 0x10
-#define D_CS_SPARE 0x20
-#define D_RESET 0x40
-#define D_NOGO 0x80
-
-#define D_ENABLE_MSK 0x3F
-
-//Enums for Enable Bus
-#include "BusEnums.h"
-enum CS_Pin { CS_SWITCH, LATCHEN_1, LATCHEN_2, CS_BRIGHT, CS_DISP, CS_SPARE };
-
-
-/** Create an PCF8574_EnableBus object connected to the specified I2C object and using the specified deviceAddress
- *
- * @param I2C &i2c the I2C port to connect to
- * @param char deviceAddress the address of the PCF8574
-*/
-class PCF8574_EnableBus {
-public:
- PCF8574_EnableBus(I2C &i2c, char deviceAddress);
- void chipselect (CS_Pin cs_pin, Bit_Level cs_level);
- void reset (Bit_Level rst_level);
- void nogo (Bit_Level nogo_level);
-protected:
- I2C &_i2c;
- char _readOpcode;
- char _writeOpcode;
- char _enable_bus;
- char _reset_pin;
- char _nogo_pin;
-// char _read();
- void _write();
- void _write(char byte);
- void _init();
-};
-
-#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp.orig Sun Jan 25 17:52:55 2015 +0000
@@ -0,0 +1,363 @@
+/* mbed bus - Main
+ * Copyright (c) 2011 Wim Huiskamp
+ *
+ * Released under the MIT License: http://mbed.org/license/mit
+ *
+ * version 0.2 Initial Release
+*/
+#include "mbed.h"
+#include "BusDefines.h"
+#include "PCF8574_DataBus.h"
+#include "PCF8574_AddressBus.h"
+#include "PCF8574_EnableBus.h"
+#include "MBED_ControlBus.h"
+#include "HDSP253X.h"
+
+// Debug stuff
+#define __DEBUG
+#include "Dbg.h"
+
+// mbed Interface Hardware definitions
+DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut heartbeatLED(LED4);
+
+// Host PC Communication channels
+Serial pc(USBTX, USBRX);
+
+//I2C Bus
+I2C i2c(D_SDA, D_SCL);
+
+// Bus Interface Hardware definitions
+PCF8574_DataBus databus = PCF8574_DataBus(i2c, D_I2C_DATA_BUS); //Copy constructors..
+PCF8574_AddressBus addressbus = PCF8574_AddressBus(i2c, D_I2C_ADDR_BUS);
+PCF8574_EnableBus enablebus = PCF8574_EnableBus(i2c, D_I2C_ENA_BUS);
+MBED_ControlBus controlbus = MBED_ControlBus(D_WR, D_RD, D_DTR, D_CDBUF, D_CDINT);
+
+// Display Hardware definitions
+HDSP253X_Display LED_display = HDSP253X_Display(databus, addressbus, enablebus, controlbus);
+
+// Dummy delay
+#define DEVICE_WAIT_MS 0
+
+
+// Variables for Heartbeat and Status monitoring
+Ticker heartbeat;
+bool heartbeatflag=false;
+
+// Cycle Timer
+Timer cycletimer;
+int cyclecount = 0;
+const int maxcount = 10;
+
+// Local functions
+void clear_screen() {
+//ANSI Terminal Commands
+ pc.printf("\x1B[2J");
+ pc.printf("\x1B[H");
+}
+
+
+void init_interfaces() {
+// Init Host PC communication, default is 9600
+ pc.baud(D_BAUDRATE);
+
+// Init I/F hardware
+ i2c.frequency(100000);
+
+ //Done, Tell me about it
+ myled1 = 1;
+// DBG("Init Interfaces Done\r");
+}
+
+
+// Heartbeat monitor
+void pulse() {
+ heartbeatLED = !heartbeatLED;
+}
+
+void heartbeat_start() {
+ heartbeat.attach(&pulse, 0.5);
+ heartbeatflag = true;
+}
+
+void heartbeat_stop() {
+ heartbeat.detach();
+ heartbeatflag = false;
+}
+
+void show_LEDS () {
+ static int state = 0;
+
+ switch (state) {
+ case 0:
+ myled1 = 1;
+ myled2 = 0;
+ myled3 = 0;
+ state = 1;
+ break;
+ case 1:
+ myled1 = 0;
+ myled2 = 1;
+ myled3 = 0;
+ state = 2;
+ break;
+ case 2:
+ myled1 = 0;
+ myled2 = 0;
+ myled3 = 1;
+ state = 0;
+ break;
+ }
+}
+
+
+// The next two functions are examples of low-level reading and writing to a device that is connected on the mbed bus.
+// In your own application you can develop a Class for each specific slave device and include modified versions of the
+// functions below as 'private' functions. This allows you to hardcode the device CS_pin signals, define specific delays
+// when needed, change the sequence of CS, WR etc or mask out certain address or databits when they are not used in a certain case.
+//
+
+/*---------------------------------------------------------------------------*\
+ |
+ | Function: write
+ |
+ | Description: Low level data write routine for device. Takes in data
+ | and address and CS pin to identify the device and writes
+ | data to the display. For simplicity, entire address byte
+ | is written, even though top two bits are unused inputs.
+ | After performing the operation, address lines are set
+ | all high, in order to eliminate current drain through
+ | pullup resistors (0.5mA per pin with 10K pullups)
+ |
+ | Parameters: address - full address in bits 0-5
+ | device - enum CS_Pin for Chip Select pin
+ | data - data byte to write out
+ |
+ | Returns: Nothing.
+ |
+\*---------------------------------------------------------------------------*/
+
+void write(uint8_t address, CS_Pin device, uint8_t data)
+{
+// // Switch databus buffer to outputs (note: this is the default state)
+// controlbus.busdir(WRITE);
+// // Switch databus to outputs
+// databus.busdir(WRITE);
+
+
+ // Write out the address on to the addressbus and wait
+ addressbus.write(address);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Set CE low and wait
+ enablebus.chipselect(device, LOW);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Write data to the databus
+ databus.write(data);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Set WR low, wait, then set high and wait
+ controlbus.WR(LOW);
+ wait_ms(DEVICE_WAIT_MS);
+ controlbus.WR(HIGH);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Set CE high and wait
+ enablebus.chipselect(device, HIGH);
+ wait_ms(DEVICE_WAIT_MS);
+
+// // Switch databus back to inputs
+// databus.busdir(READ);
+// // Switch databus buffer back to inputs
+// controlbus.busdir(READ);
+
+// // Set address lines all high to minimise power through pullups
+// addressbus.write(0xFF);
+}
+
+/*---------------------------------------------------------------------------*\
+ |
+ | Function: read
+ |
+ | Description: Low level data read routine for a Device. Takes in
+ | address and CS pin to identify the device and then
+ | reads data from the device.
+ | After performing the operation, address lines are set
+ | all high, in order to eliminate current drain through
+ | pullup resistors (0.5mA per pin with 10K pullups)
+ |
+ | Parameters: address - 8 bit address
+ | device - enum CS_Pin for Chip Select pin
+ | Returns: data - data byte read
+ |
+\*---------------------------------------------------------------------------*/
+
+uint8_t read(uint8_t address, CS_Pin device)
+{
+ uint8_t data = 0;
+
+ // Switch databus to inputs (default state is output)
+ databus.busdir(READ);
+ // Switch databus buffer to inputs
+ controlbus.busdir(READ);
+
+ // Write out the address on to the addressbus and wait
+ addressbus.write(address);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Set CE low and wait
+ enablebus.chipselect(device, LOW);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Set RD low and wait
+ controlbus.RD(LOW);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Read the data byte from databus
+ data = databus.read();
+
+ // set RD high and wait
+ controlbus.RD(HIGH);
+ wait_ms(DEVICE_WAIT_MS);
+
+ // Set CE high and wait
+ enablebus.chipselect(device, HIGH);
+ wait_ms(DEVICE_WAIT_MS);
+
+// // Set address lines all high to minimise power through pullups
+// addressbus.write(0xFF);
+
+ // Switch databus buffer back to outputs
+ controlbus.busdir(WRITE);
+ // Switch databus to outputs
+ databus.busdir(WRITE);
+
+ // Return read data to caller
+ return data;
+}
+
+
+void HDSP_BITE() {
+ int count;
+
+ for (count=0; count<5; count++) {
+ LED_display.locate(0);
+ LED_display.printf("BITE - ");
+ wait(0.05);
+ LED_display.locate(0);
+ LED_display.printf("BITE \\ ");
+ wait(0.05);
+ LED_display.locate(0);
+ LED_display.printf("BITE | ");
+ wait(0.05);
+ LED_display.locate(0);
+ LED_display.printf("BITE / ");
+ wait(0.05);
+ LED_display.locate(0);
+ LED_display.printf("BITE - ");
+ wait(0.05);
+ };
+
+ LED_display.locate(0);
+ LED_display.printf("BITE OK");
+
+ LED_display.set_blink_mode(true);
+ wait(2.0);
+ LED_display.set_blink_mode(false);
+
+ LED_display.cls();
+
+ //Done, Tell me about it
+// DBG("BITE Done, Main, Step = %d\r", 30);
+}
+
+void HDSP_Init_UDC() {
+
+// batt empty
+ LED_display.define_user_char(0, 0x0E, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1F);
+// batt full
+ LED_display.define_user_char(1, 0x0E, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F);
+}
+
+
+void HDSP_Show_UDC() {
+
+ LED_display.locate(0);
+ LED_display.printf("Batt ");
+// LED_display.putc(HDSP253X_ASCII_UDC_CHARS + 0);
+// LED_display.putc(HDSP253X_ASCII_UDC_CHARS + 1);
+ LED_display.putudc(0);
+ LED_display.putudc(1);
+
+ wait(2.0);
+}
+
+int main() {
+ int address;
+ uint8_t dummy;
+
+ init_interfaces();
+
+ heartbeat_start();
+
+ clear_screen();
+
+ HDSP_Init_UDC();
+
+// DBG("Start Main Loop\r");
+
+//Testing stuff
+
+ //Test cycletime
+ cycletimer.start();
+ cycletimer.reset();
+
+
+#if (1)
+// Bus test
+ while (1) {
+ for (address=0; address<256; address++) {
+ //data = read(address, CS_SWITCH);
+
+ dummy = ~address;
+ write(address, LATCHEN_1, dummy);
+// wait(0.05);
+ }
+
+ // Just for Info, lets see how fast this cycle is...
+ cyclecount++;
+ if (cyclecount == maxcount) {
+ pc.printf("Freq = %d Hz\r", (cyclecount * 256 * 1000) / cycletimer.read_ms());
+ cyclecount = 0;
+ cycletimer.reset();
+ }
+
+ show_LEDS ();
+ }
+#else
+// LED Display test
+ while (1) {
+ HDSP_BITE();
+
+ cyclecount++;
+ if (cyclecount == 10) {
+ cyclecount = 0;
+// LED_display.printf ("Restart ");
+ HDSP_Show_UDC();
+ }
+ else {
+ LED_display.printf ("Cnt= %2d", cyclecount);
+ }
+ wait(2.0);
+ pc.printf (".");
+
+ show_LEDS ();
+ }
+
+#endif
+
+ //DBG("I'll be back...\r\r");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld.orig Sun Jan 25 17:52:55 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912 \ No newline at end of file
HDSP-253X Smart Alphanumeric Displays