Jump to content

nobody

Members
  • Content Count

    94
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by nobody

  1. If You want to try DIY version, then ADuM4160 is into FARNELL (
  2. It is probably open-collector output (need a pullup resistor).
  3. This capacitor (C14 - 1nF) is part of LaunchPad. If you connect programming wires to connector J2 connected to socket, you not need it. Of course, if You use J3 or mini - connector J4 then 1nF capacitor is recommended (but not absolutely must-have...).
  4. Back to reality. The operational amplifier is not working above its power rails. To use an operational amplifier for processing negative input voltage - it is necessary to use a negative supply voltage. There is another way to handling the negative input voltage: 1) allow buffered output reference voltage at the output pin. 2) use a voltage divider (two resistors) - one end of the reference voltage, the other end to the negative input voltage and the center of the analog input. 3) select resistors so that the analog input voltage was always greater than zero.
  5. I do not need (and do not have) the full code. It is only tip for inspiration - another way to do it. If it is a bad way - no problem. I see one error in my code (need 9x2 table - first line for start impulses and max. 8 lines for ending). One sticking point - at the time of updating data in the table will be generated bad impulses. This problem can be solved by synchronization updating routine and interrupt routine.
  6. Why do You not use something like this: static, fixed table char TPWM[8][2]= //TPWM[x][0] = Port pin status; TPWM[x][1] = Time; { 0x00, 10, 0x01, 20, .... }; and routine __interrupt void Timer_A0 (void) { static char n = 0; P1OUT = TPWM[n][0]; // Port pins next state TACCR0 = TPWM[n][1] << 8; // Update timer compare time n = (n++)%8; } or updated version (skip empty lines) __interrupt void Timer_A0 (void) { static char n = 0; P1OUT = TPWM[n][0]; // Port pins next state TACCR0 = TPWM[n][1] << 8; // Update timer compare time do n = (n++)%8; while(TPWM[n][1] == 0); } EDIT: this code use 16bytes of RAM (and for 16 channel PWM need 48bytes RAM (table 16x3)) and one byte in interrupt routine.
  7. nobody

    IAR Code Size

    Look here: http://www.43oh.com/forum/viewtopic.php?f=8&t=1468
  8. Look here: http://www.43oh.com/forum/viewtopic.php?f=8&t=411&start=10#p3396
  9. Why did you completely ignore the design rules? TPS6205x based board needs to be revised. Path between TPS6205x and blocking capacitors must be the shortest as possible. C10 is necessary to move the left edge. C11 is a need to move under the coil (between coil and NanoBoard, not at the opposite layer). And between the boards is not gap to cutting.
  10. Path from MCU GND to crystal GND is unnecessarily too long. I suggest to oppositely rotate crystal + capacitors (ground pad toward to programming header). 2nd suggestion- move programming header into 0.05" raster aligned with 0.1" data headers (for easier to use into universal punched boards). BTW: If you move a bit R3 + R4 + LED1, so you can fit on board the standard 0.1" programming header.
  11. What is your problem? Look at THIS!
  12. Look at MSP430FR57XX series (expensive, but very good), or my favorite MSP430AFE (only 16x16 MPY)...
  13. CCS don't have simulator (IMHO?). It's better first testing software and then buy adequate hardware. You don't need write full application, only time - critical part and exactly (in simulator) measure time and memory consumption. And then select adequate processor and buy it. Libraries are not the same (calling conventions and source code in C is almost the same, but implementation in libraries is manufacturer-dependent). I don't know whether it is better this or that... I personally hate Eclipse-based systems, then use IAR.
  14. Our schematics is "voltage follower" - it's impedance converter (high input impedance and low output inpedance). 1M resistor is not necessary, input impedance of good FET opamp is much higher. But is almost necessary using rail-to-rail opamp. IMHO use opamp for this is overkill. Put capacitor (100nF is enough) paralel into analog input and throw away opamp. Opamp is necessary if you measure something like vacuum tube photocell or other high impedance device (Mohms to Gohms). For measuring at the ~30kOhm divider is unnecessary.
  15. Small mathematics: You have 16 million clock cycles per second. And you have 25 ms time window. One machine instruction takes 1 to 6 clock cycles (eg, on average pessimistic 4 cycles?) In our time window processor executes (16e6 * 25e-3 / 4) = 100,000 machine instructions. And your second example - 10,000 machine instructions in time window. Your simple math is piece of cake for this brute force ... Your problem is memory. FP math library consumes lot of flash space. IMHO 4kB flash is minimum, 8kB is better. Install IAR workbench, write a simple test version of its mathematics and run in the simulator. Then change target versions (in simulator) and select processor that is best for your application.
  16. Your power supply is stable? Measure the power supply when connected resistor and thermistor. If you use small battery then 2,2mA can cause a voltage drop. In practice upper (fixed) resistor should be selected approx. 10~100kOhm for 10kOhm thermistor.
  17. No. It is impossible. Use chip with more than one independent ADC's (like MSP430AFE2xx). Or use external sample and hold devices.
  18. Microstepping is good solution for remove "jagged lines" - it add smoothness to steppers movement. My suggestion of "almost ideal" stepper controller: - Use something from MSP430F53XX or MSP430F55XX series (this serie give you advantage of USB communication) - Use 3 timers A to independent and precise frequence generating for 3 axes - Use timer B with 7 registers for synchronously generating PWM signals for microstepping controll 3 axes (two signals for axis...) - Use 3 DMA channels directed by timers A to move modified sinus tables into timer B registers to precise timed, software - independent stepper movement - Then You have full potential of processor power for interpolation computing (hardware multiplier help you a lot) - Price of F53XX or 55XX series is
  19. You need to use endpoint ramps into stepper controll algoritmus (smooth change stepping frequency up / down at the begin / end of line to controll acceleration). And high resolution timers help you use higher levels of accuracy - using microstepping. You will be able using for example 30000 microsteps instead of 3000 full steps and get 10 x better accuracy.
  20. You think about use MSP with high resolution timer ( "Timer_D" )? This timer work at frequency 16 x higher than processor clock frequency (256MHz at 16 MHz clock!!!) and give you more precision at frequency control. Look at [tipdf]slau208[/tipdf], chapter 16.1 (page 400) for more information.
  21. In IAR workbench use this way: Go to Project -> Options (Alt F7) -> General options -> Library options -> set Printf formatter to Tiny. This works for printf() and also for sprintf(). ...and that's all, you don't need wrote any code (except of yours version of putchar() to LCD or serial port).
  22. Yes, "Up to Twelve 5-V Tolerant Digital Push/Pull I/Os"... But You need also 5V tolerant analog inputs (in combination with digital capabilities - you can not use a simple voltage divider...) And level shifters are too complicated (each pin must be software selectable to input or output!). Each pin need
  23. WARNING: MSP430 is not 5V tolerant. Arduino + arduino shields is 5V powered. It is not good idea build "arduino compatible" MSP boards.
  24. In IAR workbench use this way: #pragma constseg = INFOB LUT_TABLE Lut_adc[2] = { -67, 10730, 0, 0, 0, // Input from U ADC 0L, 19476L, 0L, 0L, 0L, // Real measured U -59, 30680, 0, 0, 0, // Input from I ADC 0L, 39080L, 0L, 0L, 0L // Real measured I }; #pragma constseg = default #pragma constseg = INFOC const int Lut_pwm[2][LUT_PWM_SIZE + 1] = { 0, 907, 1814, 2721, 3628, 4535, 5442, 6349, 7256, 8163, 9070, 9977, 10884, 11791, 12698, 13605, // U to PWM 0, 986, 1972, 2958, 3944, 4930, 5917, 6903, 7889, 8875, 9861, 10848, 11834, 12820, 13806, 14792 // I to PWM }; #pragma constseg = default #pragma constseg = INFOD const int Factory_max_pwm_U = 8000; const int Factory_max_pwm_I = 3000; const int User_min_pwm_U = 0; const int User_max_pwm_U = 8000; const int User_min_pwm_I = 0; const int User_max_pwm_I = 3000; const int User_stored_pwm_U = 0; const int User_stored_pwm_I = 1; #pragma constseg = default You be able to select concrete segment of info memory.
  25. Only small notice: Right name for this thing is STROBOSCOPIC device, word STROTOSCOBIC is may be a typo. (Author is scooby doo fan?) BTW: I voted for you in the contest this month - i like simple and usefull devices like this.
×
×
  • Create New...