Jump to content

zeke

Members
  • Content Count

    1,777
  • Joined

  • Last visited

  • Days Won

    101

Reputation Activity

  1. Like
    zeke reacted to bluehash in Updates   
    A few updates and notes:
    The forum is  finally able to connect to the license server. It failed due to an older version of curl, which caused alot of spam posts. PHP updated to the latest version Forums upped to 4.4.7 Any issues, please note them here. I'll try to sort things out.
    Thank you!
     
  2. Like
    zeke reacted to petertux in USB to gameport project   
    If you appreciate late 90s vintage PCs you might be interested in this one.
    I decided to build a Pentium II machine on which I can play my favourite games from those times. Magic Carpet (Bullfrog Productions) is one of them, but it needs a joystick. I had good quality USB joysticks, but those games need old analog gameport-based controllers that are serviced by the sound cards of the time.
    This new project acts as a USB Host and provides the analog output that emulates a 4 axis + 4 button game controller.
    the prototype works absolutely great, it takes about 0.6ms to read data from the attached USB joystick and to send it to the sound card. data is retrieved every 10ms as per the HID polling interval, absolutely no input command is lost and there is over-current protection built in in order to protect the PC from misuse.
    what do you guys think? I'm open to ideas regarding this project before I commit revision 2 of the board - which might end up being a 4 layer design.
    prototype pictures: https://photos.app.goo.gl/fXdDBng4dvEepq8V7
    repo: https://cadlab.io/projects/lemidi
    cheers,
    peter

  3. Like
    zeke reacted to Peabody in Places we buy things...   
    I'm in the US, and I've generally had good results with Banggood.  Their products are pretty much the same as you would find on Ebay, but they appear to care about customer service, at least in my experience.  The biggest issue for me has been shipping.  On two occasions I've paid a higher price to get something from the US warehouse, thinking that shipping would be much faster.  But that hasn't worked.  The last time I ordered, the items from China arrived before the US items, which took 18 days via DHL.  I've become a real non-fan of US domestic DHL.  They are much slower than anyone else.  I mean, 18 days.  There's no excuse for that.
    I don't know what shipping and customs problems you will have in Canada.  Maybe someone else can advise you on that.  But with regard to the products, I would generally feel comfortable with Banggood.  Of course it depends on how much you're going to spend. 
  4. Like
    zeke got a reaction from veryalive in tiny msp430 preemptive multitasking system   
    We have to unpack all that is going on in that get stack pointer statement.
    The function getstackpointer() returns a value. The (int*) transforms that into “the address of that return value” which will be 16 bits large. Then that 16 bit address is assigned to the multi stack variable. 
     
    The author is asking us to modify the list of function names in the taskpnt function since (s)he doesn’t know what we will be doing. So that is up to us. 
    So task1, task2, and so on, are functions that we write to do one specific thing. Something atomic, like SwitchOnLED(LED1) or SwitchGPIO(P1-7), etc.  
    Does that make sense?
  5. Like
    zeke got a reaction from radcliffkaty1 in IPC training information   
    Just to follow up ...
     
    I found another website tonight called http://www.soldertraining.com/. 
     
    It is another excellent resource for electronic assembly knowledge.
     
    I find the Standards & Manuals - Design attractive and I am considering purchasing a set for myself. 
     
     
  6. Like
    zeke got a reaction from radcliffkaty1 in IPC training information   
    A  ridiculously long time ago, I took PACE solder training. At the time, someone said it was the training program that NASA employees had to take to be one of their solder jockies.  I’m count it as one of the best investments that I ever made in my career. I think of soldering as one of my superpowers now. 
  7. Thanks
    zeke reacted to radcliffkaty1 in IPC training information   
    Hey, thanks for the IPC Certification stuff. I also have gone through these certifications and would like to suggest BEST Inc (https://ipctraining.com/) for getting the best training in IPC. They have experienced IPC trainers and also offer Mobile training facility as well. Also, one more training center is there near Illinois i.e EPTAC Training Center(https://www.eptac.com/) which is in good competition with BEST Inc.
    Out of these two, you can choose any.
  8. Like
    zeke got a reaction from veryalive in tiny msp430 preemptive multitasking system   
    @MadMayonnaise
    They are called Function Pointer Arrays.
    I love them. I have been using them extensively to create my CLI - Command Line Interpreter. I can add a new command just by defining a new entry into an array.
    They are an alternative to the Gigantic Switch Statement style of coding.
    To get you started, here is an article from 1999 by Nigel Jones:
    How to Create Jump Tables via Function Pointer Arrays in C and C++
    I also found the book Programming Embedded Systems in C and C++ by Michael Barr to be exceptionally helpful. Chapter nine specifically.
     
     
  9. Like
    zeke got a reaction from venkatesh223 in MSP432P401R SD card interface   
    Maybe I am thinking of the PetiteFS way of using an SD card but doesn't that SD card need to be first formatted on a PC and have a file created as well?
    Then, the MSP430 would access the SD card, open up the pre-existing file, and then write to it?
    I would verify the SD card on a PC first by formatting it then creating an empty text file on it. Then, get the MSP430 to see it then open it.
    Double check the wiring of the card.
    And make sure that you have a really good +5V power source for that SD card. I have read that they want a bunch of current to operate properly. And, I suspect the dev board cannot supply that much current on the +5V line. Gotta verify that too.
     
  10. Like
    zeke reacted to terjeio in PCB Laser Exposer/Printer   
    Improved homing cycle has led to (near) perfect registration of solder mask.
     

     
    Layer registration mark, lines are ~0.1mm wide.
     

     
    Part of TSSOP 20 footprint, mask is way past "use before" date so some problems with spots appearing.
     
    I have started to apply the Riston film on wet PCBs, dust problem nearly gone - easier to handle.
     
    Terje
     
  11. Like
    zeke reacted to terjeio in PCB Laser Exposer/Printer   
    A new design is now up on my Github account, cheaper laser cut acrylic case and 3D printed "laser head". Some info on Hackaday as well.
  12. Thanks
    zeke reacted to radcliffkaty1 in PCB Calculator Programs   
    All these shared files have a lot of learning material. Thanks, @zeke for these helpful files. 😍
  13. Like
    zeke reacted to terjeio in RFC: CNC BoosterPack   
    I have recently been working on a CNC BoosterPack that I will make available on Github when completed later in the spring.

     

    Current specifications:
    Support for my HALified version of GRBL (based on 1.1), currently drivers has been made for MSP432 (black version), Tiva C and MSP430F2955.
    NOTE: firmware is built with CCS 6.1, MSP432 driver is 100% CMSIS based.
    Opto-coupled inputs, NC switches recommended.
    Opto-coupled outputs with 200mA open drain drive for spindle on, spindle direction, flood and mist.
    Can drive most relays and solenoids directly.
    Output section can be powered from internal 3V3 or 5V source, or from external source.
    If powered from external source outputs can be made opto-isolated via jumper setting.
    PWM-output for spindle speed currently directly connected to MCU pin (could be changed to open drain).
    I2C (IIC) interface with selectable voltage level (3V3 or 5V) via level shifter, dedicated interrupt input.
    I2C pinout compatible with my 4x4 keyboard project, supports jogging etc.
    Optional EEPROM for configuration settings for MCUs with no internal EEPROM.
    Polulu 8825 motor driver breakout board compatible. Fault signal routed to GPIO input.
    Considered for later revision:
    Break out SPI interface and add full support for Trinamic motor drivers.
    Optional (SPI) DAC for motor speed (laser power) control.
    This might require a 4-layer PCB and also solving the pinout cabal...
    ---
    Anything you want changed?
    Terje
  14. Like
    zeke reacted to terjeio in RFC: CNC BoosterPack   
    Driver code for a few boards is available from my github account. A PCB design with reduced size allows two boards to be mounted to the EK-TM4C1294XL LaunchPad providing up to 6 axes of control (needs to be verified). I have also added TCP streaming to the EK-TM4C1294XL LaunchPad but usure if I can publish the code due to the "viral" clause in many of TIs files - even the startup code 🙁. Grbl is released under GPL and I have a hard time understanding the legalese related to that...
    I am currently working on a DRO/MPG for my lathe with Grbl running on a MSP432, and the DRO/MPG code on a Tiva C/MSP430 combo. Threading support is a part of that work and hopefully I'll be able to get it working reliably - looks promising this far.

     
  15. Like
    zeke reacted to mph in Bosch Sensortech BME280   
    The Bosch BME280 pressure-temperature-humidity sensor is very popular for projects because there are breakout boards available from Adafruit and Sparkfun as well as a large library of code to interface it to Arduino MCUs. Not so much for the MSP430, especially transparent code to understand what is happening at the register level. I have written and tested some demo C-code that hopefully fills that gap. It sacrifices generality and efficiency for compactness and transparency.
    I use the F5529 Launchpad and communication with the sensor is via SPI using the UCB0 module.  I2C is also available for the BME280 but not implemented here. Temperature and relative humidity (no pressure) data is obtained using the forced mode with periodic polling by the MSP430.  Sensor and MCU are in low-power sleep modes when not active. Data is streamed to a terminal program that is interfaced to the Launchpad via serial UART. Each BME280 has unique trimming parameters that must be retrieved and properly parsed to convert the raw data. This process is quite complicated, so separate functions were developed to handle them and placed in an include library.  
     
    My IDE is CCS 6.1.3 with nofloat printf support. This code should work directly in the MSP430x5xx and MSP430x6xx families. Other MSP430 series such as FR and value-line will need to make appropriate module/register modifications.  Link to github is here:
    https://github.com/microphonon/BME280
  16. Like
    zeke reacted to Markers in MSP430G2553 Workshop   
    Hi Zeke,
    Yes, that is exactly what I have done, and the end result is exactly what I needed.
    Thanks again for your help.
    Cheers, Mark
  17. Like
    zeke reacted to mph in Sensirion SHTC3 temperature-humidity sensor   
    Sensirion has recently introduced an inexpensive, low-power temperature humidity sensor SHTC3 designed for operation in the range 1.62--3.6V .  It should be a useful peripheral for MSP430 battery-powered applications.  I have tested 3 sensors with the F5529 Launchpad and they exhibit reliable, consistent behavior.  For reference, I have written some demo code for I2C communication that is available on github:
    https://github.com/microphonon/SHTC3
    The SHTC3 comes in a small DFN package, so to do breadboard testing I had to build my own breakout boards and use reflow soldering (see photo).

  18. Like
    zeke reacted to Rei Vilo in Import an image on the display Kentec 3.5 with Energia   
    @poulichp I confirm:
    Optional step - Format the image to 32-bit PNG with https://www.imagemagick.org/script/index.php  Step 1 - Use the utility https://github.com/vaskevich/png2c to convert the PNG file into a C-array. Step 2 - Use the example LCD_screen_Logos from the EduBPMKII_Screen and adapt it to match the size of the image and the Kentec 3.5" SPI display. Image

    Screen

  19. Like
    zeke reacted to Salibensuleiman in MSP430FR6989: Serial port monitor is not working   
    I think the issue is resolved now, so the first thing is to update MSP430 core as you mentioned before.
    The 2nd thing is I put pack the jumpers TXD and RXD in their original orientation as when I bought the board first time.
    Thank you so much for your help.
  20. Like
    zeke got a reaction from energia in Infinity Loop in file "Tcp.c" , function "void tcp_slowtmr(void)"   
    My gut instinct would be to add an additional condition (a timer) to that while loop.
    I don't work with that processor so I am not sure of the implementation but here's my pseudo code:
    while ( (pcb != NULL) && (thisTimer <= ARBITRARY_MAX_WAIT_TIME) ) { ... }  
    I don't know if that makes any sense to do it that way, but that is how I am thinking. Add in a second variable that *you* have control over. Then you can have a measure of sanity of something goes off the rails.
    YMMV
  21. Like
    zeke reacted to Fred in Free Shipping and Deals on LaunchPads at TI Store   
    If you're just after free shipping, the code OPT4FREE should work for the whole of 2018.
  22. Like
    zeke got a reaction from bluehash in One Wire Controller booster   
    If anyone is curious, I have been developing the edge router app in pyqt5 on linux.
    Here is one of the better tutorials that I have found on learning PyQt5.
    Apparently, there are two different sources to get PyQt5 from:
    PyQt5 from Riverbank Computing, and Qt for Python  from Qt.com, which was originally called PySide(2) PyQt5 is a bit of a mind bender at the start, but it gets better as you climb the learning curve.
  23. Thanks
    zeke got a reaction from Fmilburn in One Wire Controller booster   
    If anyone is curious, I have been developing the edge router app in pyqt5 on linux.
    Here is one of the better tutorials that I have found on learning PyQt5.
    Apparently, there are two different sources to get PyQt5 from:
    PyQt5 from Riverbank Computing, and Qt for Python  from Qt.com, which was originally called PySide(2) PyQt5 is a bit of a mind bender at the start, but it gets better as you climb the learning curve.
  24. Like
    zeke got a reaction from energia in MSP430FR6989: Serial port monitor is not working   
    Hi @Salibensuleiman
    Wow! That's a wall of text that is impossible to understand.
    Please use the code "<>" tags on your software.
    For example,  here is your code
    #include <LCD_Launchpad.h> #include <driverlib.h> #include <SPI.h> #include <LiquidCrystal.h> #include <driverlib.h> // Required for the LCD //#include <LiquidCrystal_I2C.h> //LiquidCrystal lcd; void setup() { // put your setup code here, to run once: //analogFrequency(10000); Serial.begin(9600); SPI.begin(); } float y11 = 0.0; float y12 = 0.0; float y13 = 0.0; float y21 = 0.0; float y22 = 0.0; float y23 = 0.0; float y31 = 0.0; float y32 = 0.0; float y33 = 0.0; float Ub11, Ub12, Ub13, Ub21, Ub22, Ub23, Ub31, Ub32, Ub33; float IN11, IN12, IN13, IN21, IN22, IN23, IN31, IN32, IN33; float y11New, y12New, y13New, y21New, y22New, y23New, y31New, y32New, y33New; void loop() { // put your main code here, to run repeatedly: // //Diagonal input // float U11=1; float U12=-1; float U13=1; // float U21=-1; float U22=1; float U23=-1; // float U31=1; float U32=-1; float U33=1; //Cross input float U11 = -1.0; float U12 = 1.0; float U13 = -1.0; float U21 = 1.0; float U22 = 1.0; float U23 = 1.0; float U31 = -1.0; float U32 = 1.0; float U33 = -1.0; //Templates A and b //A: float A11 = 0.045404; float A12 = 0.046816; float A13 = 0.046482; float A21 = 0.046741; float A22 = 4.0472; float A23 = 0.046741; float A31 = 0.046482; float A32 = 0.046816; float A33 = 0.045404; //b float b11 = 0.063908; float b12 = -0.061448; float b13 = 0.079005; float b21 = -0.061448; float b22 = 0.052166; float b23 = -0.061448; float b31 = 0.079005; float b32 = -0.061448; float b33 = 0.063908; //I float I = 0.047155; // float y11 = analogRead(A0); // float y12 = analogRead(A1); // float y13 = analogRead(A2); // float y21 = analogRead(A3); // float y22 = analogRead(A0.7); // float y23 = analogRead(A5); // float y31 = analogRead(A6); // float y32 = analogRead(A7); // float y33 = analogRead(A8); int counter = 0; if (counter == 0) { y22New = y11 * A11 + y12 * A12 + y13 * A13 + y21 * A21 + y22 * A22 + y23 * A23 + y31 * A31 + y32 * A32 + y33 * A33; Ub22 = U11 * b11 + U12 * b12 + U13 * b13 + U21 * b21 + U22 * b22 + U23 * b23 + U31 * b31 + U32 * b32 + U33 * b33; y11New = y11 * A11 + y12 * A12 + y21 * A21 + y22 * A22; Ub11 = U11 * b11 + U12 * b12 + U21 * b21 + U22 * b22; y12New = y11 * A11 + y12 * A12 + y13 * A13 + y21 * A21 + y22 * A22 + y23 * A23; Ub12 = U11 * b11 + U12 * b12 + U13 * b13 + U21 * b21 + U22 * b22 + U23 * b23; y13New = y12 * A12 + y13 * A13 + y22 * A22 + y23 * A23; Ub13 = U12 * b12 + U13 * b13 + U22 * b22 + U23 * b23; y21New = y11 * A11 + y12 * A12 + y21 * A21 + y22 * A22; Ub21 = U11 * b11 + U12 * b12 + U21 * b21 + U22 * b22; y23New = y12 * A12 + y13 * A13 + y22 * A22 + y23 * A23 + y32 * A32 + y33 * A33; Ub23 = U12 * b12 + U13 * b13 + U22 * b22 + U23 * b23 + U32 * b32 + U33 * b33; y31New = y21 * A21 + y22 * A22 + y31 * A31 + y32 * A32; Ub31 = U21 * b21 + U22 * b22 + U31 * b31 + U32 * b32; y32New = y21 * A21 + y22 * A22 + y23 * A23 + y31 * A31 + y32 * A32 + y33 * A33; Ub32 = U21 * b21 + U22 * b22 + U23 * b23 + U31 * b31 + U32 * b32 + U33 * b33; y33New = y22 * A22 + y23 * A23 + y32 * A32 + y33 * A33; Ub33 = U22 * b22 + U23 * b23 + U32 * b32 + U33 * b33; IN11 = y11New + Ub11; IN12 = y12New + Ub12; IN13 = y13New + Ub13; IN21 = y21New + Ub21; IN22 = y22New + Ub22; analogWrite(35, IN22); //pin 2.2 IN23 = y23New + Ub23; IN31 = y31New + Ub31; IN32 = y32New + Ub32; IN33 = y33New + Ub33; y11 = 0.7 * tanh(2.0 * IN11); y12 = 0.7 * tanh(2.0 * IN12); y13 = 0.7 * tanh(2.0 * IN13); y21 = 0.7 * tanh(2.0 * IN21); y22 = analogRead(A8); //0.7*tanh(2*IN22)+I; pin 9.0 delay(500); y23 = 0.7 * tanh(2.0 * IN23); y31 = 0.7 * tanh(2.0 * IN31); y32 = 0.7 * tanh(2.0 * IN32); y33 = 0.7 * tanh(2.0 * IN33); counter = 1; } else { y22New = y11 * A11 + y12 * A12 + y13 * A13 + y21 * A21 + y22 * A22 + y23 * A23 + y31 * A31 + y32 * A32 + y33 * A33; Ub22 = U11 * b11 + U12 * b12 + U13 * b13 + U21 * b21 + U22 * b22 + U23 * b23 + U31 * b31 + U32 * b32 + U33 * b33; y11New = y11 * A11 + y12 * A12 + y21 * A21 + y22 * A22; Ub11 = U11 * b11 + U12 * b12 + U21 * b21 + U22 * b22; y12New = y11 * A11 + y12 * A12 + y13 * A13 + y21 * A21 + y22 * A22 + y23 * A23; Ub12 = U11 * b11 + U12 * b12 + U13 * b13 + U21 * b21 + U22 * b22 + U23 * b23; y13New = y12 * A12 + y13 * A13 + y22 * A22 + y23 * A23; Ub13 = U12 * b12 + U13 * b13 + U22 * b22 + U23 * b23; y21New = y11 * A11 + y12 * A12 + y21 * A21 + y22 * A22; Ub21 = U11 * b11 + U12 * b12 + U21 * b21 + U22 * b22; y23New = y12 * A12 + y13 * A13 + y22 * A22 + y23 * A23 + y32 * A32 + y33 * A33; Ub23 = U12 * b12 + U13 * b13 + U22 * b22 + U23 * b23 + U32 * b32 + U33 * b33; y31New = y21 * A21 + y22 * A22 + y31 * A31 + y32 * A32; Ub31 = U21 * b21 + U22 * b22 + U31 * b31 + U32 * b32; y32New = y21 * A21 + y22 * A22 + y23 * A23 + y31 * A31 + y32 * A32 + y33 * A33; Ub32 = U21 * b21 + U22 * b22 + U23 * b23 + U31 * b31 + U32 * b32 + U33 * b33; y33New = y22 * A22 + y23 * A23 + y32 * A32 + y33 * A33; Ub33 = U22 * b22 + U23 * b23 + U32 * b32 + U33 * b33; IN11 = y11New + Ub11; IN12 = y12New + Ub12; IN13 = y13New + Ub13; IN21 = y21New + Ub21; IN22 = y22New + Ub22; analogWrite(35, IN22); //p.n 2.2 IN23 = y23New + Ub23; IN31 = y31New + Ub31; IN32 = y32New + Ub32; IN33 = y33New + Ub33; y11 = 0.7 * tanh(2.0 * IN11); y12 = 0.7 * tanh(2.0 * IN12); y13 = 0.7 * tanh(2.0 * IN13); y21 = 0.7 * tanh(2.0 * IN21); y22 = analogRead(A8); //0.7*tanh(2*IN22)+I; pin9.0 float voltage = Serial.println(y22 * 3.0 / 1023.0); y23 = 0.7 * tanh(2.0 * IN23); y31 = 0.7 * tanh(2.0 * IN31); y32 = 0.7 * tanh(2.0 * IN32); y33 = 0.7 * tanh(2.0 * IN33); } }  
     
  25. Like
    zeke got a reaction from energia in MSP430FR6989: Serial port monitor is not working   
    Concentrate on one problem at a time.
    Create a new project.
    Write a program that tests out only the serial port.
    Create another project that tests out only the LCD.
    Divide and conquer!!!
    Once you have those working then you can get back to that crazy math you are trying to do!
     
×
×
  • Create New...