The example program is LPC812MAXdemo board default program supplied by mbed.org

Dependencies:   mbed

Fork of mbed_blinky by Mbed

Committer:
okwh
Date:
Wed Nov 06 15:20:37 2013 +0000
Revision:
1:7620606cdb4e
Parent:
0:7dec7e9ac085
1st default program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan 0:7dec7e9ac085 1 #include "mbed.h"
dan 0:7dec7e9ac085 2
okwh 1:7620606cdb4e 3 DigitalOut ledRed(LED_RED);
okwh 1:7620606cdb4e 4 DigitalOut ledGreen(LED_GREEN);
okwh 1:7620606cdb4e 5 DigitalOut ledBlue(LED_BLUE);
okwh 1:7620606cdb4e 6
okwh 1:7620606cdb4e 7 int flashPattern = 0;
okwh 1:7620606cdb4e 8
okwh 1:7620606cdb4e 9 const unsigned char I2C_ADDR_PCF8591T = 0x9E;
okwh 1:7620606cdb4e 10 const unsigned char I2C_ADDR_PCA9672PW = 0x46;
okwh 1:7620606cdb4e 11
okwh 1:7620606cdb4e 12 const unsigned char LED_ON = 0;
okwh 1:7620606cdb4e 13 const unsigned char LED_OFF = 1;
okwh 1:7620606cdb4e 14 bool keyPressed;
okwh 1:7620606cdb4e 15 char response[1];
okwh 1:7620606cdb4e 16
okwh 1:7620606cdb4e 17 I2C m_i2c(P0_10, P0_11);
okwh 1:7620606cdb4e 18
okwh 1:7620606cdb4e 19 unsigned char i2c_wait(int ms)
okwh 1:7620606cdb4e 20 {
okwh 1:7620606cdb4e 21 for(int n=0; n<ms; n+=50) {
okwh 1:7620606cdb4e 22 //read PCA9672PW
okwh 1:7620606cdb4e 23 if (m_i2c.read(I2C_ADDR_PCA9672PW, response, 1) == 0) {
okwh 1:7620606cdb4e 24 //check if push-button pressed (bit #7 = 0)
okwh 1:7620606cdb4e 25 if ((keyPressed == false) && ((response[0] & 0x80) == 0))
okwh 1:7620606cdb4e 26 return 1;
okwh 1:7620606cdb4e 27 } else {
okwh 1:7620606cdb4e 28 //error reading from I2C device
okwh 1:7620606cdb4e 29 while(1) {
okwh 1:7620606cdb4e 30 for(int i=0; i<10; i++) {
okwh 1:7620606cdb4e 31 ledBlue = LED_ON;
okwh 1:7620606cdb4e 32 wait(0.05);
okwh 1:7620606cdb4e 33 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 34 wait(0.05);
okwh 1:7620606cdb4e 35 }
okwh 1:7620606cdb4e 36 wait(1.0);
okwh 1:7620606cdb4e 37 }
okwh 1:7620606cdb4e 38 }
okwh 1:7620606cdb4e 39 wait(0.05);
okwh 1:7620606cdb4e 40 }
okwh 1:7620606cdb4e 41 return 0;
okwh 1:7620606cdb4e 42 }
dan 0:7dec7e9ac085 43
okwh 1:7620606cdb4e 44 int main()
okwh 1:7620606cdb4e 45 {
okwh 1:7620606cdb4e 46 //init RGB-LED to be off
okwh 1:7620606cdb4e 47 ledRed = LED_OFF;
okwh 1:7620606cdb4e 48 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 49 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 50
okwh 1:7620606cdb4e 51 //test i2C connection with PCF8591T (1.0.0.1.1.1.1.rw)
okwh 1:7620606cdb4e 52 const char command1[] = {0x00};
okwh 1:7620606cdb4e 53 if (m_i2c.write(I2C_ADDR_PCF8591T, command1, 1) != 0) {
okwh 1:7620606cdb4e 54 while(1) {
okwh 1:7620606cdb4e 55 for(int i=0; i<10; i++) {
okwh 1:7620606cdb4e 56 ledRed = LED_ON;
okwh 1:7620606cdb4e 57 wait(0.05);
okwh 1:7620606cdb4e 58 ledRed = LED_OFF;
okwh 1:7620606cdb4e 59 wait(0.05);
okwh 1:7620606cdb4e 60 }
okwh 1:7620606cdb4e 61 wait(1.0);
okwh 1:7620606cdb4e 62 }
okwh 1:7620606cdb4e 63 }
okwh 1:7620606cdb4e 64
okwh 1:7620606cdb4e 65 //test i2C connection with PCA9672PW (0.1.0.0.0.1.1.rw)
okwh 1:7620606cdb4e 66 const char command2[] = {0xff};
okwh 1:7620606cdb4e 67 if (m_i2c.write(I2C_ADDR_PCA9672PW, command2, 1) != 0) {
okwh 1:7620606cdb4e 68 while(1) {
okwh 1:7620606cdb4e 69 for(int i=0; i<10; i++) {
okwh 1:7620606cdb4e 70 ledBlue = LED_ON;
okwh 1:7620606cdb4e 71 wait(0.05);
okwh 1:7620606cdb4e 72 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 73 wait(0.05);
okwh 1:7620606cdb4e 74 }
okwh 1:7620606cdb4e 75 wait(1.0);
okwh 1:7620606cdb4e 76 }
okwh 1:7620606cdb4e 77 }
okwh 1:7620606cdb4e 78
okwh 1:7620606cdb4e 79 //startup flash behaviour
okwh 1:7620606cdb4e 80 for(int i=0; i<10; i++) {
okwh 1:7620606cdb4e 81 ledGreen = LED_ON;
okwh 1:7620606cdb4e 82 wait(0.05);
okwh 1:7620606cdb4e 83 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 84 wait(0.05);
okwh 1:7620606cdb4e 85 }
okwh 1:7620606cdb4e 86 wait(1.0);
okwh 1:7620606cdb4e 87
okwh 1:7620606cdb4e 88 //enter forever loop, change RGB flash patterns with user push-button
okwh 1:7620606cdb4e 89 keyPressed = false;
okwh 1:7620606cdb4e 90 i2c_wait(1);
dan 0:7dec7e9ac085 91 while(1) {
okwh 1:7620606cdb4e 92 //read user push-button
okwh 1:7620606cdb4e 93 #if 1
okwh 1:7620606cdb4e 94 i2c_wait(1);
okwh 1:7620606cdb4e 95 //check if push-button pressed (bit #7 = 0)
okwh 1:7620606cdb4e 96 if ((keyPressed == false) && ((response[0] & 0x80) == 0)) {
okwh 1:7620606cdb4e 97 keyPressed = true;
okwh 1:7620606cdb4e 98 flashPattern++;
okwh 1:7620606cdb4e 99 }
okwh 1:7620606cdb4e 100
okwh 1:7620606cdb4e 101 //check if push-button released (bit #7 = 1)
okwh 1:7620606cdb4e 102 else if ((keyPressed == true) && ((response[0] & 0x80) != 0))
okwh 1:7620606cdb4e 103 keyPressed = false;
okwh 1:7620606cdb4e 104 #else
okwh 1:7620606cdb4e 105 if (m_i2c.read(I2C_ADDR_PCA9672PW, response, 1) == 0) {
okwh 1:7620606cdb4e 106 //check if push-button pressed (bit #7 = 0)
okwh 1:7620606cdb4e 107 if ((keyPressed == false) && ((response[0] & 0x80) == 0)) {
okwh 1:7620606cdb4e 108 keyPressed = true;
okwh 1:7620606cdb4e 109 flashPattern++;
okwh 1:7620606cdb4e 110 ledRed = LED_OFF;
okwh 1:7620606cdb4e 111 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 112 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 113 }
okwh 1:7620606cdb4e 114
okwh 1:7620606cdb4e 115 //check if push-button released (bit #7 = 1)
okwh 1:7620606cdb4e 116 else if ((keyPressed == true) && ((response[0] & 0x80) != 0))
okwh 1:7620606cdb4e 117 keyPressed = false;
okwh 1:7620606cdb4e 118 }
okwh 1:7620606cdb4e 119 //error reading from I2C device
okwh 1:7620606cdb4e 120 else {
okwh 1:7620606cdb4e 121 while(1) {
okwh 1:7620606cdb4e 122 for(int i=0; i<10; i++) {
okwh 1:7620606cdb4e 123 ledBlue = LED_ON;
okwh 1:7620606cdb4e 124 wait(0.05);
okwh 1:7620606cdb4e 125 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 126 wait(0.05);
okwh 1:7620606cdb4e 127 }
okwh 1:7620606cdb4e 128 wait(1.0);
okwh 1:7620606cdb4e 129 }
okwh 1:7620606cdb4e 130 }
okwh 1:7620606cdb4e 131 #endif
okwh 1:7620606cdb4e 132 //flash RGB-LED according to pattern
okwh 1:7620606cdb4e 133 switch(flashPattern) {
okwh 1:7620606cdb4e 134 case 0:
okwh 1:7620606cdb4e 135 ledRed = LED_ON;
okwh 1:7620606cdb4e 136 if (i2c_wait(80) != 0) break;
okwh 1:7620606cdb4e 137 ledRed = LED_OFF;
okwh 1:7620606cdb4e 138 if (i2c_wait(500) != 0) break;
okwh 1:7620606cdb4e 139
okwh 1:7620606cdb4e 140 ledGreen = LED_ON;
okwh 1:7620606cdb4e 141 if (i2c_wait(15) != 0) break;
okwh 1:7620606cdb4e 142 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 143 if (i2c_wait(550) != 0) break;
okwh 1:7620606cdb4e 144
okwh 1:7620606cdb4e 145 ledBlue = LED_ON;
okwh 1:7620606cdb4e 146 if (i2c_wait(80) != 0) break;
okwh 1:7620606cdb4e 147 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 148 if (i2c_wait(500) != 0) break;
okwh 1:7620606cdb4e 149 break;
okwh 1:7620606cdb4e 150 case 1:
okwh 1:7620606cdb4e 151 for(float a=0; a<0.01; a+=0.0004) {
okwh 1:7620606cdb4e 152 ledGreen = LED_ON;
okwh 1:7620606cdb4e 153 wait(a/2);
okwh 1:7620606cdb4e 154 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 155 wait(0.01-a);
okwh 1:7620606cdb4e 156 }
okwh 1:7620606cdb4e 157 ledGreen = LED_ON;
okwh 1:7620606cdb4e 158 if (i2c_wait(1) != 0) break;
okwh 1:7620606cdb4e 159 for(float a=0.01; a>0.0; a-=0.0002) {
okwh 1:7620606cdb4e 160 ledGreen = LED_ON;
okwh 1:7620606cdb4e 161 wait(a/2);
okwh 1:7620606cdb4e 162 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 163 wait(0.01-a);
okwh 1:7620606cdb4e 164 }
okwh 1:7620606cdb4e 165 if (i2c_wait(400) != 0) break;
okwh 1:7620606cdb4e 166 break;
okwh 1:7620606cdb4e 167 case 2:
okwh 1:7620606cdb4e 168 ledRed = LED_ON;
okwh 1:7620606cdb4e 169 if (i2c_wait(150) != 0) break;
okwh 1:7620606cdb4e 170 ledRed = LED_OFF;
okwh 1:7620606cdb4e 171 if (i2c_wait(150) != 0) break;
okwh 1:7620606cdb4e 172
okwh 1:7620606cdb4e 173 ledGreen = LED_ON;
okwh 1:7620606cdb4e 174 if (i2c_wait(100) != 0) break;
okwh 1:7620606cdb4e 175 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 176
okwh 1:7620606cdb4e 177 ledBlue = LED_ON;
okwh 1:7620606cdb4e 178 if (i2c_wait(150) != 0) break;
okwh 1:7620606cdb4e 179 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 180 break;
okwh 1:7620606cdb4e 181 case 3:
okwh 1:7620606cdb4e 182 ledRed = LED_ON;
okwh 1:7620606cdb4e 183 ledGreen = LED_ON;
okwh 1:7620606cdb4e 184 ledBlue = LED_ON;
okwh 1:7620606cdb4e 185 if (i2c_wait(10) != 0) break;
okwh 1:7620606cdb4e 186
okwh 1:7620606cdb4e 187 ledGreen = LED_OFF;
okwh 1:7620606cdb4e 188 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 189 ledRed = LED_OFF;
okwh 1:7620606cdb4e 190 if (i2c_wait(500) != 0) break;
okwh 1:7620606cdb4e 191 break;
okwh 1:7620606cdb4e 192 case 4:
okwh 1:7620606cdb4e 193 for(float a=0; a<0.01; a+=0.0008) {
okwh 1:7620606cdb4e 194 ledRed = LED_ON;
okwh 1:7620606cdb4e 195 wait(a);
okwh 1:7620606cdb4e 196 ledRed = LED_OFF;
okwh 1:7620606cdb4e 197 wait(0.01-a);
okwh 1:7620606cdb4e 198 }
okwh 1:7620606cdb4e 199 ledRed = LED_ON;
okwh 1:7620606cdb4e 200 if (i2c_wait(1) != 0) break;
okwh 1:7620606cdb4e 201 for(float a=0; a<0.01; a+=0.0008) {
okwh 1:7620606cdb4e 202 ledBlue = LED_ON;
okwh 1:7620606cdb4e 203 wait(a);
okwh 1:7620606cdb4e 204 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 205 wait(0.01-a);
okwh 1:7620606cdb4e 206 }
okwh 1:7620606cdb4e 207 ledBlue = LED_ON;
okwh 1:7620606cdb4e 208 if (i2c_wait(1) != 0) break;
okwh 1:7620606cdb4e 209 for(float a=0.01; a>0.0; a-=0.0008) {
okwh 1:7620606cdb4e 210 ledRed = LED_ON;
okwh 1:7620606cdb4e 211 wait(a);
okwh 1:7620606cdb4e 212 ledRed = LED_OFF;
okwh 1:7620606cdb4e 213 wait(0.01-a);
okwh 1:7620606cdb4e 214 }
okwh 1:7620606cdb4e 215 if (i2c_wait(1) != 0) break;
okwh 1:7620606cdb4e 216 for(float a=0.01; a>0.0; a-=0.0008) {
okwh 1:7620606cdb4e 217 ledBlue = LED_ON;
okwh 1:7620606cdb4e 218 wait(a);
okwh 1:7620606cdb4e 219 ledBlue = LED_OFF;
okwh 1:7620606cdb4e 220 wait(0.01-a);
okwh 1:7620606cdb4e 221 }
okwh 1:7620606cdb4e 222 if (i2c_wait(200) != 0) break;
okwh 1:7620606cdb4e 223 break;
okwh 1:7620606cdb4e 224 default:
okwh 1:7620606cdb4e 225 flashPattern = 0;
okwh 1:7620606cdb4e 226 break;
okwh 1:7620606cdb4e 227 }
dan 0:7dec7e9ac085 228 }
dan 0:7dec7e9ac085 229 }
okwh 1:7620606cdb4e 230
okwh 1:7620606cdb4e 231 #if 0
okwh 1:7620606cdb4e 232 //https://github.com/mbedmicro/mbed/tree/master/libraries/mbed/vendor/NXP/capi/LPC812
okwh 1:7620606cdb4e 233 P0_0 = 0,
okwh 1:7620606cdb4e 234 P0_1 = 1,
okwh 1:7620606cdb4e 235 P0_2 = 2,
okwh 1:7620606cdb4e 236 P0_3 = 3,
okwh 1:7620606cdb4e 237 P0_4 = 4,
okwh 1:7620606cdb4e 238 P0_5 = 5,
okwh 1:7620606cdb4e 239 P0_6 = 6,
okwh 1:7620606cdb4e 240 P0_7 = 7,
okwh 1:7620606cdb4e 241 P0_8 = 8,
okwh 1:7620606cdb4e 242 P0_9 = 9,
okwh 1:7620606cdb4e 243 P0_10 = 10, //SDA
okwh 1:7620606cdb4e 244 P0_11 = 11, //SCL
okwh 1:7620606cdb4e 245 P0_12 = 12,
okwh 1:7620606cdb4e 246 P0_13 = 13,
okwh 1:7620606cdb4e 247 P0_14 = 14,
okwh 1:7620606cdb4e 248 P0_15 = 15,
okwh 1:7620606cdb4e 249 P0_16 = 16,
okwh 1:7620606cdb4e 250 P0_17 = 17,
okwh 1:7620606cdb4e 251
okwh 1:7620606cdb4e 252 D0 = P0_0,
okwh 1:7620606cdb4e 253 D1 = P0_4,
okwh 1:7620606cdb4e 254 D2 = P0_6,
okwh 1:7620606cdb4e 255 D3 = P0_8,
okwh 1:7620606cdb4e 256 D4 = P0_9,
okwh 1:7620606cdb4e 257
okwh 1:7620606cdb4e 258 D7 = P0_7,
okwh 1:7620606cdb4e 259 D8 = P0_17,
okwh 1:7620606cdb4e 260 D9 = P0_16,
okwh 1:7620606cdb4e 261 D10 = P0_13,
okwh 1:7620606cdb4e 262 D11 = P0_14,
okwh 1:7620606cdb4e 263 D12 = P0_15,
okwh 1:7620606cdb4e 264 D13 = P0_12,
okwh 1:7620606cdb4e 265
okwh 1:7620606cdb4e 266 A4 = P0_10,
okwh 1:7620606cdb4e 267 A5 = P0_11,
okwh 1:7620606cdb4e 268
okwh 1:7620606cdb4e 269 // LPC800-MAX board
okwh 1:7620606cdb4e 270 LED_RED = P0_7,
okwh 1:7620606cdb4e 271 LED_GREEN = P0_17,
okwh 1:7620606cdb4e 272 LED_BLUE = P0_16,
okwh 1:7620606cdb4e 273
okwh 1:7620606cdb4e 274 // mbed original LED naming
okwh 1:7620606cdb4e 275 LED1 = LED_BLUE,
okwh 1:7620606cdb4e 276 LED2 = LED_GREEN,
okwh 1:7620606cdb4e 277 LED3 = LED_RED,
okwh 1:7620606cdb4e 278 LED4 = LED_RED,
okwh 1:7620606cdb4e 279
okwh 1:7620606cdb4e 280 // Serial to USB pins
okwh 1:7620606cdb4e 281 USBTX = P0_6,
okwh 1:7620606cdb4e 282 USBRX = P0_1,
okwh 1:7620606cdb4e 283 #endif