Jump to content
43oh

zeke

Members
  • Content Count

    1,782
  • Joined

  • Last visited

  • Days Won

    102

Reputation Activity

  1. Like
    zeke reacted to RobG in ProtoPad shield   
    Why buy ready proto boards when you can make your own Seeed makes this so easy and cheap.
     
    That said, I am planning to make a little proto board that can be used with LaunchPad and Fraunchpad, a ProtoPad shield.
    It will have 8 LEDs and 8 pin header. LP's and FP's switches will be accesible, but FP's LEDs will be obstructed.
     

  2. Like
    zeke got a reaction from nuetron in MSP430 with 8051-based bus   
    I made a VT100 terminal back in 1996 with an AT keyboard but I used a Motorola 68000 and a 640x480 LCD panel.
     
    I think it's a great project to do. :thumbup:
     
    By the way, don't you have to change the A0/A1/A2 connections so that the Flash memory and the port expander don't conflict?
  3. Like
    zeke reacted to nuetron in MSP430 with 8051-based bus   
    Hi guys!
     
    I've been working on a program that will read a byte from an AT computer keyboard, and print it on a 16x2 LCD display.
    I'm also working on a function that will read the visible portion of the display, and save it in an I2C EEPROM.
     
    Using RobG's I2C code, I was able to successfully interface an HD44780 display to my '2231, via a PCF8574 port expander.
    Since I now have a bidirectional 8-bit parallel bus, I will connect a W83C43 keyboard controller to it, thus enabling a very large input range to my micro.
     
    The schematic:
  4. Like
    zeke reacted to Mac in Rotary Encoder and the LP   
    Then thank you (Zeke) for passing along a good idea. I implemented it (on the circuit below) by adding a few lines of code to my parallel switch state logic and it's working surprisingly well. Since the switch state logic is designed to filter out all but a "new press" switch state, it works extremely well for filtering out all but a single A or B encoder transition between detents. Check out this excerpt from my test program (a small eight line mux' routine fills the 'swnew' sample variable);
     

    /* * * Mike McLaren's parallel switch state logic (plus encoder) * * * * swnew ___---___---___---___ inverted active lo sample * * swold ____---___---___---__ switch state latch * * swnew ___-__-__-__-__-__-__ changes, press or release * * swnew ___-_____-_____-_____ filter out 'release' bits * * flags ____------______----- toggle flag bits for main * * */ swnew ^= swold; // changes, press or release swold ^= swnew; // update switch state latch swnew &= swold & 0xEF; // filter out 'release' bits if(swnew & 0x20) // if encoder B "new press" { if(swold & 0x10) // if opposite direction swnew ^= 0x30; // toggle up/dn switch flags } // /* * * test for encoder "new press" and bump "count" accordingly * * */ if(swnew & 0x20) // increment 'count' count = _bcd_add_short(count,0x01); if(swnew & 0x10) // decrement 'count' count = _bcd_add_short(count,0x99);
    I'll post a demo' program in a new thread. That is, if anyone is interested.
     
    Cheerful regards, Mike

  5. Like
    zeke reacted to andy1324 in [ ENDED ] Aug-Sep 2011 - 43oh Project of the Month Contest   
    Okay so here is mine, it's a small strotoscobic guitar tuner/development board for msp430 in 16 pin tssop package.
     
    Moved all the info to its own thread so I will only leave the rendered view here.

     
    More info at: http://www.43oh.com/forum/viewtopic.php?f=9&t=1419
  6. Like
    zeke reacted to bluehash in August 2011 POTM Candy   
    Post is in the Aug 2011 thread here.
     
    I just spoke to Ian from DangerousPrototypes and he'll be glad to offer the following:
    - A free PCB coupon code for the runner ups(This would be the Fourth and Fifth places) from the PCB drawer. This way you get a better chance at winning.
    - If the winner(first) has a PCB in their design, Dangerous Prototypes will have it fabricated for you. You will have to have your PCB files ready.
  7. Like
    zeke got a reaction from Dee-J_ONUR in 1-Wire Reset Command sample code   
    Hi Guys,
     
    So, after calibrating the 16Mhz DCO using my code (Here's a link. It's below NatureTM's code), I have a rock solid 16MHz DCO.
     
    Now I can create a reliable 1us delay routine that is required for proper 1-Wire interfacing. Here's an article that shows you the desired waveforms.
     
    By the way, Touch tried porting the Arduino 1-Wire code to the Launchpad without success. The reason why it failed is due to the fact that the Arduino runs at 16MHz and the stock Launchpad board runs at 1MHz.
     
    Here's my code that I used to generate an inverted version of the 1-Wire Reset command on P1.1 of the Launchpad.
     

    //****************************************************************************** // MSP430G2xx1 Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10 // modified to create a One Wire reset pulse train on P1.1 // // Description: Buffer ACLK on P2.0, default SMCLK(DCO) on P1.4 // // ACLK = LFXT1 = 32768, MCLK = SMCLK = DCO set to 16MHz after calibrating it. // // External watch crystal installed on XIN XOUT is required for ACLK // // MSP430G2xx1 // ----------------- // /|\| XIN|- // | | | 32kHz // --|RST XOUT|- // | | // | P1.4/SMCLK|-->SMCLK = Default DCO // | P1.1|-->MCLK/10 = DCO/10 // | P1.0/ACLK|-->ACLK = 32kHz // // J. Voth // Nine Micron // January 2011 // Built with CCS Version 4.2.1 //****************************************************************************** #include #define delayMicroseconds(n) __delay_cycles(n<<4) void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer BCSCTL1 = CALBC1_16MHZ; // Set range DCOCTL = CALDCO_16MHZ; // Set DCO step + modulation P1DIR |= 0x1F; // P1.0,1,2,3 and P1.4 outputs P1SEL |= 0x11; // P1.0,4 ACLK, SMCLK output while(1) { // drive P1.1 high for ~480us P1OUT |= 0x02; // activate output delayMicroseconds(480); // drive P1.1 high for ~480us P1OUT &= ~0x02; // deactivate output // pulse p1.2 high for 70us P1OUT |= 0x04; // activate P1.2 output delayMicroseconds(70); P1OUT &= ~0x04; // deactivate P1.2 output // Do nothing for the remainder of the time slot delayMicroseconds(410); } }
     
    I modeled it on the Basic Clock Demo program from TI because you can scope the DCO/MCLK frequency on P1.4 as a sanity check. If your DCO isn't calibrated then a scoping of P1.4 will make that plain to you.
     
    I also generate a 70us pulse on P1.2 because that is how long you have to wait until reading the 1-Wire bus for a response.
     
    To properly make use of this code, the 1-Wire bus interface will have to be a two pin version. The addition of a transistor (or FET) will invert the TX signal and thus make everything okay.
     
    Take a look and tell me what you think.
  8. Like
    zeke reacted to gwdeveloper in MSP-EXP430F5529   
    Ok, Ok. TI gave me a full permanent license for CCS. After porting SimpliciTI to the MSP-EXP430F5529, plus my application, I maxed out the 16k license limit. Now I can have full range for all of the processors, which is going to be great because I had also maxed out the code on my evalbot.
     
    They're really a great company -plenty of freebie samples, great deals on hardware, lots of open-source code, regularly sponsored seminars and contests, and the E2E forum.
  9. Like
    zeke reacted to RobG in 595 Expansion Board   
    Works as designed
     


  10. Like
    zeke got a reaction from bluehash in would these guys have won the POTM?   
    I just spotted these guys on hackaday. They made an RGB LED Coffee Table.
     
    Do you think they would have won the POTM if they had entered? :eh:
     
    Yes, there is an LP in their project.
  11. Like
    zeke got a reaction from jsolarski in anyone notice digi's new wifi module yet?   
    Has anyone noticed digi's new wifi module product yet?
     
    Apparently, it's only $49 and it has the same footprint as their zigbee module.
     
    Kinda makes me wonder where I could make use of one. Hmmm... :think:
  12. Like
    zeke reacted to ERTW in Free MAXADCLite EV Kit - OUT OF STOCK   
    -----------------------------------------------------------------------------------------------------------------------------
    Update: Apparently the samples are out of stock, even though it doesn't mention it on the Maxim website.
    -----------------------------------------------------------------------------------------------------------------------------
     
    Saw this over on Dangerous Prototypes but figured I'd post it here as well. Apparently this was posted in April and there are 1000 available, but I ordered one today. You do unfortunately need a business or educational institution e-mail to be able to order one.
     
    http://www.maxim-ic.com/landing/?lpk=585
     
    This versatile EV kit allows you to measure any analog signal source directly from your computer. Just download the MAXADCLite GUI software (PC only), connect your analog input signal, and start measuring. (Power is provided through the USB port.)
     
    Key Benefits
     
    * Smallest 12-bit SAR ADC
    o 2 channels
    o Integrated reference
    o 1.9mm x 2.2mm package
    * Lowest system cost
    o Integrated multiplexer, FIFO, and sequencer
    o Same price as competitive stand alone ADCs
    * Ultra-low power
    o Active: 2
  13. Like
    zeke got a reaction from bluehash in 24V input   
    One method to read the 24V signal is to use a typical voltage divider.
     
    Vin = Vhigh * [R2/(R1 + R2)]
     
    So, you'd get this:
     
    3.3V = 24V * [R2/(R1 + R2)]
     
    and then rearranging the equations gets you this:
     
    R1 = [(24-3.3)*R2]/3.3 = 6.273*R2
     
    Then, arbitrarily pick R2 to be 1Meg and then R1 becomes 160K which is close to a standard E series resistor value.
     
    So, pick a standard value of 150K and recalculate the results:
     
    Vin = 24*[150K/(1M+150K)] = 3.130V
     
    which means that 3.130V will be the highest voltage seen by the micro.
     
    Conclusion: I think that this voltage divider design will allow you to read 24V input without difficulty.
     

     
    After you implement this circuit you can begin to tackle the software for timing the input pulses.
  14. Like
    zeke reacted to nobody in Rotary Encoder and the LP   
    My code (above) do it.
     
    For this I also use RC debouncing. It's work perfectly.

    A----[ 4k7 ]---------> (internal pullup in MSP430) | | = 10nF | | --- B----[ 4k7 ]---------> (internal pullup in MSP430) | | = 10nF | | --- SW-------------------> (internal pullup in MSP430) | | = 100nF | | ---
  15. Like
    zeke reacted to RobG in Rotary Encoder and the LP   
    Here's my implementation.
    To cover all transitions, I am using pairs of pins with opposite edge detection.
    I am using external pullups and caps for denouncing since doing it in software would be very tricky and not reliable.
    My encoder is PEC11-4215K-S0024 and as Mike pointed it out, with detents it is hard to get single steps.
    After removing detent plate from my encoder, it works perfectly.
     

    #include "msp430g2231.h" #define A1PIN BIT1 #define A2PIN BIT2 #define B1PIN BIT6 #define B2PIN BIT7 #define EINT P1IE |= A1PIN|A2PIN; P2IE |= B1PIN|B2PIN #define DINT P1IE &= ~(A1PIN|A2PIN); P2IE &= ~(B1PIN|B2PIN) #define CLRPFG P1IFG &= ~(A1PIN|A2PIN); P2IFG &= ~(B1PIN|B2PIN) int counter = 0; void main(void) { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P2SEL &= ~(B1PIN|B2PIN); P2DIR = 0; P1DIR &= ~(A1PIN|A2PIN); P1IES &= ~A1PIN; P1IES |= A2PIN; P2IES &= ~B1PIN; P2IES |= B2PIN; CLRPFG; _bis_SR_register(GIE); EINT; while(1) { // do whatever _bis_SR_register(LPM0_bits); // sleep } } // Port 1 interrupt service routine #pragma vector=PORT1_VECTOR __interrupt void Port_1(void) { DINT; if((P1IFG & A1PIN) ^ (P2IN & B1PIN)) { counter--; } else { counter++; } CLRPFG; EINT; _bic_SR_register_on_exit(LPM0_bits); } // Port 2 interrupt service routine #pragma vector=PORT2_VECTOR __interrupt void Port_2(void) { DINT; if((P2IFG & B1PIN) ^ (P1IN & A1PIN)) { counter++; } else { counter--; } CLRPFG; EINT; _bic_SR_register_on_exit(LPM0_bits); }
     
     

    PEC11 +-------------------+ +-----+ | MSP430G2231 | | | | P2.6+-----+-----+---------+---------+ A | | | | | | | | | | | | +-+ | | | P2.7+-----+ |100n | | | | | | +---+ | |1K | | | | +---+ +-+ | | | | | | | | | | | GND | GND | | | | +---+ | +---+ C | | | | +---+ | | | | |100n | Vcc | | | | +---+ +-+ | | | | +---+ | | | | | P1.1+-----+ | | |1K | | | | | | +-+ | | | | | | | | | | P1.2+-----+-----+---------+---------+ B | | | | | +-------------------+ +-----+
     
     
    And here's the code which includes LCD display:
     

    #include "msp430g2231.h" #include "adc_lcd.h" #define A1PIN BIT1 #define A2PIN BIT2 #define B1PIN BIT6 #define B2PIN BIT7 #define EINT P1IE |= A1PIN|A2PIN; P2IE |= B1PIN|B2PIN #define DINT P1IE &= ~(A1PIN|A2PIN); P2IE &= ~(B1PIN|B2PIN) #define CLRPFG P1IFG &= ~(A1PIN|A2PIN); P2IFG &= ~(B1PIN|B2PIN) void binaryToASCIIScale(unsigned int n, unsigned char * digits, unsigned int scale); // asm prototype void sendChars(unsigned char chars[], unsigned char length); // asm prototype void send(unsigned char data, unsigned char registerSelect); // asm prototype unsigned char d[5] = {0,0,0,0,0}; void sendDataArray(unsigned char data[], char length); char charIndex = 0; char valueIndex = 0; int counter = 2000; void main(void) { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P1OUT &= ~(CLOCKPIN + DATAPIN); P1OUT |= ENABLEPIN; P1DIR |= ENABLEPIN + CLOCKPIN + DATAPIN; P2SEL &= ~(B1PIN|B2PIN); P2DIR = 0; P1DIR &= ~(A1PIN|A2PIN); P1IES &= ~A1PIN; P1IES |= A2PIN; P2IES &= ~B1PIN; P2IES |= B2PIN; CLRPFG; initDisplay(); _bis_SR_register(GIE); EINT; while(1) { sendInstruction(0x80); binaryToASCIIScale(counter, d, 0); sendChars(d, 5); _bis_SR_register(LPM0_bits); // sleep } } // Port 1 interrupt service routine #pragma vector=PORT1_VECTOR __interrupt void Port_1(void) { DINT; if((P1IFG & A1PIN) ^ (P2IN & B1PIN)) { counter--; } else { counter++; } CLRPFG; EINT; _bic_SR_register_on_exit(LPM0_bits); } // Port 2 interrupt service routine #pragma vector=PORT2_VECTOR __interrupt void Port_2(void) { DINT; if((P2IFG & B1PIN) ^ (P1IN & A1PIN)) { counter++; } else { counter--; } CLRPFG; EINT; _bic_SR_register_on_exit(LPM0_bits); }
  16. Like
    zeke got a reaction from kenemon in Rotary Encoder and the LP   
    This is the code I used to test out the Bourns PEC11L-4220F-S0015 rotary encoder
     

    /* Rotary Encoder example Simple program to test a PEC11L-4220F-S0015 rotary encoder with pushbutton. Compiled using Code Composer Studio V4 Setup: +----------------+ LED -- | P1.0 P2.6 | -- NC LED -- | P1.1 P2.7 | -- Push Button LED -- | P1.2 | LED -- | P1.3 | LED -- | P1.4 P1.7 | -- Encoder B LED -- | P1.5 P1.6 | -- Encoder A +----------------+ Function: * Every time the encoder is pushed the LED on P1.0 will be toggled * The LED on P1.1 to P1.5 will move left/right according to the encoder * The script uses the internal pullup resistors */ #include #define CLI() _disable_interrupts() #define SEI() _enable_interrupts() #define dint() _disable_interrupts() #define eint() _enable_interrupts() unsigned char encoder_pos = BIT3; // Set starting pos to P1.3 unsigned char push_pos = 0; #pragma vector=PORT2_VECTOR __interrupt void p1_encoder_int(void) { dint(); if( P2IFG & 0x80 ) { push_pos ^= BIT0; P1OUT = BIT7 | BIT6 | encoder_pos | push_pos; // output P1 with push status and encoder pos } P2IFG = 0x00; eint(); } #pragma vector=PORT1_VECTOR __interrupt void p1_encoder_move(void) { dint(); if( P1IFG & 0x40 ) { if ( P1IN & BIT7 ) { // b is high -> counter clockwise if ( encoder_pos > BIT1 ) { // only move down if not already at bottom encoder_pos = encoder_pos >> 1; } } else { // b is low -> clockwise if ( encoder_pos < BIT5 ) { encoder_pos = encoder_pos << 1; } } P1OUT = BIT7 | BIT6 | encoder_pos | push_pos; // output P1 with push status and encoder pos } P1IFG = 0x00; eint(); } int main(void) { WDTCTL = WDTPW | WDTHOLD; // Setup port P1SEL = 0x00; // select io function for all ports (this is actually default for P1) P1REN = 0xC0; // select pullup resistors for pin 1.7 and 1.6 P1DIR = 0x3F; // iioo oooo P1OUT = 0xC8; // need to set P1.6 and P1.7 to high so PULLUP resistor will be selected P1IES = 0x00; // select low to high transition for interrupts on all port pins (this actually the default) P1IE = 0x40; // enable interrupt for P1.6 to reader status of encoder every time Encoder sigal A goes high P1IFG = 0x00; // clear interrupt register P2SEL = 0x00; // selection io function for all ports (default is actually XIN.XOUT for P2.7/2.6) P2REN = 0x80; // select pullup resistors for pin 2.7 P2DIR = 0x7F; // iooo oooo P2OUT = 0x80; // need to set P2.7 to high so PULLUP resistor will be selected P2IES = 0x00; // select low to high transition for interrupts on all port pins P2IE = 0x80; // enable interrupt P2.7 for push button P2IFG = 0x00; // clear interrupt register eint(); for (; { // loop forever } }
  17. Like
    zeke reacted to bluehash in 595 Expansion Board   
    Regular price at SeeedStudio.
  18. Like
    zeke reacted to oPossum in 256 x 192 graphics display using Fraunchpad - preview   
    A frame buffer for 256x192 pixels requires 6k. That is more than will fit in RAM, so the frame buffer is in the FRAM memory. NTSC video generated using TimerA0 for sync, and SPI with DMA for video.
     
    Graphics library functions:


    [*:hf56qo2f]Pixel
    [*:hf56qo2f]Line
    [*:hf56qo2f]Box
    [*:hf56qo2f]Circle
    [*:hf56qo2f]Ellipse
    [*:hf56qo2f]Quadratic and cubic bezier curve
    [*:hf56qo2f]BitBlt up to 24 pixels wide
    [*:hf56qo2f]OR, AND, and XOR drawing modes
    [*:hf56qo2f]Text with 8 x 12 font
     


  19. Like
    zeke got a reaction from nuetron in Interfacing a YM3812 and LCD to 'G2231   
    According to page 12 of its datasheet, the g2231 only has a basic clock (XT1 - low frequency mode) module which supports a 32768Hz watch crystal.
     
    Page 25 states that the input frequency range is [10000..50000]Hz.
     
    You want to find a device that has XT1 - High Frequency Mode. The FR5739 is one example.
     
    Or you want to find a device with a UCS - Unified Clock System. The F5438A is one example.
     
    Either of those devices will let you attach a 3.58MHz XTAL to XIN and XOUT.
  20. Like
    zeke got a reaction from MarkoeZ in Standalone Nightmare   
    This is what I do:
     
    Note: all the I/O's are unassigned in this diagram.
     

  21. Like
    zeke reacted to oPossum in Fast itoa() for CCS   
    itoa() is not part of the standard C library and is absent from CCS.
     
    Here are three functions to convert signed and unsigned integers to ASCII. They are written for speed, not compactness.
     
    void itoa(int, char *); // Convert signed integer to ASCII
    void utoa(unsigned, char *); // Convert unsigned integer to ASCII
    void btoa(unsigned, char *); // Convert unsigned char to ASCII (leading spaces)
     
    itoa() and utoa()

    utoa ; --- Unsigned to ASCII --- ; - Range 0 to 65535 ; - Leading zeros supressed push R10 ; clr R14 ; Clear packed BCD mov #-1, R10 ; Flag as positive rla R12 ; Get bit 15 of binary jmp unsigned ; itoa ; --- Integer to ASCII --- ; - Range -32768 to +32767 ; - Leading zeros supressed push R10 ; clr R14 ; Clear packed BCD rla R12 ; Get bit 15 of binary subc R10, R10 ; Save sign bit jne notneg ; Positive... inv R12 ; Negate negative numbers inc R12 ; This will overflow only for -32768 unsigned ; dadd R14, R14 ; Multiply BCD by 2 and add binary bit notneg ; .loop 12 ; Do 12 bits rla R12 ; Get bit 14 to 3 of binary dadd R14, R14 ; Multiply BCD by 2 and add binary bit .endloop ; clr R15 ; Clear digit 1 of packed BCD .loop 3 ; Do 3 bits rla R12 ; Get bit 2 to 0 of binary dadd R14, R14 ; Multiply BCD by 2 and add binary bit dadd R15, R15 ; .endloop ; swpb R14 ; Swap digit order mov R14, R12 ; Copy packed BCD digits and #0x0F0F, R12 ; Mask digits 5 & 3 rra R14 ; Shift digits 4 & 2 to lower nibble rra R14 ; rra R14 ; rra R14 ; and #0x0F0F, R14 ; Mask digits 4 & 2 tst R10 ; Negative? jne nosign ; No, skip sign... mov.b #'-', 0(R13) ; Negative sign to string inc R13 ; nosign ; mov #('0' << 8) | '0', R10 ; Make ASCII add R10, R12 ; add R10, R14 ; add R10, R15 ; cmp.b R10, R15 ; Is first digit a 0? jne dig5 ; No... cmp.b R10, R14 ; Is second digit a 0? jne dig4 ; No, only the first... cmp.b R10, R12 ; Is third digit a 0? jne dig3 ; No, only the first two... cmp R10, R14 ; Is fourth digit a 0? (second is zero) jne dig2 ; No, only the first three... dig1 ; First four digits are all 0 swpb R12 ; Fifth digit to string mov.b R12, 0(R13) ; inc R13 ; clr.b 0(R13) ; NULL terminate string pop R10 ; reta ; Return ; dig5 ; mov.b R15, 0(R13) ; First digit to string inc R13 ; dig4 ; mov.b R14, 0(R13) ; Second digit to string inc R13 ; dig3 ; mov.b R12, 0(R13) ; Third digit to string inc R13 ; dig2 ; swpb R14 ; Fourth digit to string mov.b R14, 0(R13) ; inc R13 ; jmp dig1 ; ;
    btoa()

    btoa ; --- Byte to ASCII --- ; - Range 0 to 255 ; - Leading zeros converted to spaces clr R14 ; Clear packed BCD swpb R12 ; Move LSB to MSB .loop 8 ; Do 8 bits rla R12 ; Get a bit of binary dadd R14, R14 ; Multiply BCD by 2 and add binary bit .endloop ; ; mov R14, R12 ; Copy packed BCD digits and #0x0F0F, R12 ; Mask digits 1 & 3 mov #('0' << 8) | '0', R15 ; Make ASCII add R15, R12 ; mov.b R12, 2(R13) ; Move digit 3 to bcd[2] swpb R12 ; Swap digits 1 & 3 mov.b R12, 0(R13) ; Move digit 1 to bcd[0] rra R14 ; Shift digit 2 to lower nibble rra R14 ; rra R14 ; rra R14 ; and #0x0F0F, R14 ; Mask digit 2 add R15, R14 ; Make ASCII mov.b R14, 1(R13) ; Move digit 2 to bcd[1] clr.b 3(R13) ; NULL terminate string cmp.b R15, 0(R13) ; Is first digit a 0? jne b2aex ; No... cmp.b R15, 1(R13) ; Is second digit a 0? jne b2a2d ; No, only the first.. mov #(' ' << 8) | ' ', 0(R13); Make first two digits spaces reta ; Return b2a2d ; mov.b #' ', 0(R13) ; Make first digit a space b2aex ; reta ; Return
    itoa.zip
  22. Like
    zeke got a reaction from oPossum in Terminal Prog for Win 7?   
    I don't know why they have it buried by default.
     
    You'll have to hunt for it by doing this:
     
    Window -> Show View -> Other -> Terminal -> Terminal -> OK
     
    It seems like a plain terminal emulator. That means that there is no scripting capabilities in it. I would love to be proven wrong though. Macros would be awesome for repetitive commands.
  23. Like
    zeke reacted to gordon in Teach how to Enable Serial Communication   
    By setting bits in registers .
     
    OK, seriously. This topic is slightly :evil: larger than a forum post. The MSP430x2xx Family User's Guide devotes about 80 pages to this subject, the Davies Book about 120, and that's only serial comms (which, mind you, is not equivalent to UART, as you seem to think/imply, but also includes I2C and SPI; add to that there are two different hardware modules implementing these, then there's always bit-banging) -- you most certainly need a bit of a familiarity with at least the clock system to make heads or tails of any of this.
     
    There is no way to answer this question in this form. I suggest you read through our excellent collection of information for beginners first: viewtopic.php?f=8&t=449, viewtopic.php?f=8&t=920 and viewtopic.php?f=8&t=1075 (maybe others too).
  24. Like
    zeke reacted to oPossum in Using ADC to make Voltage Measurements   
    You need a high side current measurement circuit like one of these:
     

     
    Figure 1 is the obvious solution, but can have rather high error. Figure 2 has reduced error. The reasons are discussed here
     
    There are many chips that implement the circuit in Figure 2, but they are all tiny SMD parts.
     
    You could also measure the voltage on both sides of the current sense resistor using two ADC channels, but the resolution would be quite poor - not recommended.
  25. Like
    zeke reacted to Mac in Converting binary to decimal (BCD)   
    Just found a document from 2000, MSP430 Family Mixed-Signal Microcontroller Application Reports (slaa024.pdf), which seems to have a lot of the basic stuff I'm lookin' for (including that 16-bit to 5-digit binary-to-bcd routine). Yippee!
     
    Regards, Mike
×
×
  • Create New...