Jump to content
43oh

Mac

Members
  • Content Count

    246
  • Joined

  • Last visited

  • Days Won

    7

Reputation Activity

  1. Like
    Mac got a reaction from simpleavr in TMS0803/5 Emulating Calculator Build   
    I hope this updated wiring diagram for v2 board may be useful.
     
    Cheerful regards, Mike, K8LH
     
     

  2. Like
    Mac reacted to simpleavr in TMS0803/5 Emulating Calculator Build   
    @@Mac
     
    Thanks for trying to decode my badly organized schematic.
     
    Comparing yours w/ what I had put out review wrongs on my side. I had mistaken the "negative" led be P2.2 and P2.3, It should be as what you noted (I assume you had observed it from the Fritzing generated schematic, but couldn't figure out the polarity as I just used a two pin header to represent the LED). I will correct all the ASCII schematics as soon as I can.
     
    Checking w/ the code reviewed that for my PCB they should be P1.2 anode, P1.3 cathode, to match how I am driving it in the code.
     
            if (g_state&ST_MINUS) {             P1OUT = BIT3;             P1REN = 0x00;             P1DIR = BIT2|BIT3;             stays = 0x1c;         }//if Of course it will also do no harm if you have it reversed, we could just change the code.
     
    As I mentioned, I do the layout based on routing convenience and the source code has been organized so that it will work by changing #defines. So you should not worry too much.
     
    I had not check the row / column / scan line connections but as long as you observe
     
    P1 for segments P2 for digits Segments (P1) also used for scanning.  
    You can just adjust these #defines to fit your PCB layout
     
    #define SEG_A_P1    (1<<2) #define SEG_B_P1    (1<<3) #define SEG_C_P1    (1<<7) #define SEG_D_P1    (1<<1) #define SEG_E_P1    (1<<5) #define SEG_F_P1    (1<<4) #define SEG_G_P1    (1<<0) #define SEG_d_P1    (1<<6) ,,, #define DIGIT_0_P2  (1<<0) #define DIGIT_1_P2  (1<<6) #define DIGIT_2_P2  (1<<1) #define DIGIT_3_P2  (1<<2) #define DIGIT_4_P2  (1<<5) #define DIGIT_5_P2  (1<<7) #define DIGIT_6_P2  (1<<4) #define DIGIT_7_P2  (1<<3) For the 2 versions of PCBs I did, they are slightly different and I only need to change one of the #defines.
     
    With different driving PINs used, the "raw" key scan-codes can be different. They have to be re-mapped in this hwkey_map matrix
      Below I show the example of the mapping of digit 0
     
    You can see the raw scan-code at the commented '0' location be 0x63, this matched my V2 PCB design where the zero button is connected between P1.3 and P1.6, thus 0x36 or 0x63 from our scanning function. We scan from MSB to LSB so all the raw scan-codes start w/ the higher value pin 1st, thus result in 0x63.
     
    You can see the mapping array maps a value of 0x29, which is the raw scan-code of the TMS080x mcu. The TMS chip has an extra 4 scan-lines and the value it reads into it's register is in the range of 0x11 to 0x19 and 0x21 to 0x29. We have to map to these values so that the micro-code emulator can see the keys as like in the old calculators.
     
    So if you have a different layout on buttons, you can just rework the mapping array and change this part of the code. You just need to make sure you are multiplexing on P1 pins only.
     
    static const char hwkey_map[] = {       // converts to tms080x scan code   #ifdef V2 /*   [60]  [73]    ^E[20]Cx[62] /[74]     7[10] 8[61] 9[21]xC[43]     4[40] 5[64] 6[42]/-[41]     1[70] 2[76] 3[72]++[71]    V0[30] 0[63]E.[32]-=[31] */ //     0     1     2     3     4     5     6     7     0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1     0x27, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 2     0x29, 0x22, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, // 3     0x14, 0x24, 0x16, 0x21, 0x00, 0x00, 0x00, 0x00, // 4     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 5     0x00, 0x18, 0x25, 0x29, 0x15, 0x00, 0x00, 0x00, // 6     0x11, 0x23, 0x13, 0x00, 0x26, 0x00, 0x12, 0x00, // 7     /*         KN 1 2 3 4 5 6 7 8 9    // 11...19         KO C = + - x / E . 0    // 21...29         KO C v + - / x ^ E 0    // 21...29  (sinclair scientific)     */      
    What kind of software did you use to generate the schematic? It looks simple and very clear and I would like to try it.
     
    Let me know if you have more questions, they will help to debug the documentation and the design.
     
     
     
     
  3. Like
    Mac reacted to simpleavr in EZ430Trainer - a retro style single board computer   
    We avoid the conflict by choosing to use the "segment" lines, each segment is connected to all four digits via a two leds (in opposition polarity).
     
    When no button is depressed, we do LEDs multiplexing by going a digit + 8 segment light ups one by one, 4 times for 4 each digit (common anode), then we reverse the polarity and do the same for the next 4 digits (common cathode).
     
    Since we are driving the LEDs direct (w/o resistors), we pulse them w/ on on off on... cycles to make the desire brightness and not to blow the LEDs.
     
    During off cycles, we put the digit lines to HI-Z (kind of like not connected to anything) and we use the 8 segment lines to "scan" for key-presses.
     
    We would pick one segment line is the "source", set it to output HI, and read the other 7 segment lines, if any one of these 7 segment lines read HI, we can map out which button is pressed.
     
    We can than move on an use another segment line as the "source", set it to HI, and read the rest of the segment lines.
     
    This gives us the following possible combos
     
    A as source, measure B,C,D,E,F,G,H
    B as source, measure C,D,E,F,G,H (no A as done in last row scan) 
     
    This gives us a total of 7+6+5+4+3+2+1 or 28 buttons, in my PCB, I make available up to 22 of them.
     
    We only scan buttons at the "off" cycles of the LED multiplexing only, which is enough as the multiplexing is fast (when our eyes are slow).
     
    But when a button is pressed, the code waits for it to be released before taking action. This is need and this is why you will notice that when depressed, the LEDs blanks out in the video.
     
    The fact is the key press did not "interrupt" the LED multiplexing, but we turn off the LEDs to scan the keys every once a while. And if a key is kept depressed, the LED multiplexing remains in "off" state.
  4. Like
    Mac got a reaction from Kent in LaunchPad IR Receiver   
    Hi Rob,
     
    I wonder if your SIRC remotes generate multiple output command packets per key press, and if so, how you might have worked around it? It seems even the quickest button press on my Sony remote generates three (3) output packets at around 45-msec intervals. I ended up using a repeat timer to filter out the extra commands, which also allows single or repeat operation. I'd love to hear how you did it.
     
    If you or other members are interested, I use a slightly different method for decoding SIRC commands on my PIC projects. I simply count the number of 100-usec intervals the SIRC decoder IC output is low (24, 12, or 6). It's probably not the most robust or noise immune method but it works extremely well in my environment whether I'm using it in a an isochronous loop in main or in an ISR (interrupt service routine). I can hardly wait to try it on the MSP430 but with mid-terms next week I've had very little time to study the MSP430 Family Reference Manual.
     
    Cheerful regards, Mike
     

    /* * Mike McLaren's PIC SIRC decoder (100-usec intervals) */ if(reptmr) // if repeat timer running { reptmr--; // decrement it } if(irpin == 0) // if IR pin lo { count++; // inc 100-usec counter } else // if IR pin hi { if(count) // if new bit received { if(bitctr) // if rx-in-progress { sirc >>= 1; // make room for new bit sirc.12 = 0; // set new bit to '0' if(count > 900/100) // if a '1' bit (>900-us) sirc.12 = 1; // set new bit to '1' if(--bitctr == 0) // if last bit { if(reptmr == 0) // if repeat timer timed out { sonycmd = sirc; // pass new command to main reptmr = 2500; // reset 250-ms repeat timer } // } // } // else // not rx-in-progress so { if(count > 2000/100) // if new 'start' bit (>2000-us) bitctr = 12; // set rx-in-progress flag } count = 0; // clear 100-usec counter } }
  5. Like
    Mac got a reaction from Rei Vilo in LaunchPad Pin Assignment   
    Is PUSH2 incorrectly shown connected to P1_5 on all of these pictures instead of on P1_3?
  6. Like
    Mac got a reaction from cde in LaunchPad Pin Assignment   
    Is PUSH2 incorrectly shown connected to P1_5 on all of these pictures instead of on P1_3?
  7. Like
    Mac got a reaction from RobG in LaunchPad Pin Assignment   
    Is PUSH2 incorrectly shown connected to P1_5 on all of these pictures instead of on P1_3?
  8. Like
    Mac reacted to Rei Vilo in SOLVED! DHT22 Temp & RH% One-Wire Sensor on Energia   
    ...and a picture!
     

     
    The DHT22 sensor is at the bottom-right part of the proto-board. The LCD is a Nokia 5110 compatible. Temperature and humidity are displayed with a double-sized font.
  9. Like
    Mac reacted to kylej1050 in Swamp Cooler Automatic Purge Pump   
    This is the code I used for my automatic swamp cooler purge pump project. Uses a CdS cell to detect daylight so the cooler can run once at sunrise and once at sunset.
     
    Not all that fancy, but didn't need to be to get the job done. These delays are setup for a 16MHz processor, delays are funny in Energia for 1MHz processors but that'll get fixed and the delays will be a non-issue for the 2231.
     
    There is no sleep mode which is fine since even without it the circuit still runs less than the 317L's minimum current recommendation between the 2231 and light circuit, requiring me to add a 1K across the regulated rail. I just have it all in a control box atop the blower assembly inside the cooler.
     
    Input circuit is a CdS cell between V+ and P1_6 and a 2K pull down to gnd poking out a hole at the top. Output goes to a 12v relay via 2N2222 and 1K base resistor.
     

    /* This program is for a swamp cooler purge pump. The pump is activated at sunrise and sunset and runs for 45 seconds. This time is determined by the amount of time it takes for the purge pump to run without depriming main cooler pump. There is a minimum 12hr delay between purge cycles except for powerup, which will enable the pump for 30 seconds each time. */ const int relayOutput = P1_0, CdSInput = A5; int dayTrigger = 0, nightTrigger = 0; int ADCInput = 0; unsigned int lastRunCounter = 0, runTime = 0; const unsigned int lastRunMinimum = 43200, runTimeMax = 45, ADCInputThresh = 255; void setup() { pinMode(relayOutput, OUTPUT); digitalWrite(relayOutput, HIGH); while(runTime < 30) { delay(1000); runTime++; } digitalWrite(relayOutput, LOW); runTime = 0; } void loop() { ADCInput = analogRead(A5); if(ADCInput > ADCInputThresh && lastRunCounter > lastRunMinimum && dayTrigger == 0) { digitalWrite(relayOutput, HIGH); while(runTime < runTimeMax) { delay(1000); runTime++; } digitalWrite(relayOutput, LOW); runTime = 0; dayTrigger = 1; nightTrigger = 0; lastRunCounter = 0; } if(ADCInput < ADCInputThresh && lastRunCounter > lastRunMinimum && nightTrigger == 0) { digitalWrite(relayOutput, HIGH); while(runTime < runTimeMax) { delay(1000); runTime++; } digitalWrite(relayOutput, LOW); runTime = 0; nightTrigger = 1; dayTrigger = 0; lastRunCounter = 0; } delay(1000); lastRunCounter++; }
     
    772 bytes total memory used. Still got over half on the 2231 left to play with!
  10. Like
    Mac reacted to energia in Up we go   
    I would like to dedicate my first post on this forum to all the Energia team members who have supporting me in the first hours of the project. Without their support Energia would not have been possible.
     
    A special thanks to Rei Vilo and Rickta59 for their invaluable contribution.
     
    robertinant
  11. Like
    Mac got a reaction from tech_juggernaut in LaunchPad controlling up to 8 RC Servos   
    Hi Rob,
     
    May I ask how many servo steps between 1 and 2 ms, please? Is it 125 steps with 8-us resolution?
     
    TIA, Mike...
  12. Like
    Mac got a reaction from gatImmusepete in Getting into HAM Radio. Need some help   
    I would also recommend checking out at least a couple local clubs. You'll find a great mix of interests and personalities. Field Day is always fun. Tower rasing parties are fun. The QRP groups seem to do a lot in the way of home-brew projects. SDR (software defined radio) is pretty exciting stuff.
     

     
    My HF station includes an Icom 756PRO-II (above), an old 500w Heathkit SB-200 amplifier, a 5-band (20 thru' 10) Quad at 50 feet, and a ladder-line fed inverted vee for the 160 through 30 meter bands. I enjoy CW, SSB, digital modes, and DX (long distance) contacts (318 countries confirmed).
     
    Good luck in your studies...
     
    Very 73, Mike McLaren, K8LH
  13. Like
    Mac got a reaction from Econiunioks in Dallas/Maxim One Wire Library   
    Hi oPossum (Kevin?),
     
    Combining read/write bit "slot" functions is incredibly insightful. Bravo! After looking at the separate read and write routines on an old DS18B20 + PIC 10F200 project, combining the routines seemed embarrassingly obvious (lol). Anyway, I can't wait to try it out. Combining the routines saves eight (8) words of program memory which is pretty significant on a 10F200 with only 255 words of program memory (lol). Since you're a PIC guy too, I thought you might appreciate seeing the (untested) results;
     
    Thank you!!! Regards, Mike
     

    ; ; Ow.rwByte, send byte in WREG. send 0b11111111 to read a byte ; with read result in 'OwByte'. ; Mike McLaren, K8LH radix dec Ow.rwByte movwf OwByte ; movlw 8 ; movwf BitCtr ; rrf OwByte,W ; put b0 in Carry rwloop call Ow.rwBit ; rrf OwByte,F ; decfsz BitCtr,F ; done (all 8 bits)? goto rwloop ; no, loop, else retlw 0 ; exit ; ; Ow.rwBit (4..32 MHz clock), input = carry ('1' to read ; a bit). 'read' bit result in carry. ; radix dec Ow.rwBit movlw MaskLo ; start 60 us rw slot tris GPIO ; falling edge 0 us goto $+1 ; goto $+1 ; skpnc ; skip if bit = '0', else movlw MaskHi ; mask to release buss tris GPIO ; low pulse is 1..8 us uDlyCy (14*usecs-8) ; 14 us minus 8 cycles btfss owpin ; sample owpin at exactly 14 us clrc ; clear Carry if '0' uDlyCy (47*usecs-3) ; balance of 60 us slot movlw MaskHi ; mask to release buss tris GPIO ; read/write slot ends at 61 us retlw rombuffer ; for search rom routine ;
  14. Like
    Mac got a reaction from nuetron in TI 1988 TTL Logic Data Book -- $0.10 (incl shpg)   
    Just in case anyone is interested... TI is offering the classic 1988 TTL Logic Hand Book for 10 cents, including shipping. order here
     

  15. Like
    Mac got a reaction from larsie in Paper Silkscreen for Radio Shack Proto Boards   
    After seeing a bunch of guys doing this over the last year, I finally gave it a try yesterday. I created a board in DipTrace with the precise dimensions for the little 1.8" by 2.8" Radio Shack prototype board and I printed the silkscreen layer as an XPS file. Then I printed it out onto paper while at school yesterday. Last night I put plastic tape on both sides, cut it out, and glued it onto the prototype board. Results don't look bad, even if I do say so myself (apologies for the poor quality picture).
     
    Cheerful regards, Mike


  16. Like
    Mac got a reaction from bluehash in Paper Silkscreen for Radio Shack Proto Boards   
    It works. Yippee! The circuit on the right side of the board with the 8 pin device is my one pin serial LCD interface (which would normally be designed as a separate LCD backpack).
     
    With minor changes (silkscreen and wiring), I believe this PIC prototyping board could be used with 14 and 20 pin MSP430 devices.
     
    Happy Holidays everyone...
     
    Mike

  17. Like
    Mac got a reaction from noexec in Compact async serial tx   
    In assembly language programs, how about storing const strings, two characters per word, inline with your code? There will be two (2) words overhead for each string plus a one time cost of fourteen (14) words for a PutStr subroutine. The subroutine pulls the string address from the stack, prints the string, then returns to the instruction immediately following the inline string. This method should save a bunch of memory when you have more than one const string to print.
     
    Food for thought. Kind regards, Mike
     

    call #PutStr ; print "in-line" const string .char "Test",10,13,0 ; "text" + + + 0 terminator

    PutStr ; { Mike McLaren } 14 words mov.w @SP, R9 ; copy return addr to R9 bump mov.b @R9+, R12 ; copy string char to R12 tst.b R12 ; end of string? jz wrap ; yes, branch, else call #Put232 ; output the character and jmp bump ; loop wrap bit.b #1, R9 ; an odd return address? jz exit ; no, branch, else inc.w R9 ; force word boundary exit mov.w R9, 0(SP) ; update the return address ret ; ret to 1st instruct after string
  18. Like
    Mac reacted to pine in New chips shipping with the LaunchPad?   
    Sure
     

     

     

  19. Like
    Mac reacted to pine in New chips shipping with the LaunchPad?   
    Oh my goodness! Just read this post and rushed to open the 3 LP just arrived ealier this week, and yes they are the 2553 and 2452, the board version is 1.5, and the headers are soldered (male headers)
     
    Happy!
     

  20. Like
    Mac got a reaction from bluehash in Free (local SE Michigan) Decwriter LA36   
    My wife handed me a big ole' box of fan-fold greenbar paper (14" wide, 8.5" high) and asked me to toss it into the recycle bin which reminded me of the DecWriter LA36 teletype which has been sitting in the garage for about 20 years. My kids had so much fun typing on it when they were toddlers. Anyway, I was just wondering if anyone wanted it? I understand that Ham radio operators used to use teletype machines for RTTY mode back in the old days and I guess the DecWriter was considered a gem compared to the ASR and KSR series machines. By the time I got my license I was doing RTTY, PSK31, and all of the other "digital" modes using my PC and soundcard.
     
    Happy Holidays everyone.
     
    Cheerful regards, Mike, K8LH

  21. Like
    Mac reacted to simpleavr in TI Launchpad plays Bad Apple   
    this is my entry to 2011 Nov/Dec POTM.
     
    been a while since my last project. the "bad apple" sound and sight reminds me of days when i spend afternoons in video arcade shop/parlor/institute? wasting my time/life. hope u enjoy.
     
    this is not an original project, rather a mesh up of what i can google for my target toy instrument. original source / site are credited in the source code and mentioned.
     



     
    description
     
    . reproduction of the internet meme "bad apple" sound and sight, in a self contained device
    . ti launchpad / msp430 low end device demo
    . msp430 spi usage, bit-bang style, on two devices
    . lcd module access demonstrated
    . sd / mmc low level access demonstrated
    . polyphonic tone generation via pwm demonstrated
     

     
    schematic
     

    // MSP430F20x2/3 ----------o--------------o Audio out // ----------------- | | o // /|\| XIN|- | --- | // | | | .-. --- 10-500nF | // --|RST XOUT|- | | 1-10K | | // | | |_| |--------------- // LED <-|P1.0 | | ___ // | | | /// SD / MMC card /|\ // | pwm out P2.6|----- --------------------- | // | | | Vcc 4|--- // | as CS P1.7|-------------->|1 CS, select device | // | as MOSI P1.6|<--------------|7 MISO, data out | // | | ----------->|2 MOSI, data in | // | | | --------->|5 CLK, spi clock | // | | | | | Gnd 3|--- // | | | | --------------------- | // | | | | --- // | | | | Nokia 5110 breadout /// // | | | | ----------------------------- // | as SCLK P1.1|---|-o->|7 SCLK, spi clock | // | as MISO P1.2|---o--->|6 MOSI, data in | // | as D/C P1.3|------->|5 D/C, data or control | // | as RST P1.4|------->|4 RST, reset, low active | // | as SCE P1.5|------->|3 SCE, select , low active | /|\ // | | ----|2 Gnd | | // | | | | Vcc 1|--- // --- ----------------------------- // /// // // SD (back side) Micro-SD (back side) // __________________ __________________ // / 1 2 3 4 5 6 7 8 | 1. CS .. SEL / 1 2 3 4 5 6 7 8 | 1. NC // |9 | 2. DATAIN .. SDO | | 2. CS .. SEL // | | 3. GND .. Gnd | | 3. DATAIN .. SDO // | S O - + C I | 4. 3.3V .. Vcc | S O + C - I | 4. 3.3V .. Vcc // | | 5. CLK .. Clk | | 5. CLK .. Clk // | | 6. GND/NC .. Gnd | | 6. GND/NC // | | 7. DATAOUT .. SDI | | 7. DATAOUT .. SDI // | | 8. DAT1 | | 8. DAT1 // | | 9. DAT2 | | 9. DAT2
    the circuit is consist of three modules.
     
    . a sd / mmc module that reads content from sd / mmc card
    . a lcd module that show video on nokia 7110 or 5110 lcds
    . a polyphonic pwm output implementation, 8 channels are used in this project
    . the sd / mmc module and the lcd module shares some pins
    . both sd / mmc module and the lcd module are isolated and can be included in other projects
    . the core part of the code implements pwm sound and controls timing for content reads and displays
     
    firmware
     
    the firmware was done under ubuntu 11.10 w/ mspgcc4 + mspdebug as programmer. it is also test built under windows 7 with cygwin environment, mspgcc4 is also used and a MSP430Flasher.exe (command line programmer released by TI) is used to program the launchpad. it should build also w/ CCS as i had compiler directives to switch code portions. however i did not verify, you are on your own if you are on CCS or IAR.
     
    the are additional details / options that you can tweak, they are explained in the source code. they are not listed here as you only need them if you built the project.
     
    content generation
     
    data content for both the video and sound can be created via the supplied zcontent.pl script. input for content includes an avi video file and a midi file. this script can be used to generated alternate contents for most avi and midi files.
     
    the followings are needed for content generation
    . we need an avi file for video
    . we need a midi file for audio, prefer about 8 channel simple paino instrument
    . supporing utility / tools
    . should be done in a linuxish machine or w/ cygwin
    . unixish bin-utils, etc. we need "sort" for sure
    . perl, the internet duct tape to tie things together
    . certian perl modules, like "Image::BMP", "POSIX"
    . midicsv and whatever he requires, this is for midi extraction
    . ffmpeg to extract bitmaps from video
    . dd utility (part of linux / cygwin) to write content binary to sd / mmc card
     
    i don't want to put full details in this post as it may be too long to read. and it can be found here at http://www.simpleavr.com/msp430-projects/bad-apple. comments / suggestions are most welcomed.
     
    source tarball is available here as attachment. binaries (contents + firmware) are available at the mentioned link.
    bad_apple_src.tgz
  22. Like
    Mac got a reaction from oPossum in Paper Silkscreen for Radio Shack Proto Boards   
    It works. Yippee! The circuit on the right side of the board with the 8 pin device is my one pin serial LCD interface (which would normally be designed as a separate LCD backpack).
     
    With minor changes (silkscreen and wiring), I believe this PIC prototyping board could be used with 14 and 20 pin MSP430 devices.
     
    Happy Holidays everyone...
     
    Mike

  23. Like
    Mac got a reaction from gwdeveloper in Paper Silkscreen for Radio Shack Proto Boards   
    After seeing a bunch of guys doing this over the last year, I finally gave it a try yesterday. I created a board in DipTrace with the precise dimensions for the little 1.8" by 2.8" Radio Shack prototype board and I printed the silkscreen layer as an XPS file. Then I printed it out onto paper while at school yesterday. Last night I put plastic tape on both sides, cut it out, and glued it onto the prototype board. Results don't look bad, even if I do say so myself (apologies for the poor quality picture).
     
    Cheerful regards, Mike


  24. Like
    Mac got a reaction from zeke in Paper Silkscreen for Radio Shack Proto Boards   
    After seeing a bunch of guys doing this over the last year, I finally gave it a try yesterday. I created a board in DipTrace with the precise dimensions for the little 1.8" by 2.8" Radio Shack prototype board and I printed the silkscreen layer as an XPS file. Then I printed it out onto paper while at school yesterday. Last night I put plastic tape on both sides, cut it out, and glued it onto the prototype board. Results don't look bad, even if I do say so myself (apologies for the poor quality picture).
     
    Cheerful regards, Mike


  25. Like
    Mac reacted to pine in Free brushless DC motor drive sample kit from TI   
    http://www.ti.com/ww/en/more/solutions/ ... lessdc-bhp
     
    "Order Sample Kit Now" red button below the schematic. Limited to 1 kit per person.
     
    There is no stock at the estore now but it does say accept back order.. Honestly I have no idea what this is for, all i know is there are 3 parts that come with this kit (for controlling motor drive).
×
×
  • Create New...