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.
main.cpp@3:da30c350c339, 2014-05-02 (annotated)
- Committer:
- sNICKer1103
- Date:
- Fri May 02 18:26:40 2014 +0000
- Revision:
- 3:da30c350c339
- Parent:
- 2:f2700008c9d9
- Child:
- 4:a091b8f8216d
Refactoring part 2
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| sNICKer1103 | 0:333c9abcd919 | 1 | #include "mbed.h" |
| sNICKer1103 | 2:f2700008c9d9 | 2 | #include "I2CDriver.h" |
| sNICKer1103 | 2:f2700008c9d9 | 3 | #include "SPIDriver.h" |
| sNICKer1103 | 2:f2700008c9d9 | 4 | #include "LedCube.h" |
| sNICKer1103 | 3:da30c350c339 | 5 | #include "rtos.h" |
| sNICKer1103 | 0:333c9abcd919 | 6 | |
| sNICKer1103 | 3:da30c350c339 | 7 | int counter1 = 0; |
| sNICKer1103 | 3:da30c350c339 | 8 | int counter2 = 0; |
| sNICKer1103 | 3:da30c350c339 | 9 | int counter3 = 0; |
| sNICKer1103 | 3:da30c350c339 | 10 | char ledbuffer[8][8][8]; |
| sNICKer1103 | 3:da30c350c339 | 11 | const int frames = 400; |
| sNICKer1103 | 0:333c9abcd919 | 12 | bool printed = false; |
| sNICKer1103 | 1:53b8c6b13010 | 13 | bool testprinted = false; |
| sNICKer1103 | 0:333c9abcd919 | 14 | char layer = 1; |
| sNICKer1103 | 0:333c9abcd919 | 15 | bool first = true; |
| sNICKer1103 | 0:333c9abcd919 | 16 | int success = 1; |
| sNICKer1103 | 2:f2700008c9d9 | 17 | char databuffer[512]; |
| sNICKer1103 | 2:f2700008c9d9 | 18 | const int spifreq = 10000000; //frequency of SPI interface |
| sNICKer1103 | 2:f2700008c9d9 | 19 | const char address = 0xA0; //address van I2C interface |
| sNICKer1103 | 0:333c9abcd919 | 20 | |
| sNICKer1103 | 3:da30c350c339 | 21 | LedCube* ledcube = new LedCube(); |
| sNICKer1103 | 3:da30c350c339 | 22 | SPIDriver* spidriver = new SPIDriver(p5, NC, p7, p8, p10, spifreq); |
| sNICKer1103 | 3:da30c350c339 | 23 | I2CDriver* i2cdriver = new I2CDriver(p28, p27, address); |
| sNICKer1103 | 0:333c9abcd919 | 24 | //DigitalOut blank(p9); |
| sNICKer1103 | 0:333c9abcd919 | 25 | Serial pc(USBTX, USBRX); |
| sNICKer1103 | 0:333c9abcd919 | 26 | |
| sNICKer1103 | 0:333c9abcd919 | 27 | uint8_t reverse_byte(uint8_t byte); |
| sNICKer1103 | 3:da30c350c339 | 28 | void initialtest1(); |
| sNICKer1103 | 3:da30c350c339 | 29 | void initialtest2(); |
| sNICKer1103 | 1:53b8c6b13010 | 30 | void sendbuffer(); |
| sNICKer1103 | 1:53b8c6b13010 | 31 | void modifybuffer(); |
| sNICKer1103 | 3:da30c350c339 | 32 | void streamthread(const void* args); |
| sNICKer1103 | 0:333c9abcd919 | 33 | |
| sNICKer1103 | 0:333c9abcd919 | 34 | int main() |
| sNICKer1103 | 0:333c9abcd919 | 35 | { |
| sNICKer1103 | 3:da30c350c339 | 36 | spidriver->testPhase(frames); |
| sNICKer1103 | 3:da30c350c339 | 37 | |
| sNICKer1103 | 3:da30c350c339 | 38 | |
| sNICKer1103 | 3:da30c350c339 | 39 | Thread thread(streamthread); |
| sNICKer1103 | 3:da30c350c339 | 40 | /*while(true) { |
| sNICKer1103 | 2:f2700008c9d9 | 41 | if (i2cdriver->receive() == I2CDriver::WriteAddressed) { |
| sNICKer1103 | 1:53b8c6b13010 | 42 | pc.printf("Waarde ontvangen!\n\r"); |
| sNICKer1103 | 1:53b8c6b13010 | 43 | modifybuffer(); |
| sNICKer1103 | 1:53b8c6b13010 | 44 | printed = false; |
| sNICKer1103 | 0:333c9abcd919 | 45 | } |
| sNICKer1103 | 3:da30c350c339 | 46 | spidriver->sendFrame(ledcube); |
| sNICKer1103 | 3:da30c350c339 | 47 | }//while loop*/ |
| sNICKer1103 | 0:333c9abcd919 | 48 | }//end main |
| sNICKer1103 | 0:333c9abcd919 | 49 | |
| sNICKer1103 | 3:da30c350c339 | 50 | void streamthread(const void* args){ |
| sNICKer1103 | 3:da30c350c339 | 51 | spidriver->stream(ledcube); |
| sNICKer1103 | 1:53b8c6b13010 | 52 | } |
| sNICKer1103 | 1:53b8c6b13010 | 53 | |
| sNICKer1103 | 1:53b8c6b13010 | 54 | void modifybuffer() |
| sNICKer1103 | 1:53b8c6b13010 | 55 | { |
| sNICKer1103 | 2:f2700008c9d9 | 56 | unsigned char ledcolor; |
| sNICKer1103 | 1:53b8c6b13010 | 57 | while(!((counter1 == 8) && (counter2 == 0) && (counter3 == 1))) { |
| sNICKer1103 | 2:f2700008c9d9 | 58 | ledcolor = i2cdriver->read(); |
| sNICKer1103 | 1:53b8c6b13010 | 59 | if (ledcolor == 8) { |
| sNICKer1103 | 1:53b8c6b13010 | 60 | counter1 = 0; |
| sNICKer1103 | 1:53b8c6b13010 | 61 | counter2 = 0; |
| sNICKer1103 | 1:53b8c6b13010 | 62 | counter3 = 0; |
| sNICKer1103 | 1:53b8c6b13010 | 63 | } else { |
| sNICKer1103 | 1:53b8c6b13010 | 64 | if (ledcolor == 9) { |
| sNICKer1103 | 2:f2700008c9d9 | 65 | ledcube->setData(databuffer); |
| sNICKer1103 | 1:53b8c6b13010 | 66 | break; |
| sNICKer1103 | 1:53b8c6b13010 | 67 | } else { |
| sNICKer1103 | 1:53b8c6b13010 | 68 | ledbuffer[counter1][counter2][counter3] = ledcolor; |
| sNICKer1103 | 1:53b8c6b13010 | 69 | |
| sNICKer1103 | 1:53b8c6b13010 | 70 | if (counter3 < 7) { |
| sNICKer1103 | 1:53b8c6b13010 | 71 | counter3++; |
| sNICKer1103 | 1:53b8c6b13010 | 72 | } else { |
| sNICKer1103 | 1:53b8c6b13010 | 73 | if (counter2 < 7) { |
| sNICKer1103 | 1:53b8c6b13010 | 74 | counter2++; |
| sNICKer1103 | 1:53b8c6b13010 | 75 | counter3 = 0; |
| sNICKer1103 | 1:53b8c6b13010 | 76 | } else { |
| sNICKer1103 | 1:53b8c6b13010 | 77 | if (counter1 < 7) { |
| sNICKer1103 | 1:53b8c6b13010 | 78 | counter1++; |
| sNICKer1103 | 1:53b8c6b13010 | 79 | counter2 = 0; |
| sNICKer1103 | 1:53b8c6b13010 | 80 | counter3 = 0; |
| sNICKer1103 | 1:53b8c6b13010 | 81 | } |
| sNICKer1103 | 1:53b8c6b13010 | 82 | } |
| sNICKer1103 | 1:53b8c6b13010 | 83 | } |
| sNICKer1103 | 1:53b8c6b13010 | 84 | } |
| sNICKer1103 | 1:53b8c6b13010 | 85 | } |
| sNICKer1103 | 1:53b8c6b13010 | 86 | } |
| sNICKer1103 | 0:333c9abcd919 | 87 | } |