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: mbed
src/clocks.cpp@1:bc3509459a27, 2022-12-06 (annotated)
- Committer:
- Slord2142
- Date:
- Tue Dec 06 18:47:01 2022 +0000
- Revision:
- 1:bc3509459a27
- Parent:
- 0:b3410a1e9843
Helix commit 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Slord2142 | 0:b3410a1e9843 | 1 | //------------------------------------------------------------------------------- |
Slord2142 | 0:b3410a1e9843 | 2 | // |
Slord2142 | 0:b3410a1e9843 | 3 | // Treehouse Inc. |
Slord2142 | 0:b3410a1e9843 | 4 | // Colorado Springs, Colorado |
Slord2142 | 0:b3410a1e9843 | 5 | // |
Slord2142 | 0:b3410a1e9843 | 6 | // Copyright (c) 2016 by Treehouse Designs Inc. |
Slord2142 | 0:b3410a1e9843 | 7 | // |
Slord2142 | 0:b3410a1e9843 | 8 | // This code is the property of Treehouse, Inc. (Treehouse) and may not be redistributed |
Slord2142 | 0:b3410a1e9843 | 9 | // in any form without prior written permission from the copyright holder, Treehouse. |
Slord2142 | 0:b3410a1e9843 | 10 | // |
Slord2142 | 0:b3410a1e9843 | 11 | // The above copyright notice and this permission notice shall be included in |
Slord2142 | 0:b3410a1e9843 | 12 | // all copies or substantial portions of the Software. |
Slord2142 | 0:b3410a1e9843 | 13 | // |
Slord2142 | 0:b3410a1e9843 | 14 | //------------------------------------------------------------------------------- |
Slord2142 | 0:b3410a1e9843 | 15 | // |
Slord2142 | 0:b3410a1e9843 | 16 | // REVISION HISTORY: |
Slord2142 | 0:b3410a1e9843 | 17 | // |
Slord2142 | 0:b3410a1e9843 | 18 | // $Author: $ |
Slord2142 | 0:b3410a1e9843 | 19 | // $Rev: $ |
Slord2142 | 0:b3410a1e9843 | 20 | // $Date: $ |
Slord2142 | 0:b3410a1e9843 | 21 | // $URL: $ |
Slord2142 | 0:b3410a1e9843 | 22 | // |
Slord2142 | 0:b3410a1e9843 | 23 | //------------------------------------------------------------------------------- |
Slord2142 | 0:b3410a1e9843 | 24 | |
Slord2142 | 0:b3410a1e9843 | 25 | #include "mbed.h" |
Slord2142 | 0:b3410a1e9843 | 26 | #include "clocks.h" |
Slord2142 | 0:b3410a1e9843 | 27 | #include "globals.h" |
Slord2142 | 0:b3410a1e9843 | 28 | #include "Ticker.h" |
Slord2142 | 0:b3410a1e9843 | 29 | #include "stdlib.h" |
Slord2142 | 0:b3410a1e9843 | 30 | #include "all_io.h" |
Slord2142 | 0:b3410a1e9843 | 31 | //#include "menu.h" |
Slord2142 | 0:b3410a1e9843 | 32 | unsigned short i; |
Slord2142 | 1:bc3509459a27 | 33 | unsigned int numOn; |
Slord2142 | 0:b3410a1e9843 | 34 | |
Slord2142 | 0:b3410a1e9843 | 35 | int enkey[6] = {2, 1, 1, 1, 1, 1}; |
Slord2142 | 0:b3410a1e9843 | 36 | |
Slord2142 | 0:b3410a1e9843 | 37 | volatile bool dosFlip = FALSE; |
Slord2142 | 0:b3410a1e9843 | 38 | volatile bool dofFlip = FALSE; |
Slord2142 | 0:b3410a1e9843 | 39 | volatile bool enable = FALSE; |
Slord2142 | 0:b3410a1e9843 | 40 | volatile bool stepForward = FALSE; |
Slord2142 | 0:b3410a1e9843 | 41 | |
Slord2142 | 0:b3410a1e9843 | 42 | void slowFlip() { |
Slord2142 | 0:b3410a1e9843 | 43 | dosFlip = TRUE; |
Slord2142 | 0:b3410a1e9843 | 44 | } |
Slord2142 | 0:b3410a1e9843 | 45 | |
Slord2142 | 0:b3410a1e9843 | 46 | void fastFlip() { |
Slord2142 | 0:b3410a1e9843 | 47 | dofFlip = TRUE; |
Slord2142 | 0:b3410a1e9843 | 48 | } |
Slord2142 | 0:b3410a1e9843 | 49 | |
Slord2142 | 0:b3410a1e9843 | 50 | void initOut(void){ |
Slord2142 | 0:b3410a1e9843 | 51 | /* |
Slord2142 | 0:b3410a1e9843 | 52 | en1 = 1; |
Slord2142 | 0:b3410a1e9843 | 53 | en2 = 1; |
Slord2142 | 0:b3410a1e9843 | 54 | en4 = 1; |
Slord2142 | 0:b3410a1e9843 | 55 | en8 = 1; |
Slord2142 | 0:b3410a1e9843 | 56 | en16 = 1; |
Slord2142 | 0:b3410a1e9843 | 57 | en32 = 1;*/ |
Slord2142 | 1:bc3509459a27 | 58 | for(i = 0; i < 5; i++){ |
Slord2142 | 0:b3410a1e9843 | 59 | en[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 60 | } |
Slord2142 | 1:bc3509459a27 | 61 | en[5] = 0; |
Slord2142 | 0:b3410a1e9843 | 62 | } |
Slord2142 | 0:b3410a1e9843 | 63 | /* |
Slord2142 | 0:b3410a1e9843 | 64 | void flipSlow(void){ |
Slord2142 | 0:b3410a1e9843 | 65 | dosFlip = FALSE; |
Slord2142 | 0:b3410a1e9843 | 66 | if(enable != TRUE){ |
Slord2142 | 0:b3410a1e9843 | 67 | //for (i = numFast; i < 36; i++){ |
Slord2142 | 0:b3410a1e9843 | 68 | // if (ec[i] == 1){ |
Slord2142 | 0:b3410a1e9843 | 69 | // ec[i] = 0; |
Slord2142 | 0:b3410a1e9843 | 70 | // }else{ |
Slord2142 | 0:b3410a1e9843 | 71 | // ec[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 72 | // } |
Slord2142 | 0:b3410a1e9843 | 73 | //} |
Slord2142 | 0:b3410a1e9843 | 74 | for (i = 0; i < 6; i++){ |
Slord2142 | 0:b3410a1e9843 | 75 | if (enkey[i] != 1){ |
Slord2142 | 0:b3410a1e9843 | 76 | if (en[i] == 1){ |
Slord2142 | 0:b3410a1e9843 | 77 | en[i] = 0; |
Slord2142 | 0:b3410a1e9843 | 78 | }else{ |
Slord2142 | 0:b3410a1e9843 | 79 | en[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 80 | } |
Slord2142 | 0:b3410a1e9843 | 81 | } |
Slord2142 | 0:b3410a1e9843 | 82 | } |
Slord2142 | 0:b3410a1e9843 | 83 | } |
Slord2142 | 0:b3410a1e9843 | 84 | } |
Slord2142 | 0:b3410a1e9843 | 85 | |
Slord2142 | 0:b3410a1e9843 | 86 | void flipFast(void){ |
Slord2142 | 0:b3410a1e9843 | 87 | dofFlip = FALSE; |
Slord2142 | 0:b3410a1e9843 | 88 | if(enable == TRUE){ |
Slord2142 | 0:b3410a1e9843 | 89 | for (i = 0; i < 6; i++){ |
Slord2142 | 0:b3410a1e9843 | 90 | if (en[i] == 1){ |
Slord2142 | 0:b3410a1e9843 | 91 | en[i] = 0; |
Slord2142 | 0:b3410a1e9843 | 92 | }else{ |
Slord2142 | 0:b3410a1e9843 | 93 | en[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 94 | } |
Slord2142 | 0:b3410a1e9843 | 95 | } |
Slord2142 | 0:b3410a1e9843 | 96 | }else{ |
Slord2142 | 0:b3410a1e9843 | 97 | for (i = 0; i < 6; i++){ |
Slord2142 | 0:b3410a1e9843 | 98 | if (enkey[i] == 1){ |
Slord2142 | 0:b3410a1e9843 | 99 | if (en[i] == 1){ |
Slord2142 | 0:b3410a1e9843 | 100 | en[i] = 0; |
Slord2142 | 0:b3410a1e9843 | 101 | }else{ |
Slord2142 | 0:b3410a1e9843 | 102 | en[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 103 | } |
Slord2142 | 0:b3410a1e9843 | 104 | } |
Slord2142 | 0:b3410a1e9843 | 105 | } |
Slord2142 | 0:b3410a1e9843 | 106 | } |
Slord2142 | 0:b3410a1e9843 | 107 | } |
Slord2142 | 0:b3410a1e9843 | 108 | |
Slord2142 | 0:b3410a1e9843 | 109 | void checkFlip(void){ |
Slord2142 | 0:b3410a1e9843 | 110 | if(dosFlip == TRUE){ |
Slord2142 | 0:b3410a1e9843 | 111 | flipSlow(); |
Slord2142 | 0:b3410a1e9843 | 112 | } |
Slord2142 | 0:b3410a1e9843 | 113 | if(dofFlip == TRUE){ |
Slord2142 | 0:b3410a1e9843 | 114 | flipFast(); |
Slord2142 | 0:b3410a1e9843 | 115 | } |
Slord2142 | 0:b3410a1e9843 | 116 | if(enable == TRUE) { |
Slord2142 | 0:b3410a1e9843 | 117 | for (i=0; i < 6; i++) { |
Slord2142 | 0:b3410a1e9843 | 118 | en[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 119 | } |
Slord2142 | 0:b3410a1e9843 | 120 | } |
Slord2142 | 0:b3410a1e9843 | 121 | } |
Slord2142 | 0:b3410a1e9843 | 122 | |
Slord2142 | 0:b3410a1e9843 | 123 | void progress(void){ |
Slord2142 | 0:b3410a1e9843 | 124 | for (i = 0; i < 5; i++){ |
Slord2142 | 0:b3410a1e9843 | 125 | if (stepForward == TRUE){ |
Slord2142 | 0:b3410a1e9843 | 126 | en[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 127 | enkey[i] = 2; |
Slord2142 | 0:b3410a1e9843 | 128 | stepForward = FALSE; |
Slord2142 | 0:b3410a1e9843 | 129 | } else if (enkey[i] == 2) { |
Slord2142 | 0:b3410a1e9843 | 130 | en[i] = 0; |
Slord2142 | 0:b3410a1e9843 | 131 | enkey[i] = 1; |
Slord2142 | 0:b3410a1e9843 | 132 | stepForward = TRUE; |
Slord2142 | 0:b3410a1e9843 | 133 | } |
Slord2142 | 0:b3410a1e9843 | 134 | } |
Slord2142 | 0:b3410a1e9843 | 135 | } |
Slord2142 | 0:b3410a1e9843 | 136 | |
Slord2142 | 0:b3410a1e9843 | 137 | void ILR(void){ |
Slord2142 | 0:b3410a1e9843 | 138 | enable = TRUE; |
Slord2142 | 0:b3410a1e9843 | 139 | flipFast(); |
Slord2142 | 0:b3410a1e9843 | 140 | }*/ |
Slord2142 | 0:b3410a1e9843 | 141 | |
Slord2142 | 0:b3410a1e9843 | 142 | void ILR(void){ |
Slord2142 | 0:b3410a1e9843 | 143 | enable = TRUE; |
Slord2142 | 0:b3410a1e9843 | 144 | } |
Slord2142 | 0:b3410a1e9843 | 145 | |
Slord2142 | 0:b3410a1e9843 | 146 | void setClocks(int num){ |
Slord2142 | 1:bc3509459a27 | 147 | numOn = num; |
Slord2142 | 0:b3410a1e9843 | 148 | if (num == 32 or enable == TRUE){ |
Slord2142 | 0:b3410a1e9843 | 149 | en[5] = 1; |
Slord2142 | 0:b3410a1e9843 | 150 | } else { |
Slord2142 | 1:bc3509459a27 | 151 | en[5] = 0; |
Slord2142 | 0:b3410a1e9843 | 152 | if (num >= 16) { |
Slord2142 | 0:b3410a1e9843 | 153 | en[4] = 1; |
Slord2142 | 0:b3410a1e9843 | 154 | num = num - 16; |
Slord2142 | 0:b3410a1e9843 | 155 | } else { |
Slord2142 | 0:b3410a1e9843 | 156 | en[4] = 0; |
Slord2142 | 0:b3410a1e9843 | 157 | } |
Slord2142 | 0:b3410a1e9843 | 158 | if (num >= 8) { |
Slord2142 | 0:b3410a1e9843 | 159 | en[3] = 1; |
Slord2142 | 0:b3410a1e9843 | 160 | num = num - 8; |
Slord2142 | 0:b3410a1e9843 | 161 | } else { |
Slord2142 | 0:b3410a1e9843 | 162 | en[3] = 0; |
Slord2142 | 0:b3410a1e9843 | 163 | } |
Slord2142 | 0:b3410a1e9843 | 164 | if (num >= 4) { |
Slord2142 | 0:b3410a1e9843 | 165 | en[2] = 1; |
Slord2142 | 0:b3410a1e9843 | 166 | num = num - 4; |
Slord2142 | 0:b3410a1e9843 | 167 | } else { |
Slord2142 | 0:b3410a1e9843 | 168 | en[2] = 0; |
Slord2142 | 0:b3410a1e9843 | 169 | } |
Slord2142 | 0:b3410a1e9843 | 170 | if (num >= 2) { |
Slord2142 | 0:b3410a1e9843 | 171 | en[1] = 1; |
Slord2142 | 0:b3410a1e9843 | 172 | num = num - 2; |
Slord2142 | 0:b3410a1e9843 | 173 | } else { |
Slord2142 | 0:b3410a1e9843 | 174 | en[1] = 0; |
Slord2142 | 0:b3410a1e9843 | 175 | } |
Slord2142 | 0:b3410a1e9843 | 176 | if (num == 1) { |
Slord2142 | 0:b3410a1e9843 | 177 | en[0] = 1; |
Slord2142 | 0:b3410a1e9843 | 178 | } else { |
Slord2142 | 0:b3410a1e9843 | 179 | en[0] = 0; |
Slord2142 | 0:b3410a1e9843 | 180 | } |
Slord2142 | 0:b3410a1e9843 | 181 | } |
Slord2142 | 1:bc3509459a27 | 182 | WR = 1; |
Slord2142 | 1:bc3509459a27 | 183 | wait_us(250); |
Slord2142 | 1:bc3509459a27 | 184 | WR = 0; |
Slord2142 | 0:b3410a1e9843 | 185 | } |