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
Fork of STM32FMSynth by
Diff: main.cpp
- Revision:
- 8:13b0594510de
- Parent:
- 7:b0cd74923bc6
- Child:
- 9:86c0035f5321
--- a/main.cpp Wed Dec 06 22:33:04 2017 +0000
+++ b/main.cpp Thu Dec 07 02:09:10 2017 +0000
@@ -21,11 +21,14 @@
AnalogIn ADC14(PC_4);
AnalogIn ADC15(PC_5);
-BusIn keyBank(PC_10, PC_11, PC_12, PC_13, PC_14, PC_15);
+//BusIn keyBank(PC_10, PC_11, PC_12, PC_13, PD_2, PH_1); old
+BusIn keyBank(PH_1, PD_2, PC_13, PC_12, PC_11, PC_10);
BusOut bankSelect(PB_0, PB_1, PB_2, PB_3, PB_4, PB_5, PB_6, PB_7, PB_8);
BusIn numerator(PA_8, PA_9, PA_10, PA_11);
BusIn denominator(PA_12, PA_13, PA_14, PA_15);
+Serial pc(USBTX, USBRX);
+
//Renaming ports
#define inVol ADC0
//#define inModAmt ADC1
@@ -185,6 +188,8 @@
int ratNumer;
int ratDenom;
+ keyBank.mode(PullNone);
+
while(true){
ratNumer = 0xf & ~ numerator;
ratDenom = 0xf & ~ denominator;
@@ -216,13 +221,19 @@
//'keyboard' should be uint64_t and not int64_t b/c keyboard&=~62 will make it negative, which isn't a huge deal really
keyboard = 0; //zero the keys before we start ORing on top of everything
for(int i = 0; i < 9; ++i) { //removed <= 9 because there is not 10 banks
- bankSelect = (short)(~(1 << i)) & bankSelect.mask();
+ bankSelect = (~(1LL << i)) & (unsigned long long)bankSelect.mask();
+ wait_us(200);
+ int shiftOffset = 6LL * i;
+ //shiftOffset -= 5; //bank 0 only has 1 key, so to prevent 5 missing keys and bits we subtract 5 for every bank > 0
+ //else keyboard &= ~31; //clear bits 1-5 (xx00000x) b/c we are ORing the next bank of keys on top of them & they may not be 0
- int shiftOffset = 6 * i;
- if(i > 0) shiftOffset -= 5; //bank 0 only has 1 key, so to prevent 5 missing keys and bits we subtract 5 for every bank > 0
- else keyboard &= ~62; //clear bits 1-5 (xx00000x) b/c we are ORing the next bank of keys on top of them & they may not be 0
-
- keyboard |= ((~keyBank) & keyBank.mask()) << shiftOffset;
+ keyboard |= ((~(unsigned long long)keyBank) & (unsigned long long)keyBank.mask()) << (unsigned long long)shiftOffset;
}
+ keyboard >>= 5;
+ /*for(int i = 63; i >= 0; i--) {
+ pc.printf("%d", !!(keyboard & (1LL << i)));
+ }
+ pc.printf("\r\n");
+ wait_ms(200);*/
}
}
