detail : http://www.mcugear.com/
You need lib of mbed and textLCD.
mbed と textLCDのライブラリが必要です。
main.cpp@1:bbcba1a79e7b, 2013-10-03 (annotated)
- Committer:
- Info
- Date:
- Thu Oct 03 09:21:14 2013 +0000
- Revision:
- 1:bbcba1a79e7b
main.cpp????????
; ????????????????????
; ????????????????????????????????????????????????????...
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Info | 1:bbcba1a79e7b | 1 | /* MCU Gear Library, only for testing MCUGear without any circuit you connected. |
Info | 1:bbcba1a79e7b | 2 | * Copyright (c) 2013, NestEgg Inc., http://www.mcugear.com/ |
Info | 1:bbcba1a79e7b | 3 | * |
Info | 1:bbcba1a79e7b | 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
Info | 1:bbcba1a79e7b | 5 | * of this software and associated documentation files (the "Software"), to deal |
Info | 1:bbcba1a79e7b | 6 | * in the Software without restriction, including without limitation the rights |
Info | 1:bbcba1a79e7b | 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
Info | 1:bbcba1a79e7b | 8 | * copies of the Software, and to permit persons to whom the Software is |
Info | 1:bbcba1a79e7b | 9 | * furnished to do so, subject to the following conditions: |
Info | 1:bbcba1a79e7b | 10 | * |
Info | 1:bbcba1a79e7b | 11 | * The above copyright notice and this permission notice shall be included in |
Info | 1:bbcba1a79e7b | 12 | * all copies or substantial portions of the Software. |
Info | 1:bbcba1a79e7b | 13 | * |
Info | 1:bbcba1a79e7b | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
Info | 1:bbcba1a79e7b | 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
Info | 1:bbcba1a79e7b | 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
Info | 1:bbcba1a79e7b | 17 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
Info | 1:bbcba1a79e7b | 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
Info | 1:bbcba1a79e7b | 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
Info | 1:bbcba1a79e7b | 20 | * THE SOFTWARE. |
Info | 1:bbcba1a79e7b | 21 | */ |
Info | 1:bbcba1a79e7b | 22 | |
Info | 1:bbcba1a79e7b | 23 | #include "mbed.h" |
Info | 1:bbcba1a79e7b | 24 | #include "TextLCD.h" |
Info | 1:bbcba1a79e7b | 25 | |
Info | 1:bbcba1a79e7b | 26 | #include "MCUGearBase.h" |
Info | 1:bbcba1a79e7b | 27 | #include "MCUGear.h" |
Info | 1:bbcba1a79e7b | 28 | #include "common.h" |
Info | 1:bbcba1a79e7b | 29 | |
Info | 1:bbcba1a79e7b | 30 | Serial pc(USBTX, USBRX); // tx, rx Set BaudRate = 115200 in main() |
Info | 1:bbcba1a79e7b | 31 | |
Info | 1:bbcba1a79e7b | 32 | //Make instance. Set I2C pins, Module address and Connector numnber of Modules. |
Info | 1:bbcba1a79e7b | 33 | |
Info | 1:bbcba1a79e7b | 34 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 35 | //caution: Do not use I2C(p28 & p27). It is reserved in this system with high speed 1.5MHz I2C. |
Info | 1:bbcba1a79e7b | 36 | //If you want to use I2C, you should change I2C clock. |
Info | 1:bbcba1a79e7b | 37 | // or use multi-function module. |
Info | 1:bbcba1a79e7b | 38 | |
Info | 1:bbcba1a79e7b | 39 | //Address setting:you can see the detail on common.h file. |
Info | 1:bbcba1a79e7b | 40 | //address format : (Type of device)_AD2pin_AD1pin_AD0pin |
Info | 1:bbcba1a79e7b | 41 | //N(PCA9674) A(PCA9674A) (VDD = +3V3 VSS = GND) |
Info | 1:bbcba1a79e7b | 42 | |
Info | 1:bbcba1a79e7b | 43 | //Initialize modules----------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 44 | MCUGear AD12M(p28, p27, N_SCL_SCL_VSS,4); //AD(MCP3202) 12bit Module : Set number of module pin |
Info | 1:bbcba1a79e7b | 45 | MCUGear AD8ch12M(p28, p27, N_SDA_SDA_SDA,4); //AD(MCP3208) 12bit 8ch Module |
Info | 1:bbcba1a79e7b | 46 | MCUGear DA12M(p28, p27, N_SCL_SCL_SCL,4); //DA(MCP4901) 12bit Module |
Info | 1:bbcba1a79e7b | 47 | MCUGear LCDM(p28, p27, N_VDD_VSS_VSS,6); //LCD Module |
Info | 1:bbcba1a79e7b | 48 | MCUGear SHM(p28, p27, N_VDD_VSS_VDD,8); //Signal Hold Module |
Info | 1:bbcba1a79e7b | 49 | MCUGear Uni2M(p28, p27, N_VDD_VDD_VDD,8); //2 Connector Universal Module |
Info | 1:bbcba1a79e7b | 50 | MCUGear MFM(p28, p27, N_VSS_VSS_VSS,4); //Multifunction Module |
Info | 1:bbcba1a79e7b | 51 | //----------------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 52 | |
Info | 1:bbcba1a79e7b | 53 | //Sample setting----------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 54 | //TextLCD lcd(p21, p22, p23, p24, p25, p26, TextLCD::LCD16x2); // rs, e, d4-d7 |
Info | 1:bbcba1a79e7b | 55 | SPI spi(p5, p6, p7); // mosi, miso, sclk |
Info | 1:bbcba1a79e7b | 56 | DigitalOut cs(p8); //for SPI communications |
Info | 1:bbcba1a79e7b | 57 | DigitalOut Dout(p15);//for 12bit DA module |
Info | 1:bbcba1a79e7b | 58 | BusOut SignalHold (p16,p21,p22,p23,p24,p25,p26); |
Info | 1:bbcba1a79e7b | 59 | |
Info | 1:bbcba1a79e7b | 60 | DigitalOut Dout1(p16); |
Info | 1:bbcba1a79e7b | 61 | DigitalOut Dout2(p21); |
Info | 1:bbcba1a79e7b | 62 | DigitalOut Dout3(p22); |
Info | 1:bbcba1a79e7b | 63 | DigitalOut Dout4(p23); |
Info | 1:bbcba1a79e7b | 64 | DigitalOut Dout5(p24); |
Info | 1:bbcba1a79e7b | 65 | DigitalIn Din1(p9); |
Info | 1:bbcba1a79e7b | 66 | DigitalIn Din2(p10); |
Info | 1:bbcba1a79e7b | 67 | |
Info | 1:bbcba1a79e7b | 68 | //------------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 69 | #endif |
Info | 1:bbcba1a79e7b | 70 | |
Info | 1:bbcba1a79e7b | 71 | |
Info | 1:bbcba1a79e7b | 72 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 73 | //Initialize modules----------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 74 | MCUGear AD12M(PTE0, PTE1, N_SCL_SCL_VSS,4); //AD(MCP3202) 12bit Module : Set number of module pin |
Info | 1:bbcba1a79e7b | 75 | MCUGear AD8ch12M(PTE0, PTE1, N_SDA_SDA_SDA,4); //AD(MCP3208) 12bit 8ch Module |
Info | 1:bbcba1a79e7b | 76 | MCUGear DA12M(PTE0, PTE1, N_SCL_SCL_SCL,4); //DA(MCP4901) 12bit Module |
Info | 1:bbcba1a79e7b | 77 | MCUGear LCDM(PTE0, PTE1, N_VDD_VSS_VSS,6); //LCD Module |
Info | 1:bbcba1a79e7b | 78 | MCUGear SHM(PTE0, PTE1, N_VDD_VSS_VDD,8); //Signal Hold Module |
Info | 1:bbcba1a79e7b | 79 | MCUGear Uni2M(PTE0, PTE1, N_VDD_VDD_VDD,8); //2 Connector Universal Module |
Info | 1:bbcba1a79e7b | 80 | MCUGear MFM(PTE0, PTE1, N_VSS_VSS_VSS,4); //Multifunction Module |
Info | 1:bbcba1a79e7b | 81 | //----------------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 82 | |
Info | 1:bbcba1a79e7b | 83 | //Sample setting----------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 84 | //TextLCD lcd(PTA1, PTA2, PTD4, PTA12, PTA4, PTA5, TextLCD::LCD16x2); // rs, e, d4-d7 |
Info | 1:bbcba1a79e7b | 85 | SPI spi(PTD2,PTD3,PTD1); // mosi, miso, sclk |
Info | 1:bbcba1a79e7b | 86 | DigitalOut cs(PTD0); //for SPI communications |
Info | 1:bbcba1a79e7b | 87 | DigitalOut Dout(PTA13);//for 12bit DA module |
Info | 1:bbcba1a79e7b | 88 | BusOut SignalHold (PTB0, PTB1, PTD4, PTA12, PTA4, PTA5, PTC8); |
Info | 1:bbcba1a79e7b | 89 | |
Info | 1:bbcba1a79e7b | 90 | DigitalOut Dout1(PTB0); |
Info | 1:bbcba1a79e7b | 91 | DigitalOut Dout2(PTB1); |
Info | 1:bbcba1a79e7b | 92 | DigitalOut Dout3(PTD4); |
Info | 1:bbcba1a79e7b | 93 | DigitalOut Dout4(PTA12); |
Info | 1:bbcba1a79e7b | 94 | DigitalOut Dout5(PTA4); |
Info | 1:bbcba1a79e7b | 95 | DigitalIn Din1(PTB0); |
Info | 1:bbcba1a79e7b | 96 | DigitalIn Din2(PTB1); |
Info | 1:bbcba1a79e7b | 97 | #endif |
Info | 1:bbcba1a79e7b | 98 | |
Info | 1:bbcba1a79e7b | 99 | //sample functions------------------------------------------------------------ |
Info | 1:bbcba1a79e7b | 100 | void IOSimpleSPI(MCUGear *mcugear); //IO setting for Simple SPI module |
Info | 1:bbcba1a79e7b | 101 | void IO12bitDA(MCUGear *mcugear); //IO setting for DA 12bit module |
Info | 1:bbcba1a79e7b | 102 | void IOLCD(MCUGear *mcugear); //IO setting for LCD module |
Info | 1:bbcba1a79e7b | 103 | void IOSHM(MCUGear *mcugear); //IO setting for Signal Hold module |
Info | 1:bbcba1a79e7b | 104 | void IOUni2M(MCUGear *mcugear); //IO setting for 2 Connector Universal module |
Info | 1:bbcba1a79e7b | 105 | |
Info | 1:bbcba1a79e7b | 106 | int read12bitAD(MCUGear *mcugear, char ch); //simple ADC |
Info | 1:bbcba1a79e7b | 107 | void write12bitDA(MCUGear *mcugear, int data); //simple DA |
Info | 1:bbcba1a79e7b | 108 | int read12bit8chAD(MCUGear *mcugear, char ch); //simple ADC 8ch |
Info | 1:bbcba1a79e7b | 109 | |
Info | 1:bbcba1a79e7b | 110 | #ifdef AD_MODE //for Multifunction Module |
Info | 1:bbcba1a79e7b | 111 | int read10bitAD(MCUGear *mcugear, int ch); |
Info | 1:bbcba1a79e7b | 112 | #endif |
Info | 1:bbcba1a79e7b | 113 | |
Info | 1:bbcba1a79e7b | 114 | #ifdef PWM_MODE //for Multifunction Module |
Info | 1:bbcba1a79e7b | 115 | void initPWM(MCUGear *mcugear, unsigned int Divider, unsigned int friquency, unsigned int duty0, unsigned int duty1, unsigned int duty2); |
Info | 1:bbcba1a79e7b | 116 | void PWMfriq(MCUGear *mcugear, unsigned int friquency); |
Info | 1:bbcba1a79e7b | 117 | void PWMDuty(MCUGear *mcugear, int ch, unsigned int Duty); |
Info | 1:bbcba1a79e7b | 118 | void StopPWM(MCUGear *mcugear); |
Info | 1:bbcba1a79e7b | 119 | void StartPWM(MCUGear *mcugear); |
Info | 1:bbcba1a79e7b | 120 | #endif |
Info | 1:bbcba1a79e7b | 121 | //---------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 122 | |
Info | 1:bbcba1a79e7b | 123 | |
Info | 1:bbcba1a79e7b | 124 | //*************************************************************************************** |
Info | 1:bbcba1a79e7b | 125 | int main() { |
Info | 1:bbcba1a79e7b | 126 | |
Info | 1:bbcba1a79e7b | 127 | int SW1,SW2; |
Info | 1:bbcba1a79e7b | 128 | |
Info | 1:bbcba1a79e7b | 129 | // pc.printf("hello world!!!"); |
Info | 1:bbcba1a79e7b | 130 | |
Info | 1:bbcba1a79e7b | 131 | initBase(); //initialize Baseboard |
Info | 1:bbcba1a79e7b | 132 | |
Info | 1:bbcba1a79e7b | 133 | |
Info | 1:bbcba1a79e7b | 134 | //Set IO -------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 135 | |
Info | 1:bbcba1a79e7b | 136 | IOSimpleSPI(&AD12M); |
Info | 1:bbcba1a79e7b | 137 | IOSimpleSPI(&AD8ch12M); |
Info | 1:bbcba1a79e7b | 138 | IO12bitDA(&DA12M); |
Info | 1:bbcba1a79e7b | 139 | IOLCD(&LCDM); |
Info | 1:bbcba1a79e7b | 140 | IOSHM(&SHM); |
Info | 1:bbcba1a79e7b | 141 | IOUni2M(&Uni2M); |
Info | 1:bbcba1a79e7b | 142 | IOSimpleSPI(&MFM); //IO setting for Multifunction module |
Info | 1:bbcba1a79e7b | 143 | |
Info | 1:bbcba1a79e7b | 144 | //--------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 145 | wait(1); |
Info | 1:bbcba1a79e7b | 146 | |
Info | 1:bbcba1a79e7b | 147 | LCDM.connectModule(); |
Info | 1:bbcba1a79e7b | 148 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 149 | TextLCD lcd(p21, p22, p23, p24, p25, p26, TextLCD::LCD16x2); // rs, e, d4-d7 |
Info | 1:bbcba1a79e7b | 150 | #endif |
Info | 1:bbcba1a79e7b | 151 | |
Info | 1:bbcba1a79e7b | 152 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 153 | TextLCD lcd(PTB0, PTB1, PTD4, PTA12, PTA4, PTA5, TextLCD::LCD16x2); // rs, e, d4-d7 |
Info | 1:bbcba1a79e7b | 154 | #endif |
Info | 1:bbcba1a79e7b | 155 | |
Info | 1:bbcba1a79e7b | 156 | lcd.cls(); |
Info | 1:bbcba1a79e7b | 157 | lcd.printf("Hello World!\n"); |
Info | 1:bbcba1a79e7b | 158 | wait(1); |
Info | 1:bbcba1a79e7b | 159 | LCDM.disconnectModule(); |
Info | 1:bbcba1a79e7b | 160 | |
Info | 1:bbcba1a79e7b | 161 | |
Info | 1:bbcba1a79e7b | 162 | |
Info | 1:bbcba1a79e7b | 163 | int data1[2]; |
Info | 1:bbcba1a79e7b | 164 | int data2[8]; |
Info | 1:bbcba1a79e7b | 165 | int data3[3]; |
Info | 1:bbcba1a79e7b | 166 | uint8_t busData = 0; |
Info | 1:bbcba1a79e7b | 167 | |
Info | 1:bbcba1a79e7b | 168 | #ifdef PWM_MODE |
Info | 1:bbcba1a79e7b | 169 | |
Info | 1:bbcba1a79e7b | 170 | uint32_t PWM_data = 0x7FF; |
Info | 1:bbcba1a79e7b | 171 | uint32_t PWM_data_old = 0; |
Info | 1:bbcba1a79e7b | 172 | |
Info | 1:bbcba1a79e7b | 173 | MFM.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 174 | initPWM(&MFM, 24, 40950, 10, 10, 10);// 0-2msec 12bit 20msec for RC servosetting |
Info | 1:bbcba1a79e7b | 175 | //initPWM(&MFM, 120, 4095, 20, 50, 80);//Simple 10msec PWM |
Info | 1:bbcba1a79e7b | 176 | //initPWM(&MFM, 48, 26, 70, 70, 70);//38kHz 26usec for IR LED |
Info | 1:bbcba1a79e7b | 177 | MFM.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 178 | |
Info | 1:bbcba1a79e7b | 179 | #endif |
Info | 1:bbcba1a79e7b | 180 | |
Info | 1:bbcba1a79e7b | 181 | while(1) { |
Info | 1:bbcba1a79e7b | 182 | //12bit AD Mobdule------------------------------------------------- |
Info | 1:bbcba1a79e7b | 183 | |
Info | 1:bbcba1a79e7b | 184 | cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 185 | AD12M.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 186 | data1[0] = read12bitAD(&AD12M, 0); |
Info | 1:bbcba1a79e7b | 187 | data1[1] = read12bitAD(&AD12M, 1); |
Info | 1:bbcba1a79e7b | 188 | AD12M.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 189 | |
Info | 1:bbcba1a79e7b | 190 | //12bit 8ch AD Module |
Info | 1:bbcba1a79e7b | 191 | |
Info | 1:bbcba1a79e7b | 192 | cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 193 | AD8ch12M.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 194 | data2[0] = read12bit8chAD(&AD8ch12M, 0); //0ch |
Info | 1:bbcba1a79e7b | 195 | data2[1] = read12bit8chAD(&AD8ch12M, 1); //1ch |
Info | 1:bbcba1a79e7b | 196 | data2[2] = read12bit8chAD(&AD8ch12M, 2); //2ch |
Info | 1:bbcba1a79e7b | 197 | data2[3] = read12bit8chAD(&AD8ch12M, 3); //3ch |
Info | 1:bbcba1a79e7b | 198 | data2[4] = read12bit8chAD(&AD8ch12M, 4); //4ch |
Info | 1:bbcba1a79e7b | 199 | data2[5] = read12bit8chAD(&AD8ch12M, 5); //5ch |
Info | 1:bbcba1a79e7b | 200 | data2[6] = read12bit8chAD(&AD8ch12M, 6); //6ch |
Info | 1:bbcba1a79e7b | 201 | data2[7] = read12bit8chAD(&AD8ch12M, 7); //7ch |
Info | 1:bbcba1a79e7b | 202 | AD8ch12M.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 203 | |
Info | 1:bbcba1a79e7b | 204 | #ifdef AD_MODE //for Multifunction Module |
Info | 1:bbcba1a79e7b | 205 | cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 206 | MFM.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 207 | data3[0] = read10bitAD(&MFM, 1); //1ch |
Info | 1:bbcba1a79e7b | 208 | data3[1] = read10bitAD(&MFM, 2); //2ch |
Info | 1:bbcba1a79e7b | 209 | data3[2] = read10bitAD(&MFM, 3); //3ch |
Info | 1:bbcba1a79e7b | 210 | MFM.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 211 | #endif |
Info | 1:bbcba1a79e7b | 212 | |
Info | 1:bbcba1a79e7b | 213 | #ifdef PWM_MODE //for Multifunction Module |
Info | 1:bbcba1a79e7b | 214 | |
Info | 1:bbcba1a79e7b | 215 | cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 216 | MFM.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 217 | |
Info | 1:bbcba1a79e7b | 218 | //RC Servo and Simple PWM |
Info | 1:bbcba1a79e7b | 219 | /* PWMDuty(&MFM, 1, 0x7FF); //duty 50% |
Info | 1:bbcba1a79e7b | 220 | PWMDuty(&MFM, 2, 0x7FF); |
Info | 1:bbcba1a79e7b | 221 | PWMDuty(&MFM, 3, 0x7FF); |
Info | 1:bbcba1a79e7b | 222 | */ |
Info | 1:bbcba1a79e7b | 223 | |
Info | 1:bbcba1a79e7b | 224 | if(PWM_data > 0xFFF){ |
Info | 1:bbcba1a79e7b | 225 | PWM_data = 0x7FF; |
Info | 1:bbcba1a79e7b | 226 | } |
Info | 1:bbcba1a79e7b | 227 | |
Info | 1:bbcba1a79e7b | 228 | //RC Servo and Simple PWM |
Info | 1:bbcba1a79e7b | 229 | PWMDuty(&MFM, 1, 0x7FF); //duty 50% |
Info | 1:bbcba1a79e7b | 230 | |
Info | 1:bbcba1a79e7b | 231 | if(PWM_data_old != PWM_data){ |
Info | 1:bbcba1a79e7b | 232 | PWMDuty(&MFM, 2, PWM_data); |
Info | 1:bbcba1a79e7b | 233 | PWM_data_old = PWM_data; |
Info | 1:bbcba1a79e7b | 234 | |
Info | 1:bbcba1a79e7b | 235 | } |
Info | 1:bbcba1a79e7b | 236 | |
Info | 1:bbcba1a79e7b | 237 | //PWMDuty(&MFM, 3, PWM_data); |
Info | 1:bbcba1a79e7b | 238 | PWMDuty(&MFM, 3, data1[0]+0x7FF); |
Info | 1:bbcba1a79e7b | 239 | //mwait01(10000); //If the system is heavy or not, you should adjust the value. |
Info | 1:bbcba1a79e7b | 240 | |
Info | 1:bbcba1a79e7b | 241 | PWM_data = PWM_data + 0x0FF; |
Info | 1:bbcba1a79e7b | 242 | |
Info | 1:bbcba1a79e7b | 243 | //Sample for IR LED |
Info | 1:bbcba1a79e7b | 244 | /* |
Info | 1:bbcba1a79e7b | 245 | StopPWM(&MFM); |
Info | 1:bbcba1a79e7b | 246 | wait_us(10); |
Info | 1:bbcba1a79e7b | 247 | StartPWM(&MFM); |
Info | 1:bbcba1a79e7b | 248 | wait_us(10); |
Info | 1:bbcba1a79e7b | 249 | StopPWM(&MFM); |
Info | 1:bbcba1a79e7b | 250 | wait_us(10); |
Info | 1:bbcba1a79e7b | 251 | StartPWM(&MFM); |
Info | 1:bbcba1a79e7b | 252 | wait_us(10); |
Info | 1:bbcba1a79e7b | 253 | StopPWM(&MFM); |
Info | 1:bbcba1a79e7b | 254 | */ |
Info | 1:bbcba1a79e7b | 255 | MFM.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 256 | |
Info | 1:bbcba1a79e7b | 257 | #endif |
Info | 1:bbcba1a79e7b | 258 | |
Info | 1:bbcba1a79e7b | 259 | |
Info | 1:bbcba1a79e7b | 260 | //LCD Module------------------------------------------------------ |
Info | 1:bbcba1a79e7b | 261 | LCDM.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 262 | lcd.printf(" "); //set IO as a neutral position |
Info | 1:bbcba1a79e7b | 263 | lcd.cls(); //clear LCD |
Info | 1:bbcba1a79e7b | 264 | lcd.printf("A%d B%d\nC%d D%d",data1[0],data1[1],data2[0],data2[6]); //write LCD data |
Info | 1:bbcba1a79e7b | 265 | wait_ms(10); //delay for view the LCD |
Info | 1:bbcba1a79e7b | 266 | LCDM.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 267 | |
Info | 1:bbcba1a79e7b | 268 | //12bit 2ch AD |
Info | 1:bbcba1a79e7b | 269 | //pc.printf("0ch%d, 1ch%d, ",data1[0],data1[1]); |
Info | 1:bbcba1a79e7b | 270 | //12bit 8ch AD |
Info | 1:bbcba1a79e7b | 271 | pc.printf("0ch%d, 1ch%d, 2ch%d, 3ch%d, 4ch%d, 5ch%d, 6ch%d, 7ch%d, ",data2[0],data2[1],data2[2],data2[3],data2[4],data2[5],data2[6],data2[7]); |
Info | 1:bbcba1a79e7b | 272 | #ifdef AD_MODE //for Multifunction Module |
Info | 1:bbcba1a79e7b | 273 | pc.printf("0ch%d, 1ch%d, 2ch%d",data3[0],data3[1],data3[2]); |
Info | 1:bbcba1a79e7b | 274 | #endif |
Info | 1:bbcba1a79e7b | 275 | pc.printf("\r\n"); |
Info | 1:bbcba1a79e7b | 276 | |
Info | 1:bbcba1a79e7b | 277 | |
Info | 1:bbcba1a79e7b | 278 | //12bit SPI DA module--------------------------------------------- |
Info | 1:bbcba1a79e7b | 279 | cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 280 | Dout=1; //reset ratch signal |
Info | 1:bbcba1a79e7b | 281 | DA12M.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 282 | write12bitDA(&DA12M, data1[0]); |
Info | 1:bbcba1a79e7b | 283 | DA12M.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 284 | |
Info | 1:bbcba1a79e7b | 285 | |
Info | 1:bbcba1a79e7b | 286 | //Signal Hold module (TC74VHCT540AF)------------------------------ |
Info | 1:bbcba1a79e7b | 287 | Dout = 0; //ratch standby |
Info | 1:bbcba1a79e7b | 288 | SHM.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 289 | |
Info | 1:bbcba1a79e7b | 290 | SignalHold = busData; //set 7bit bus out |
Info | 1:bbcba1a79e7b | 291 | Dout = 1; //ratch |
Info | 1:bbcba1a79e7b | 292 | Dout = 0; //ratch standby |
Info | 1:bbcba1a79e7b | 293 | SHM.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 294 | |
Info | 1:bbcba1a79e7b | 295 | //2 connector universal module ------------------------------ |
Info | 1:bbcba1a79e7b | 296 | |
Info | 1:bbcba1a79e7b | 297 | Dout = 1; |
Info | 1:bbcba1a79e7b | 298 | Dout1 = 1; |
Info | 1:bbcba1a79e7b | 299 | Dout2 = 1; |
Info | 1:bbcba1a79e7b | 300 | Dout3 = 1; |
Info | 1:bbcba1a79e7b | 301 | Dout4 = 1; |
Info | 1:bbcba1a79e7b | 302 | Dout5 = 1; |
Info | 1:bbcba1a79e7b | 303 | |
Info | 1:bbcba1a79e7b | 304 | Uni2M.connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 305 | |
Info | 1:bbcba1a79e7b | 306 | SW1 = Din1.read(); |
Info | 1:bbcba1a79e7b | 307 | SW2 = Din2.read(); |
Info | 1:bbcba1a79e7b | 308 | |
Info | 1:bbcba1a79e7b | 309 | if(SW1 == 1){ |
Info | 1:bbcba1a79e7b | 310 | Dout = 1; |
Info | 1:bbcba1a79e7b | 311 | Dout2 = 1; |
Info | 1:bbcba1a79e7b | 312 | Dout3 = 1; |
Info | 1:bbcba1a79e7b | 313 | }else{ |
Info | 1:bbcba1a79e7b | 314 | Dout = 0; |
Info | 1:bbcba1a79e7b | 315 | Dout2 = 0; |
Info | 1:bbcba1a79e7b | 316 | Dout3 = 0; |
Info | 1:bbcba1a79e7b | 317 | } |
Info | 1:bbcba1a79e7b | 318 | if(SW2 == 1){ |
Info | 1:bbcba1a79e7b | 319 | Dout1 = 1; |
Info | 1:bbcba1a79e7b | 320 | Dout4 = 1; |
Info | 1:bbcba1a79e7b | 321 | Dout5 = 1; |
Info | 1:bbcba1a79e7b | 322 | }else{ |
Info | 1:bbcba1a79e7b | 323 | Dout1 = 0; |
Info | 1:bbcba1a79e7b | 324 | Dout4 = 0; |
Info | 1:bbcba1a79e7b | 325 | Dout5 = 0; |
Info | 1:bbcba1a79e7b | 326 | } |
Info | 1:bbcba1a79e7b | 327 | |
Info | 1:bbcba1a79e7b | 328 | Uni2M.disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 329 | |
Info | 1:bbcba1a79e7b | 330 | /*++busData; |
Info | 1:bbcba1a79e7b | 331 | if(busData >= 0x80) |
Info | 1:bbcba1a79e7b | 332 | busData = 0x00; |
Info | 1:bbcba1a79e7b | 333 | */ |
Info | 1:bbcba1a79e7b | 334 | |
Info | 1:bbcba1a79e7b | 335 | if(busData == 0x00) |
Info | 1:bbcba1a79e7b | 336 | busData = 0x7F; |
Info | 1:bbcba1a79e7b | 337 | |
Info | 1:bbcba1a79e7b | 338 | --busData; |
Info | 1:bbcba1a79e7b | 339 | } |
Info | 1:bbcba1a79e7b | 340 | } |
Info | 1:bbcba1a79e7b | 341 | //*************************************************************************************** |
Info | 1:bbcba1a79e7b | 342 | |
Info | 1:bbcba1a79e7b | 343 | |
Info | 1:bbcba1a79e7b | 344 | //Smple functions |
Info | 1:bbcba1a79e7b | 345 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 346 | //Simple read 12bit 2ch AD module |
Info | 1:bbcba1a79e7b | 347 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 348 | int read12bitAD(MCUGear *mcugear, char ch){ |
Info | 1:bbcba1a79e7b | 349 | |
Info | 1:bbcba1a79e7b | 350 | char sendData; |
Info | 1:bbcba1a79e7b | 351 | int whoami[3]; |
Info | 1:bbcba1a79e7b | 352 | |
Info | 1:bbcba1a79e7b | 353 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 354 | spi.frequency(1000000);//1MHz |
Info | 1:bbcba1a79e7b | 355 | if(ch == 0){ |
Info | 1:bbcba1a79e7b | 356 | sendData = 0x06; |
Info | 1:bbcba1a79e7b | 357 | }else if(ch == 1){ |
Info | 1:bbcba1a79e7b | 358 | sendData = 0x07; |
Info | 1:bbcba1a79e7b | 359 | }else{ |
Info | 1:bbcba1a79e7b | 360 | return -1; |
Info | 1:bbcba1a79e7b | 361 | } |
Info | 1:bbcba1a79e7b | 362 | //12bit AD Mobdule---------------- |
Info | 1:bbcba1a79e7b | 363 | // cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 364 | // mcugear->connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 365 | spi.format(14,0); //Change SPI format mbed only |
Info | 1:bbcba1a79e7b | 366 | cs = 0; |
Info | 1:bbcba1a79e7b | 367 | spi.write(sendData); |
Info | 1:bbcba1a79e7b | 368 | wait_us(1); |
Info | 1:bbcba1a79e7b | 369 | whoami[0] = spi.write(0x2000)-0x2000; //get data from AD device |
Info | 1:bbcba1a79e7b | 370 | cs = 1; |
Info | 1:bbcba1a79e7b | 371 | // mcugear->disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 372 | return whoami[0]; |
Info | 1:bbcba1a79e7b | 373 | #endif |
Info | 1:bbcba1a79e7b | 374 | |
Info | 1:bbcba1a79e7b | 375 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 376 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 377 | if(ch == 0){ |
Info | 1:bbcba1a79e7b | 378 | sendData = 0x80; |
Info | 1:bbcba1a79e7b | 379 | }else if(ch == 1){ |
Info | 1:bbcba1a79e7b | 380 | sendData = 0xC0; |
Info | 1:bbcba1a79e7b | 381 | }else{ |
Info | 1:bbcba1a79e7b | 382 | return -1; |
Info | 1:bbcba1a79e7b | 383 | } |
Info | 1:bbcba1a79e7b | 384 | |
Info | 1:bbcba1a79e7b | 385 | //12bit AD Mobdule---------------- |
Info | 1:bbcba1a79e7b | 386 | // cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 387 | // mcugear->connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 388 | |
Info | 1:bbcba1a79e7b | 389 | cs = 0; |
Info | 1:bbcba1a79e7b | 390 | //FRDM KL25Z is 8-bit format. |
Info | 1:bbcba1a79e7b | 391 | whoami[2] = spi.write(0x01);//0000 0001 |
Info | 1:bbcba1a79e7b | 392 | whoami[2] = spi.write(sendData); |
Info | 1:bbcba1a79e7b | 393 | whoami[0] = whoami[2]<<8; |
Info | 1:bbcba1a79e7b | 394 | whoami[0] = whoami[0] + spi.write(0x00) - 0xE000;//0000 0000 |
Info | 1:bbcba1a79e7b | 395 | // whoami[2] = 0;//clear buffer |
Info | 1:bbcba1a79e7b | 396 | cs = 1; |
Info | 1:bbcba1a79e7b | 397 | // mcugear->disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 398 | return whoami[0]; |
Info | 1:bbcba1a79e7b | 399 | #endif |
Info | 1:bbcba1a79e7b | 400 | } |
Info | 1:bbcba1a79e7b | 401 | |
Info | 1:bbcba1a79e7b | 402 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 403 | //IO setting for LCD module |
Info | 1:bbcba1a79e7b | 404 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 405 | void IOLCD(MCUGear *mcugear){ |
Info | 1:bbcba1a79e7b | 406 | uint8_t fio[12]; |
Info | 1:bbcba1a79e7b | 407 | mcugear->detect_module(fio); // detect LCDM |
Info | 1:bbcba1a79e7b | 408 | |
Info | 1:bbcba1a79e7b | 409 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 410 | mcugear->savePinSetting(0, IO_MBED_P21, IO_REG_OUT_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 411 | mcugear->savePinSetting(1, IO_MBED_P22, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 412 | mcugear->savePinSetting(2, IO_MBED_P23, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 413 | mcugear->savePinSetting(3, IO_MBED_P24, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 414 | mcugear->savePinSetting(4, IO_MBED_P25, IO_REG_OUT_DIR, fio[4]); |
Info | 1:bbcba1a79e7b | 415 | mcugear->savePinSetting(5, IO_MBED_P26, IO_REG_OUT_DIR, fio[5]); |
Info | 1:bbcba1a79e7b | 416 | #endif |
Info | 1:bbcba1a79e7b | 417 | |
Info | 1:bbcba1a79e7b | 418 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 419 | mcugear->savePinSetting(0, IO_MBED_PTB0, IO_REG_OUT_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 420 | mcugear->savePinSetting(1, IO_MBED_PTB1, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 421 | mcugear->savePinSetting(2, IO_MBED_PTD4, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 422 | mcugear->savePinSetting(3, IO_MBED_PTA12, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 423 | mcugear->savePinSetting(4, IO_MBED_PTA4, IO_REG_OUT_DIR, fio[4]); |
Info | 1:bbcba1a79e7b | 424 | mcugear->savePinSetting(5, IO_MBED_PTA5, IO_REG_OUT_DIR, fio[5]); |
Info | 1:bbcba1a79e7b | 425 | #endif |
Info | 1:bbcba1a79e7b | 426 | |
Info | 1:bbcba1a79e7b | 427 | #ifdef BOOST_MODE |
Info | 1:bbcba1a79e7b | 428 | mcugear->makeCircuit(); |
Info | 1:bbcba1a79e7b | 429 | #endif |
Info | 1:bbcba1a79e7b | 430 | } |
Info | 1:bbcba1a79e7b | 431 | |
Info | 1:bbcba1a79e7b | 432 | |
Info | 1:bbcba1a79e7b | 433 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 434 | //IO setting for 12bit DA module |
Info | 1:bbcba1a79e7b | 435 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 436 | void IO12bitDA(MCUGear *mcugear){ |
Info | 1:bbcba1a79e7b | 437 | uint8_t fio[12]; |
Info | 1:bbcba1a79e7b | 438 | //--------------------- |
Info | 1:bbcba1a79e7b | 439 | mcugear->detect_module(fio); |
Info | 1:bbcba1a79e7b | 440 | //Dout(p15),mosi(p5),sck(p7),cs(p8) |
Info | 1:bbcba1a79e7b | 441 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 442 | mcugear->savePinSetting(0, IO_MBED_P15, IO_REG_OUT_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 443 | mcugear->savePinSetting(1, IO_MBED_P5, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 444 | mcugear->savePinSetting(2, IO_MBED_P7, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 445 | mcugear->savePinSetting(3, IO_MBED_P8, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 446 | #endif |
Info | 1:bbcba1a79e7b | 447 | |
Info | 1:bbcba1a79e7b | 448 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 449 | //Dout(PTA13),mosi(PTD2),sck(PTD1),cs(PTD0) |
Info | 1:bbcba1a79e7b | 450 | mcugear->savePinSetting(0, IO_MBED_PTA13, IO_REG_OUT_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 451 | mcugear->savePinSetting(1, IO_MBED_PTD2, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 452 | mcugear->savePinSetting(2, IO_MBED_PTD1, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 453 | mcugear->savePinSetting(3, IO_MBED_PTD0, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 454 | #endif |
Info | 1:bbcba1a79e7b | 455 | |
Info | 1:bbcba1a79e7b | 456 | #ifdef BOOST_MODE |
Info | 1:bbcba1a79e7b | 457 | mcugear->makeCircuit(); |
Info | 1:bbcba1a79e7b | 458 | #endif |
Info | 1:bbcba1a79e7b | 459 | } |
Info | 1:bbcba1a79e7b | 460 | |
Info | 1:bbcba1a79e7b | 461 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 462 | //Simple write for 12bit DA module |
Info | 1:bbcba1a79e7b | 463 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 464 | void write12bitDA(MCUGear *mcugear, int data){ |
Info | 1:bbcba1a79e7b | 465 | |
Info | 1:bbcba1a79e7b | 466 | //12bit SPI DA module---------------- |
Info | 1:bbcba1a79e7b | 467 | |
Info | 1:bbcba1a79e7b | 468 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 469 | // spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 470 | spi.frequency(20000000); //20MHz |
Info | 1:bbcba1a79e7b | 471 | spi.format(16,0); //Change SPI format |
Info | 1:bbcba1a79e7b | 472 | // mcugear->connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 473 | cs = 0; |
Info | 1:bbcba1a79e7b | 474 | spi.write((0x3000)+(data)); //write 0011 1000 0000 0000 |
Info | 1:bbcba1a79e7b | 475 | #endif |
Info | 1:bbcba1a79e7b | 476 | |
Info | 1:bbcba1a79e7b | 477 | //12bit SPI DA module---------------- |
Info | 1:bbcba1a79e7b | 478 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 479 | //spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 480 | spi.frequency(20000000); //10MHz |
Info | 1:bbcba1a79e7b | 481 | //connection |
Info | 1:bbcba1a79e7b | 482 | // mcugear->connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 483 | cs = 0; |
Info | 1:bbcba1a79e7b | 484 | spi.write((0x30)+((data>>8)&0x0F));//write 0011 0000 |
Info | 1:bbcba1a79e7b | 485 | spi.write(data&0xFF);//write 0011 1000 0000 0000 |
Info | 1:bbcba1a79e7b | 486 | #endif |
Info | 1:bbcba1a79e7b | 487 | |
Info | 1:bbcba1a79e7b | 488 | wait_us(1); //over 15nsec |
Info | 1:bbcba1a79e7b | 489 | cs = 1; //CS high |
Info | 1:bbcba1a79e7b | 490 | wait_us(1); //over 40nsec |
Info | 1:bbcba1a79e7b | 491 | Dout=0; //ratch for DA out enable |
Info | 1:bbcba1a79e7b | 492 | wait_us(1); //over 100nsec |
Info | 1:bbcba1a79e7b | 493 | Dout=1; //reset ratch signal |
Info | 1:bbcba1a79e7b | 494 | // mcugear->disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 495 | // wait_us(1); //wait after disconnect |
Info | 1:bbcba1a79e7b | 496 | } |
Info | 1:bbcba1a79e7b | 497 | |
Info | 1:bbcba1a79e7b | 498 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 499 | //Simple write for 12bit 8ch AD module |
Info | 1:bbcba1a79e7b | 500 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 501 | int read12bit8chAD(MCUGear *mcugear, char ch){ |
Info | 1:bbcba1a79e7b | 502 | |
Info | 1:bbcba1a79e7b | 503 | char sendData; |
Info | 1:bbcba1a79e7b | 504 | int whoami[3]; |
Info | 1:bbcba1a79e7b | 505 | |
Info | 1:bbcba1a79e7b | 506 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 507 | // if((ch >= 0 )&&(ch < 8)){ |
Info | 1:bbcba1a79e7b | 508 | if(ch < 8){ |
Info | 1:bbcba1a79e7b | 509 | sendData = 0x18+ch; //0001 1000 |
Info | 1:bbcba1a79e7b | 510 | }else{ |
Info | 1:bbcba1a79e7b | 511 | return -1; |
Info | 1:bbcba1a79e7b | 512 | } |
Info | 1:bbcba1a79e7b | 513 | |
Info | 1:bbcba1a79e7b | 514 | //12bit AD Mobdule---------------- |
Info | 1:bbcba1a79e7b | 515 | spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 516 | // cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 517 | // mcugear->connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 518 | spi.format(14,0); //Change SPI format mbed only |
Info | 1:bbcba1a79e7b | 519 | cs = 0; |
Info | 1:bbcba1a79e7b | 520 | spi.write(sendData); |
Info | 1:bbcba1a79e7b | 521 | whoami[0] = spi.write(0x0000)-0x2000; //get data from AD device |
Info | 1:bbcba1a79e7b | 522 | cs = 1; |
Info | 1:bbcba1a79e7b | 523 | // mcugear->disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 524 | return whoami[0]; |
Info | 1:bbcba1a79e7b | 525 | #endif |
Info | 1:bbcba1a79e7b | 526 | |
Info | 1:bbcba1a79e7b | 527 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 528 | char sendData2; |
Info | 1:bbcba1a79e7b | 529 | //0000 0000 0110 00 00 [0000 0000 0000] |
Info | 1:bbcba1a79e7b | 530 | // if((ch >= 0 )&&(ch < 8)){ |
Info | 1:bbcba1a79e7b | 531 | if(ch < 8){ |
Info | 1:bbcba1a79e7b | 532 | sendData = 0x18+ch; //0001 1000 |
Info | 1:bbcba1a79e7b | 533 | sendData2 = sendData >> 2; |
Info | 1:bbcba1a79e7b | 534 | sendData = sendData << 6; |
Info | 1:bbcba1a79e7b | 535 | |
Info | 1:bbcba1a79e7b | 536 | }else{ |
Info | 1:bbcba1a79e7b | 537 | return -1; |
Info | 1:bbcba1a79e7b | 538 | } |
Info | 1:bbcba1a79e7b | 539 | |
Info | 1:bbcba1a79e7b | 540 | //12bit AD Mobdule---------------- |
Info | 1:bbcba1a79e7b | 541 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 542 | // cs = 1; //reset CS pin |
Info | 1:bbcba1a79e7b | 543 | // mcugear->connectModule(); //connect--- |
Info | 1:bbcba1a79e7b | 544 | cs = 0; |
Info | 1:bbcba1a79e7b | 545 | spi.write(sendData2); |
Info | 1:bbcba1a79e7b | 546 | whoami[2] = spi.write(sendData); |
Info | 1:bbcba1a79e7b | 547 | whoami[0] = whoami[2]<<8; |
Info | 1:bbcba1a79e7b | 548 | whoami[0] = whoami[0] + spi.write(0x00)-0xE000; //get data from AD device |
Info | 1:bbcba1a79e7b | 549 | cs = 1; |
Info | 1:bbcba1a79e7b | 550 | // mcugear->disconnectModule(); //disconnect--- |
Info | 1:bbcba1a79e7b | 551 | return whoami[0]; |
Info | 1:bbcba1a79e7b | 552 | |
Info | 1:bbcba1a79e7b | 553 | |
Info | 1:bbcba1a79e7b | 554 | #endif |
Info | 1:bbcba1a79e7b | 555 | } |
Info | 1:bbcba1a79e7b | 556 | |
Info | 1:bbcba1a79e7b | 557 | |
Info | 1:bbcba1a79e7b | 558 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 559 | //Simple universal module |
Info | 1:bbcba1a79e7b | 560 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 561 | void IOSHM(MCUGear *mcugear){ |
Info | 1:bbcba1a79e7b | 562 | |
Info | 1:bbcba1a79e7b | 563 | uint8_t fio[12]; |
Info | 1:bbcba1a79e7b | 564 | // detect SHM |
Info | 1:bbcba1a79e7b | 565 | mcugear->detect_module(fio); |
Info | 1:bbcba1a79e7b | 566 | //CLK for ratch(1), DigialOut(2-8) |
Info | 1:bbcba1a79e7b | 567 | |
Info | 1:bbcba1a79e7b | 568 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 569 | mcugear->savePinSetting(0, IO_MBED_P15, IO_REG_OUT_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 570 | mcugear->savePinSetting(1, IO_MBED_P16, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 571 | mcugear->savePinSetting(2, IO_MBED_P21, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 572 | mcugear->savePinSetting(3, IO_MBED_P22, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 573 | mcugear->savePinSetting(4, IO_MBED_P23, IO_REG_OUT_DIR, fio[4]); |
Info | 1:bbcba1a79e7b | 574 | mcugear->savePinSetting(5, IO_MBED_P24, IO_REG_OUT_DIR, fio[5]); |
Info | 1:bbcba1a79e7b | 575 | mcugear->savePinSetting(6, IO_MBED_P25, IO_REG_OUT_DIR, fio[6]); |
Info | 1:bbcba1a79e7b | 576 | mcugear->savePinSetting(7, IO_MBED_P26, IO_REG_OUT_DIR, fio[7]); |
Info | 1:bbcba1a79e7b | 577 | #endif |
Info | 1:bbcba1a79e7b | 578 | |
Info | 1:bbcba1a79e7b | 579 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 580 | //PTA1, PTA2, PTD4, PTA12, PTA4, PTA5, PTC8 |
Info | 1:bbcba1a79e7b | 581 | mcugear->savePinSetting(0, IO_MBED_PTA13, IO_REG_OUT_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 582 | mcugear->savePinSetting(1, IO_MBED_PTA1, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 583 | mcugear->savePinSetting(2, IO_MBED_PTA2, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 584 | mcugear->savePinSetting(3, IO_MBED_PTD4, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 585 | mcugear->savePinSetting(4, IO_MBED_PTA12, IO_REG_OUT_DIR, fio[4]); |
Info | 1:bbcba1a79e7b | 586 | mcugear->savePinSetting(5, IO_MBED_PTA4, IO_REG_OUT_DIR, fio[5]); |
Info | 1:bbcba1a79e7b | 587 | mcugear->savePinSetting(6, IO_MBED_PTA5, IO_REG_OUT_DIR, fio[6]); |
Info | 1:bbcba1a79e7b | 588 | mcugear->savePinSetting(7, IO_MBED_PTC8, IO_REG_OUT_DIR, fio[7]); |
Info | 1:bbcba1a79e7b | 589 | #endif |
Info | 1:bbcba1a79e7b | 590 | |
Info | 1:bbcba1a79e7b | 591 | #ifdef BOOST_MODE |
Info | 1:bbcba1a79e7b | 592 | mcugear->makeCircuit(); |
Info | 1:bbcba1a79e7b | 593 | #endif |
Info | 1:bbcba1a79e7b | 594 | |
Info | 1:bbcba1a79e7b | 595 | } |
Info | 1:bbcba1a79e7b | 596 | |
Info | 1:bbcba1a79e7b | 597 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 598 | //Simple universal module |
Info | 1:bbcba1a79e7b | 599 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 600 | void IOUni2M(MCUGear *mcugear){ |
Info | 1:bbcba1a79e7b | 601 | |
Info | 1:bbcba1a79e7b | 602 | uint8_t fio[12]; |
Info | 1:bbcba1a79e7b | 603 | // detect SHM |
Info | 1:bbcba1a79e7b | 604 | mcugear->detect_module(fio); |
Info | 1:bbcba1a79e7b | 605 | //CLK for ratch(1), DigialOut(2-8) |
Info | 1:bbcba1a79e7b | 606 | |
Info | 1:bbcba1a79e7b | 607 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 608 | mcugear->savePinSetting(0, IO_MBED_P9, IO_REG_IN_DIR, fio[0]); //input |
Info | 1:bbcba1a79e7b | 609 | mcugear->savePinSetting(1, IO_MBED_P10, IO_REG_IN_DIR, fio[1]); //input |
Info | 1:bbcba1a79e7b | 610 | mcugear->savePinSetting(2, IO_MBED_P15, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 611 | mcugear->savePinSetting(3, IO_MBED_P16, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 612 | mcugear->savePinSetting(4, IO_MBED_P21, IO_REG_OUT_DIR, fio[4]); |
Info | 1:bbcba1a79e7b | 613 | mcugear->savePinSetting(5, IO_MBED_P22, IO_REG_OUT_DIR, fio[5]); |
Info | 1:bbcba1a79e7b | 614 | mcugear->savePinSetting(6, IO_MBED_P23, IO_REG_OUT_DIR, fio[6]); |
Info | 1:bbcba1a79e7b | 615 | mcugear->savePinSetting(7, IO_MBED_P24, IO_REG_OUT_DIR, fio[7]); |
Info | 1:bbcba1a79e7b | 616 | |
Info | 1:bbcba1a79e7b | 617 | #endif |
Info | 1:bbcba1a79e7b | 618 | |
Info | 1:bbcba1a79e7b | 619 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 620 | //PTA1, PTA2, PTD4, PTA12, PTA4, PTA5, PTC8 |
Info | 1:bbcba1a79e7b | 621 | mcugear->savePinSetting(0, IO_MBED_PTB0, IO_REG_IN_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 622 | mcugear->savePinSetting(1, IO_MBED_PTB1, IO_REG_IN_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 623 | mcugear->savePinSetting(2, IO_MBED_PTA13, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 624 | mcugear->savePinSetting(3, IO_MBED_PTA1, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 625 | mcugear->savePinSetting(4, IO_MBED_PTA2, IO_REG_OUT_DIR, fio[4]); |
Info | 1:bbcba1a79e7b | 626 | mcugear->savePinSetting(5, IO_MBED_PTD4, IO_REG_OUT_DIR, fio[5]); |
Info | 1:bbcba1a79e7b | 627 | mcugear->savePinSetting(6, IO_MBED_PTA12, IO_REG_OUT_DIR, fio[6]); |
Info | 1:bbcba1a79e7b | 628 | mcugear->savePinSetting(7, IO_MBED_PTA4, IO_REG_OUT_DIR, fio[7]); |
Info | 1:bbcba1a79e7b | 629 | |
Info | 1:bbcba1a79e7b | 630 | #endif |
Info | 1:bbcba1a79e7b | 631 | |
Info | 1:bbcba1a79e7b | 632 | #ifdef BOOST_MODE |
Info | 1:bbcba1a79e7b | 633 | mcugear->makeCircuit(); |
Info | 1:bbcba1a79e7b | 634 | #endif |
Info | 1:bbcba1a79e7b | 635 | |
Info | 1:bbcba1a79e7b | 636 | } |
Info | 1:bbcba1a79e7b | 637 | |
Info | 1:bbcba1a79e7b | 638 | |
Info | 1:bbcba1a79e7b | 639 | |
Info | 1:bbcba1a79e7b | 640 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 641 | //Read from Multifunction module for 10bit AD mode |
Info | 1:bbcba1a79e7b | 642 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 643 | int read10bitAD(MCUGear *mcugear, int ch){ |
Info | 1:bbcba1a79e7b | 644 | //Multi-function module |
Info | 1:bbcba1a79e7b | 645 | int setCh = 0; |
Info | 1:bbcba1a79e7b | 646 | int getData; |
Info | 1:bbcba1a79e7b | 647 | |
Info | 1:bbcba1a79e7b | 648 | // mcugear->connectModule(); |
Info | 1:bbcba1a79e7b | 649 | |
Info | 1:bbcba1a79e7b | 650 | switch(ch){ |
Info | 1:bbcba1a79e7b | 651 | case 1: |
Info | 1:bbcba1a79e7b | 652 | setCh = 3; |
Info | 1:bbcba1a79e7b | 653 | break; |
Info | 1:bbcba1a79e7b | 654 | case 2: |
Info | 1:bbcba1a79e7b | 655 | setCh = 1; |
Info | 1:bbcba1a79e7b | 656 | break; |
Info | 1:bbcba1a79e7b | 657 | case 3: |
Info | 1:bbcba1a79e7b | 658 | setCh = 2; |
Info | 1:bbcba1a79e7b | 659 | break; |
Info | 1:bbcba1a79e7b | 660 | |
Info | 1:bbcba1a79e7b | 661 | default: |
Info | 1:bbcba1a79e7b | 662 | return -1; |
Info | 1:bbcba1a79e7b | 663 | } |
Info | 1:bbcba1a79e7b | 664 | |
Info | 1:bbcba1a79e7b | 665 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 666 | spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 667 | spi.format(16,0); |
Info | 1:bbcba1a79e7b | 668 | cs = 0; |
Info | 1:bbcba1a79e7b | 669 | spi.write(setCh); |
Info | 1:bbcba1a79e7b | 670 | cs = 1; |
Info | 1:bbcba1a79e7b | 671 | wait_us(1); |
Info | 1:bbcba1a79e7b | 672 | cs = 0; |
Info | 1:bbcba1a79e7b | 673 | getData = spi.write(0); |
Info | 1:bbcba1a79e7b | 674 | cs = 1; |
Info | 1:bbcba1a79e7b | 675 | wait_us(1); |
Info | 1:bbcba1a79e7b | 676 | #endif |
Info | 1:bbcba1a79e7b | 677 | |
Info | 1:bbcba1a79e7b | 678 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 679 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 680 | cs = 0; |
Info | 1:bbcba1a79e7b | 681 | spi.write(0x00); |
Info | 1:bbcba1a79e7b | 682 | spi.write(setCh); |
Info | 1:bbcba1a79e7b | 683 | cs = 1; |
Info | 1:bbcba1a79e7b | 684 | wait_us(1); |
Info | 1:bbcba1a79e7b | 685 | cs = 0; |
Info | 1:bbcba1a79e7b | 686 | getData = spi.write(0); |
Info | 1:bbcba1a79e7b | 687 | getData = (getData<<8)+spi.write(0); |
Info | 1:bbcba1a79e7b | 688 | cs = 1; |
Info | 1:bbcba1a79e7b | 689 | wait_us(1); |
Info | 1:bbcba1a79e7b | 690 | #endif |
Info | 1:bbcba1a79e7b | 691 | |
Info | 1:bbcba1a79e7b | 692 | |
Info | 1:bbcba1a79e7b | 693 | // mcugear->disconnectModule(); |
Info | 1:bbcba1a79e7b | 694 | // wait_ms(1); |
Info | 1:bbcba1a79e7b | 695 | return getData; |
Info | 1:bbcba1a79e7b | 696 | } |
Info | 1:bbcba1a79e7b | 697 | |
Info | 1:bbcba1a79e7b | 698 | #ifdef PWM_MODE |
Info | 1:bbcba1a79e7b | 699 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 700 | // Initialize PWM |
Info | 1:bbcba1a79e7b | 701 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 702 | void initPWM(MCUGear *mcugear, unsigned int Divider, unsigned int friquency, unsigned int duty0, unsigned int duty1, unsigned int duty2){ |
Info | 1:bbcba1a79e7b | 703 | |
Info | 1:bbcba1a79e7b | 704 | // mcugear->connectModule(); |
Info | 1:bbcba1a79e7b | 705 | |
Info | 1:bbcba1a79e7b | 706 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 707 | spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 708 | spi.format(16,0); |
Info | 1:bbcba1a79e7b | 709 | cs = 0; |
Info | 1:bbcba1a79e7b | 710 | //spi.write(4800);//Divider |
Info | 1:bbcba1a79e7b | 711 | spi.write(Divider);//Divider |
Info | 1:bbcba1a79e7b | 712 | cs = 1; |
Info | 1:bbcba1a79e7b | 713 | wait_us(1); |
Info | 1:bbcba1a79e7b | 714 | |
Info | 1:bbcba1a79e7b | 715 | cs = 0; |
Info | 1:bbcba1a79e7b | 716 | //spi.write(100);//friquency |
Info | 1:bbcba1a79e7b | 717 | spi.write(friquency);//friquency |
Info | 1:bbcba1a79e7b | 718 | cs = 1; |
Info | 1:bbcba1a79e7b | 719 | wait_us(1); |
Info | 1:bbcba1a79e7b | 720 | |
Info | 1:bbcba1a79e7b | 721 | cs = 0; |
Info | 1:bbcba1a79e7b | 722 | spi.write(duty0);//Duty0 |
Info | 1:bbcba1a79e7b | 723 | cs = 1; |
Info | 1:bbcba1a79e7b | 724 | wait_us(1); |
Info | 1:bbcba1a79e7b | 725 | |
Info | 1:bbcba1a79e7b | 726 | cs = 0; |
Info | 1:bbcba1a79e7b | 727 | spi.write(duty1);//Duty1 |
Info | 1:bbcba1a79e7b | 728 | cs = 1; |
Info | 1:bbcba1a79e7b | 729 | wait_us(1); |
Info | 1:bbcba1a79e7b | 730 | |
Info | 1:bbcba1a79e7b | 731 | cs = 0; |
Info | 1:bbcba1a79e7b | 732 | spi.write(duty2);//Duty2 |
Info | 1:bbcba1a79e7b | 733 | cs = 1; |
Info | 1:bbcba1a79e7b | 734 | wait_us(1); |
Info | 1:bbcba1a79e7b | 735 | #endif |
Info | 1:bbcba1a79e7b | 736 | |
Info | 1:bbcba1a79e7b | 737 | |
Info | 1:bbcba1a79e7b | 738 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 739 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 740 | cs = 0; |
Info | 1:bbcba1a79e7b | 741 | spi.write(Divider >> 8);//Divider |
Info | 1:bbcba1a79e7b | 742 | spi.write(0x00FF & Divider);//Divider |
Info | 1:bbcba1a79e7b | 743 | cs = 1; |
Info | 1:bbcba1a79e7b | 744 | wait_us(1); |
Info | 1:bbcba1a79e7b | 745 | |
Info | 1:bbcba1a79e7b | 746 | cs = 0; |
Info | 1:bbcba1a79e7b | 747 | spi.write(friquency >> 8);//friquency |
Info | 1:bbcba1a79e7b | 748 | spi.write(0x00FF & friquency);//friquency |
Info | 1:bbcba1a79e7b | 749 | cs = 1; |
Info | 1:bbcba1a79e7b | 750 | wait_us(1); |
Info | 1:bbcba1a79e7b | 751 | |
Info | 1:bbcba1a79e7b | 752 | cs = 0; |
Info | 1:bbcba1a79e7b | 753 | spi.write(duty0 >> 8);//Duty0 |
Info | 1:bbcba1a79e7b | 754 | spi.write(0x00FF & duty0);//Duty0 |
Info | 1:bbcba1a79e7b | 755 | cs = 1; |
Info | 1:bbcba1a79e7b | 756 | wait_us(1); |
Info | 1:bbcba1a79e7b | 757 | |
Info | 1:bbcba1a79e7b | 758 | cs = 0; |
Info | 1:bbcba1a79e7b | 759 | spi.write(duty1 >> 8);//Duty1 |
Info | 1:bbcba1a79e7b | 760 | spi.write(0x00FF & duty1);//Duty1 |
Info | 1:bbcba1a79e7b | 761 | cs = 1; |
Info | 1:bbcba1a79e7b | 762 | wait_us(1); |
Info | 1:bbcba1a79e7b | 763 | |
Info | 1:bbcba1a79e7b | 764 | cs = 0; |
Info | 1:bbcba1a79e7b | 765 | spi.write(duty2 >> 8);//Duty2 |
Info | 1:bbcba1a79e7b | 766 | spi.write(0x00FF & duty2);//Duty2 |
Info | 1:bbcba1a79e7b | 767 | cs = 1; |
Info | 1:bbcba1a79e7b | 768 | wait_us(1); |
Info | 1:bbcba1a79e7b | 769 | #endif |
Info | 1:bbcba1a79e7b | 770 | |
Info | 1:bbcba1a79e7b | 771 | // mcugear->disconnectModule(); |
Info | 1:bbcba1a79e7b | 772 | } |
Info | 1:bbcba1a79e7b | 773 | |
Info | 1:bbcba1a79e7b | 774 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 775 | // changing PWM friquency |
Info | 1:bbcba1a79e7b | 776 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 777 | void PWMfriq(MCUGear *mcugear, unsigned int friquency){ |
Info | 1:bbcba1a79e7b | 778 | |
Info | 1:bbcba1a79e7b | 779 | // mcugear->connectModule(); |
Info | 1:bbcba1a79e7b | 780 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 781 | spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 782 | spi.format(16,0); |
Info | 1:bbcba1a79e7b | 783 | cs = 0; |
Info | 1:bbcba1a79e7b | 784 | spi.write(friquency);//friquency |
Info | 1:bbcba1a79e7b | 785 | cs = 1; |
Info | 1:bbcba1a79e7b | 786 | wait_us(1); |
Info | 1:bbcba1a79e7b | 787 | #endif |
Info | 1:bbcba1a79e7b | 788 | |
Info | 1:bbcba1a79e7b | 789 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 790 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 791 | cs = 0; |
Info | 1:bbcba1a79e7b | 792 | spi.write(friquency >> 8);//Divider |
Info | 1:bbcba1a79e7b | 793 | spi.write(0x00FF & friquency);//Divider |
Info | 1:bbcba1a79e7b | 794 | cs = 1; |
Info | 1:bbcba1a79e7b | 795 | wait_us(1); |
Info | 1:bbcba1a79e7b | 796 | #endif |
Info | 1:bbcba1a79e7b | 797 | |
Info | 1:bbcba1a79e7b | 798 | // mcugear->disconnectModule(); |
Info | 1:bbcba1a79e7b | 799 | } |
Info | 1:bbcba1a79e7b | 800 | |
Info | 1:bbcba1a79e7b | 801 | void PWMDuty(MCUGear *mcugear, int ch, unsigned int Duty){ |
Info | 1:bbcba1a79e7b | 802 | |
Info | 1:bbcba1a79e7b | 803 | //data format |
Info | 1:bbcba1a79e7b | 804 | //15-12:setting(Header) |
Info | 1:bbcba1a79e7b | 805 | // 0 :stop PWM out |
Info | 1:bbcba1a79e7b | 806 | // 1 :start PWM out |
Info | 1:bbcba1a79e7b | 807 | // 2 :Frequency setting |
Info | 1:bbcba1a79e7b | 808 | // 3 :Duty0 setting |
Info | 1:bbcba1a79e7b | 809 | // 4 :Duty1 setting |
Info | 1:bbcba1a79e7b | 810 | // 5 :Duty2 setting |
Info | 1:bbcba1a79e7b | 811 | // other :stop PWM out |
Info | 1:bbcba1a79e7b | 812 | //11-0:Data |
Info | 1:bbcba1a79e7b | 813 | |
Info | 1:bbcba1a79e7b | 814 | // mcugear->connectModule(); |
Info | 1:bbcba1a79e7b | 815 | |
Info | 1:bbcba1a79e7b | 816 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 817 | spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 818 | spi.format(16,0); |
Info | 1:bbcba1a79e7b | 819 | cs = 0; |
Info | 1:bbcba1a79e7b | 820 | switch (ch){ |
Info | 1:bbcba1a79e7b | 821 | case 1: |
Info | 1:bbcba1a79e7b | 822 | spi.write(0x3000 + Duty); //Duty0 |
Info | 1:bbcba1a79e7b | 823 | case 2: |
Info | 1:bbcba1a79e7b | 824 | spi.write(0x4000 + Duty); //Duty0 |
Info | 1:bbcba1a79e7b | 825 | case 3: |
Info | 1:bbcba1a79e7b | 826 | spi.write(0x5000 + Duty); //Duty0 |
Info | 1:bbcba1a79e7b | 827 | default: |
Info | 1:bbcba1a79e7b | 828 | break; |
Info | 1:bbcba1a79e7b | 829 | } |
Info | 1:bbcba1a79e7b | 830 | |
Info | 1:bbcba1a79e7b | 831 | cs = 1; |
Info | 1:bbcba1a79e7b | 832 | #endif |
Info | 1:bbcba1a79e7b | 833 | |
Info | 1:bbcba1a79e7b | 834 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 835 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 836 | cs = 0; |
Info | 1:bbcba1a79e7b | 837 | switch (ch){ |
Info | 1:bbcba1a79e7b | 838 | case 1: |
Info | 1:bbcba1a79e7b | 839 | spi.write((0x3000 + Duty) >> 8);//Divider |
Info | 1:bbcba1a79e7b | 840 | spi.write(0x00FF & (0x3000 + Duty));//Divider |
Info | 1:bbcba1a79e7b | 841 | case 2: |
Info | 1:bbcba1a79e7b | 842 | spi.write((0x4000 + Duty) >> 8);//Divider |
Info | 1:bbcba1a79e7b | 843 | spi.write(0x00FF & (0x4000 + Duty));//Divider |
Info | 1:bbcba1a79e7b | 844 | case 3: |
Info | 1:bbcba1a79e7b | 845 | spi.write((0x5000 + Duty) >> 8);//Divider |
Info | 1:bbcba1a79e7b | 846 | spi.write(0x00FF & (0x5000 + Duty));//Divider |
Info | 1:bbcba1a79e7b | 847 | default: |
Info | 1:bbcba1a79e7b | 848 | break; |
Info | 1:bbcba1a79e7b | 849 | } |
Info | 1:bbcba1a79e7b | 850 | |
Info | 1:bbcba1a79e7b | 851 | cs = 1; |
Info | 1:bbcba1a79e7b | 852 | #endif |
Info | 1:bbcba1a79e7b | 853 | |
Info | 1:bbcba1a79e7b | 854 | // mcugear->disconnectModule(); |
Info | 1:bbcba1a79e7b | 855 | |
Info | 1:bbcba1a79e7b | 856 | } |
Info | 1:bbcba1a79e7b | 857 | |
Info | 1:bbcba1a79e7b | 858 | |
Info | 1:bbcba1a79e7b | 859 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 860 | // Stop PWM |
Info | 1:bbcba1a79e7b | 861 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 862 | void StopPWM(MCUGear *mcugear){ |
Info | 1:bbcba1a79e7b | 863 | |
Info | 1:bbcba1a79e7b | 864 | // mcugear->connectModule(); |
Info | 1:bbcba1a79e7b | 865 | |
Info | 1:bbcba1a79e7b | 866 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 867 | spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 868 | spi.format(16,0); |
Info | 1:bbcba1a79e7b | 869 | cs = 0; |
Info | 1:bbcba1a79e7b | 870 | spi.write(0x1000);//stop |
Info | 1:bbcba1a79e7b | 871 | cs = 1; |
Info | 1:bbcba1a79e7b | 872 | #endif |
Info | 1:bbcba1a79e7b | 873 | |
Info | 1:bbcba1a79e7b | 874 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 875 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 876 | cs = 0; |
Info | 1:bbcba1a79e7b | 877 | spi.write(0x10);//Duty1 |
Info | 1:bbcba1a79e7b | 878 | spi.write(0x00);//Duty1 |
Info | 1:bbcba1a79e7b | 879 | cs = 1; |
Info | 1:bbcba1a79e7b | 880 | #endif |
Info | 1:bbcba1a79e7b | 881 | |
Info | 1:bbcba1a79e7b | 882 | // mcugear->disconnectModule(); |
Info | 1:bbcba1a79e7b | 883 | } |
Info | 1:bbcba1a79e7b | 884 | |
Info | 1:bbcba1a79e7b | 885 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 886 | // Start PWM |
Info | 1:bbcba1a79e7b | 887 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 888 | void StartPWM(MCUGear *mcugear){ |
Info | 1:bbcba1a79e7b | 889 | |
Info | 1:bbcba1a79e7b | 890 | // mcugear->connectModule(); |
Info | 1:bbcba1a79e7b | 891 | |
Info | 1:bbcba1a79e7b | 892 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 893 | spi.frequency(1000000); //1MHz |
Info | 1:bbcba1a79e7b | 894 | spi.format(16,0); |
Info | 1:bbcba1a79e7b | 895 | cs = 0; |
Info | 1:bbcba1a79e7b | 896 | spi.write(0x6000);//start |
Info | 1:bbcba1a79e7b | 897 | cs = 1; |
Info | 1:bbcba1a79e7b | 898 | #endif |
Info | 1:bbcba1a79e7b | 899 | |
Info | 1:bbcba1a79e7b | 900 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 901 | spi.frequency(2000000); //1MHz for KL25Z |
Info | 1:bbcba1a79e7b | 902 | cs = 0; |
Info | 1:bbcba1a79e7b | 903 | spi.write(0x60);//start |
Info | 1:bbcba1a79e7b | 904 | spi.write(0x00);//start |
Info | 1:bbcba1a79e7b | 905 | cs = 1; |
Info | 1:bbcba1a79e7b | 906 | #endif |
Info | 1:bbcba1a79e7b | 907 | |
Info | 1:bbcba1a79e7b | 908 | // mcugear->disconnectModule(); |
Info | 1:bbcba1a79e7b | 909 | } |
Info | 1:bbcba1a79e7b | 910 | |
Info | 1:bbcba1a79e7b | 911 | |
Info | 1:bbcba1a79e7b | 912 | #endif |
Info | 1:bbcba1a79e7b | 913 | |
Info | 1:bbcba1a79e7b | 914 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 915 | //IO setting for Multifunction module |
Info | 1:bbcba1a79e7b | 916 | //---------------------------------------------------------------------------------- |
Info | 1:bbcba1a79e7b | 917 | void IOSimpleSPI(MCUGear *mcugear){ |
Info | 1:bbcba1a79e7b | 918 | uint8_t fio[12]; |
Info | 1:bbcba1a79e7b | 919 | mcugear->detect_module(fio); |
Info | 1:bbcba1a79e7b | 920 | |
Info | 1:bbcba1a79e7b | 921 | #ifdef LPC1768_mbed |
Info | 1:bbcba1a79e7b | 922 | //miso(p6),mosi(p5),sck(p7),cs(p8) |
Info | 1:bbcba1a79e7b | 923 | mcugear->savePinSetting(0, IO_MBED_P6, IO_REG_IN_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 924 | mcugear->savePinSetting(1, IO_MBED_P5, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 925 | mcugear->savePinSetting(2, IO_MBED_P7, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 926 | mcugear->savePinSetting(3, IO_MBED_P8, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 927 | #endif |
Info | 1:bbcba1a79e7b | 928 | |
Info | 1:bbcba1a79e7b | 929 | #ifdef FS_KL25Z |
Info | 1:bbcba1a79e7b | 930 | //miso(PTD3),mosi(PTD2),sck(PTD1),cs(PTD0) |
Info | 1:bbcba1a79e7b | 931 | mcugear->savePinSetting(0, IO_MBED_PTD3, IO_REG_IN_DIR, fio[0]); |
Info | 1:bbcba1a79e7b | 932 | mcugear->savePinSetting(1, IO_MBED_PTD2, IO_REG_OUT_DIR, fio[1]); |
Info | 1:bbcba1a79e7b | 933 | mcugear->savePinSetting(2, IO_MBED_PTD1, IO_REG_OUT_DIR, fio[2]); |
Info | 1:bbcba1a79e7b | 934 | mcugear->savePinSetting(3, IO_MBED_PTD0, IO_REG_OUT_DIR, fio[3]); |
Info | 1:bbcba1a79e7b | 935 | #endif |
Info | 1:bbcba1a79e7b | 936 | |
Info | 1:bbcba1a79e7b | 937 | #ifdef BOOST_MODE |
Info | 1:bbcba1a79e7b | 938 | mcugear->makeCircuit(); |
Info | 1:bbcba1a79e7b | 939 | #endif |
Info | 1:bbcba1a79e7b | 940 | } |
Info | 1:bbcba1a79e7b | 941 | |
Info | 1:bbcba1a79e7b | 942 | //end of sample functions---------------------------------------------------- |
Info | 1:bbcba1a79e7b | 943 | |
Info | 1:bbcba1a79e7b | 944 |