Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Reputation Activity

  1. Like
    reaper7 reacted to maelli01 in 3phase variable speed motor drive   
    Hi there
    Here is my 3phase variable speed motor drive booster pack

    This has been in my mind for some years, but I always thought that a 3phase variable speed inverter drive is
    beyond my humble hobbyist scope. Too complicated for my old 8-bit mind ;-)

    Such a inverter contains:
    6 high voltage FETs or IGBTs, 6 gatedrives, at least one DSP, a protection concept,
    all the software to create the 3-phase PWM, dead time control.....

    Still that was for quite some time on my long-term "to do" list, with no chance to actually materialize it,
    not enough time, too many other things to do.

    When playing around with the PWM module of the TM4C123 I found out that creating a 3phase PWM
    signal with this module is actually pretty easy.
    Combined that with an integrated Power Module such as the FSB50550 (Fairchild).

    So here it is: a booster pack for the Tiva Launchpad which drives big-ass 3phase motors.

    The booster pack contains the following:
    - the FSB50550 power module (6 FETs 500V 1.4Ohm, Gatedrivers, Bootstrap diodes, Temp sensor)
    - snubber capacitor
    Power supply: everything is powered from one DC source, 20V or (much) more.
    - 15V switchmode power supply from the high voltage side, built around a LNK304, for the FSB50550
    - 3.3V switchmode power supply from the 15V to power the Launchpad, built around a LT1376
    - Passive voltage dividier to measure the input voltage
    - Sense resistor and LM339 comparator for overcurrent detection
    - Nokia 5110 display
    Potentiometer for motor speed and direction

    The software is based on Energia using Tiva Ware function calls for all the PWM stuff.
    It is still work in progress, very basic and at the moment consists of:

    - calculate the sinwave lookup table at startup
    - PWM initialisation (PWM set to 15625 Hz, deadtime 1us, sync on)
    - a timer interrupt run every 10uSecs, do update the 3 PWD duty cycles
    - ADC measurement of temperature, voltage, current (moving average)
    - fault interrupt

    The main program is very short, the display is updated twice a second and the modulation factor is calculated
    out of the potentiometer speed setting and the applied DC voltage.
    Sudden changes in motor frequency are limited in the software, to prevent the motor to feed back energy and cause

    The motor on the picture is a 1/2hp, 900rpm, 6-pole motor, 12 kg of Italian steel and copper, probably 50 years old.
    For playing around, I apply about 50% of rated volt/hz, so current and maximum torque is reduced.
    Currently I use my dual 35V 4A lab supply, series connected, as a power source.
    here is the code:
    //simple 3phase frequency converter //27.9.2014 by maelli #define dots 192 //dots per halfhave, must be divisible with 3 #define period 5120 //80Mhz/5120 = 15625 switching frequency #define dt 80 //deadtime 80Mhz / 80 = 1uS #define PART_TM4C123GH6PM #include <stdint.h> #include <stdbool.h> #include "inc/hw_ints.h" #include "inc/hw_sysctl.h" #include "inc/hw_types.h" #include "driverlib/interrupt.h" #include "driverlib/sysctl.h" #include "driverlib/timer.h" #include "driverlib/pwm.h" #include "LCD_5110.h" #include "inc/tm4c123gh6pm.h" LCD_5110 myScreen (33,37,36,35,34,38,17); char celsius[3]={0x7f,'C',0x00}; uint16_t a,dire=0,modu,tensec; uint32_t timecount,sintable[dots]; volatile int32_t irqcount,timeset; volatile uint32_t temperature, voltage, current, poti; void setup(){ myScreen.begin(); myScreen.setBacklight(0); myScreen.text(0, 0, "3ph Converter"); for(int i=0;i<dots;i++) sintable[i]=sinf((i*3.14159)/dots)*(period/2-dt); unsigned long ulPeriod; unsigned int Hz = 10000; // interupt frequency in Hz ulPeriod = (SysCtlClockGet() / Hz); initTimer(); charge_gdu(); ROM_TimerLoadSet(TIMER0_BASE, TIMER_A,ulPeriod -1); initPWM(); } void loop(){ if (irqcount>499) { //20x per sec irqcount-=500; int32_t fsoll=732*(poti-16384); int32_t diff=fsoll-timeset; if (diff>0){ if (diff>150000) timeset+=150000; else timeset=fsoll; } else { if (diff<-150000) timeset-=150000; else timeset=fsoll; } modu=abs(timeset)/voltage/16; if (modu<(32000/voltage)) modu=32000/voltage; if (modu>256) modu=256; tensec++; if (tensec==10) { //2x per sec we display something tensec=0; myScreen.text(0, 1, mkstrg((temperature-325)/24,2)); myScreen.text(2, 1, celsius); myScreen.text(5, 1, mkstrg((voltage)/23,3)); myScreen.text(8, 1, "Volt"); myScreen.text(0, 2, mkstrg(abs(timeset)/322122,2)); myScreen.text(2, 2, "."); myScreen.text(3, 2, mkstrg(abs((timeset/32212)%10),1)); myScreen.text(4, 2, "Hz"); myScreen.text(7, 2, mkstrg(current,4)); myScreen.text(11, 2, "mA"); if (timeset<0) myScreen.text(0, 3, "links "); else myScreen.text(0, 3, "rechts"); } } } String mkstrg(int d,uint8_t l){ char display[l+1]; int q=1; display[l]=0; for (uint8_t a=l;a;a--){ display[a-1]=0x30+(d%(q*10))/q; q*=10; } return display; } void initTimer(){ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); ROM_TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); // 32 bits Timer TimerIntRegister(TIMER0_BASE, TIMER_A, Timer0Isr); // Registering isr ROM_TimerEnable(TIMER0_BASE, TIMER_A); ROM_IntEnable(INT_TIMER0A); ROM_TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); } void charge_gdu(){ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0 ); ROM_GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_0,GPIO_STRENGTH_4MA,GPIO_PIN_TYPE_STD); GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_7); //alle 3 oberen ausschalten HWREG(GPIO_PORTA_BASE + (GPIO_PIN_7 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1); HWREG(GPIO_PORTD_BASE + (GPIO_PIN_1 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3); HWREG(GPIO_PORTF_BASE + (GPIO_PIN_3 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0); //auch die 2 letzten aus HWREG(GPIO_PORTD_BASE + (GPIO_PIN_0 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2); HWREG(GPIO_PORTF_BASE + (GPIO_PIN_2 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_6); //den ersten unteren ein HWREG(GPIO_PORTA_BASE + (GPIO_PIN_6 << 2)) = GPIO_PIN_6; delay(1); HWREG(GPIO_PORTD_BASE + (GPIO_PIN_0 << 2)) = GPIO_PIN_0; delay(1); HWREG(GPIO_PORTF_BASE + (GPIO_PIN_2 << 2)) = GPIO_PIN_2; delay(1); } void initPWM(){ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1); //The Tiva Launchpad has two PWM modules (0 and 1). We are using 1 ROM_GPIOPinConfigure(GPIO_PD0_M1PWM0); ROM_GPIOPinConfigure(GPIO_PD1_M1PWM1); ROM_GPIOPinConfigure(GPIO_PA6_M1PWM2); ROM_GPIOPinConfigure(GPIO_PA7_M1PWM3); ROM_GPIOPinConfigure(GPIO_PF2_M1PWM6); ROM_GPIOPinConfigure(GPIO_PF3_M1PWM7); ROM_GPIOPinConfigure(GPIO_PF4_M1FAULT0); ROM_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 ); ROM_GPIOPinTypePWM(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7 ); ROM_GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4); PWM1_0_FLTSEN_R =3; //PWM fault inverted see page 1169 GPIO_PORTF_PUR_R=0x10; //weak pullup for Pin 4 ROM_PWMGenConfigure(PWM1_BASE, PWM_GEN_0, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_SYNC | PWM_GEN_MODE_FAULT_LEGACY); ROM_PWMGenConfigure(PWM1_BASE, PWM_GEN_1, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_SYNC | PWM_GEN_MODE_FAULT_LEGACY); ROM_PWMGenConfigure(PWM1_BASE, PWM_GEN_3, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_SYNC | PWM_GEN_MODE_FAULT_LEGACY); ROM_PWMGenPeriodSet(PWM1_BASE, PWM_GEN_0, period); ROM_PWMGenPeriodSet(PWM1_BASE, PWM_GEN_1, period); ROM_PWMGenPeriodSet(PWM1_BASE, PWM_GEN_3, period); ROM_PWMDeadBandEnable(PWM1_BASE, PWM_GEN_0, dt,dt); ROM_PWMDeadBandEnable(PWM1_BASE, PWM_GEN_1, dt,dt); ROM_PWMDeadBandEnable(PWM1_BASE, PWM_GEN_3, dt,dt); ROM_PWMSyncTimeBase(PWM1_BASE,PWM_GEN_0_BIT |PWM_GEN_1_BIT|PWM_GEN_3_BIT); ROM_PWMGenEnable(PWM1_BASE, PWM_GEN_0); ROM_PWMGenEnable(PWM1_BASE, PWM_GEN_1); ROM_PWMGenEnable(PWM1_BASE, PWM_GEN_3); delay(1); PWMFaultIntRegister(PWM1_BASE, oh_shit); ROM_PWMIntEnable(PWM1_BASE,PWM_INT_FAULT0); ROM_PWMOutputState(PWM1_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT | PWM1_BASE | PWM_OUT_2_BIT | PWM_OUT_3_BIT |PWM_OUT_6_BIT | PWM_OUT_7_BIT, true); } void Timer0Isr(void) { //10000x per second ROM_TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt irqcount++; timecount+=timeset; // 1 Hz is 192x256*256*256/10000=322122.5 if (timecount> 0xEFFFFFFF) timecount+=0xC0000000; if (timecount> 0xBFFFFFFF) timecount-=0xC0000000;; a=timecount>>16; a=a/(16384/(dots/3*2)); //a immer kleiner 2*dots: C000 *dots/3*2/ 4000= 12 *dots/3*2/4= 2*dots if (a<dots)ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0,period/2+sintable[a]*modu/256); else ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0,period/2-sintable[a-dots]*modu/256); a=a+dots*2/3; if (a>=2*dots) a-=2*dots; if (a<dots)ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_2,period/2+sintable[a]*modu/256); else ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_2,period/2-sintable[a-dots]*modu/256); a=a+dots*2/3; if (a>=2*dots) a-=2*dots; if (a<dots)ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6,period/2+sintable[a]*modu/256); else ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6,period/2-sintable[a-dots]*modu/256); ROM_PWMSyncUpdate(PWM1_BASE,PWM_GEN_0_BIT |PWM_GEN_1_BIT|PWM_GEN_3_BIT); switch(irqcount%10){ case 0: temperature=(temperature*127+analogRead(26))/128; break; case 1: voltage=(voltage*31+analogRead(27)*3)/32; break; case 2: current=(current*127+analogRead(25)*8)/128; break; case 3: poti=(poti*127+analogRead(28)*8)/128; break; } } void oh_shit(void) { //in case of severe overcurrent we shut down! ROM_PWMFaultIntClearExt(PWM1_BASE,PWM_INT_FAULT0); ROM_PWMOutputState(PWM1_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT | PWM1_BASE | PWM_OUT_2_BIT | PWM_OUT_3_BIT |PWM_OUT_6_BIT | PWM_OUT_7_BIT, false); }  

  2. Like
    reaper7 reacted to spirilis in CC3200 Wifi delay issue   
    I'm on a roll today folks -- if anyone wants to test-drive "AP mode client tracking", this next "servicepack" includes changes to WiFi.cpp/.h and utility/SimpleLinkCallbacks.cpp to enable the WiFiClass library to track clients who connect & disconnect from the AP, notifying the # of clients attached and when one does connect, making its IP address available via .getLastDevice():
    Example code in loop() to use this:
    static int knowndevs = 0; int nowdevs = 0; nowdevs = WiFi.getTotalDevices(); if (nowdevs > knowndevs) { Serial.print("Client connected! IP = "); WiFi.getLatestDevice().printTo(Serial); Serial.println(); } if (nowdevs < knowndevs) { Serial.println("Client disconnected."); } knowndevs = nowdevs; This could be used with autonomous WiFi devices to, say, enable a power-hungry gadget only when someone is connected to the AP, and shut it down when nobody is connected.
    As always, CC3100+MSP430/Tiva support was not left behind, and I personally tested the changes with CC3100+MSP430F5529LP and CC3100+TM4C123GXL LaunchPads.
    Note: WiFi.h limits the size of the registry database (basically an array of structs containing a boolean, uint8_t[4] and uint8_t[6] for IP & MAC) to 4 connected clients; above that, the "total connected" figure should still work but the getLastDevice() will keep showing the last one connected before the database became full.
    Could trim the memory usage a bit by just storing the last octet (192.168.1 is the subnet used by default anyhow), and use its state in place of the "boolean in_use" too.
  3. Like
    reaper7 reacted to spirilis in CC3200 Wifi delay issue   
    almost forgot to add, too, the new .sslConnect() option for WiFiClient.
    It does not perform certificate validation (that is a whole 'nother can of worms.... still not sure what we're going to do for that), but it'll get you connected to an SSL link.  One big caveat is the TCP connection needs to be SSL from the get-go; I don't see any way the CC3100 stack will let you open an unencrypted connection and then convert it into an SSL link (STARTTLS style).
  4. Like
    reaper7 reacted to spirilis in CC3200 Wifi delay issue   
    Download this and unzip it from the Energia main install directory, e.g. C:\energia-0101E0013 or wherever (Linux/MacOSX should work with this too).
    The fix for this bug, BTW, is that the Network Processor (I call it the "CC3100" within the "CC3200" personally) does provide flow-control messaging if its internal buffers have been used up, which can happen especially with certain .print* functions that do numbers -- typically numeric print/println's result in several discrete executions of the .write() function with only a single byte, which produce an sl_Send() WiFi Network Processor call all by themselves, and if I'm not mistaken (inferring from documentation) the CC3100 is programmed to allocate a separate 1500 byte buffer for each call.  Obviously that's inefficient, but there's no clear way around it just yet, however the updated WiFiClient.cpp now checks for the SL_EAGAIN (-11) return value and sets up a paced-retry loop instead of just assuming it's a critical error and closing the connection.
    See the WiFiClient::write(const uint8_t *buffer, size_t size) implementation in WiFiClient.cpp for details.
  5. Like
    reaper7 reacted to ewidance in CC3200 Wifi delay issue   
    A can also confirm the same phenomena (6 bad / 1 good). I've duplicated client.print to a serial.print. It displays properly on serial each call.
                Serial.print("analog input");             client.print("analog");             Serial.print(analogChannel);             client.print(analogChannel);             Serial.print(" = ");             client.print(" = ");             Serial.println(sensorReading);             client.print(sensorReading);             client.println("<br />");
  6. Like
    reaper7 reacted to MORA99 in [Energia Library] WebSocketClient   
    This is a Websocket client library written mostly in highlevel c(++) to make it easyier to take in.
    It was tested on a CC3200 and earlier on a TM4C1294 but I think it should work on anything that provides the WifiClient/EthernetClient interface, and has decent amounts of RAM.
    Current code is a bit rough, it contains debug prints and I have not made much optimization work with it, especially concerning long strings where it just allocates up to 64kbyte of ram, but hopefully the user has some control over what is returned and can keep it short(ish).
    It does not support frames over 65kbyte nor binary data at the moment, but its not too hard to implement if needed.
    At the moment there is only 1 callback, when data is recieved, more callbacks could be added for connect, disconnect, ping, pong, etc.
    Well work in progress
    Like my dht lib the source code is maintained on github and my part of the code is released to public domain.
    The zip includes sha1 and base64 code that I didnt write, links to their home is included in top of WebSocketClient files.

  7. Like
    reaper7 reacted to traxman in Anyone notice the 8-pin MSP430 yet?   
    Hello, I often use small controler 2230 but I'm very lazy guy, and I made small pcb to easy convert 14->8PIN for direct programming into launchpad board.
    Pcb have two part:
    - one for typical 1:1 SO8->DIP converter
    - second 1:1 but with SO8->DIP14 compatibility, ready for work directly in launchpad (like MSP430G2231).

    (Zip'ed *.pcb included in traxmaker/protel format)
    I have a few spare board (25pcs) ....
    Add 26.9.14
    I split adapters into two files:
    MSP430G2230_DIP8.PCB for 1:1 adapter
    MSP430G2230_DIP14.PCB for SO->DIP14 adapter
  8. Like
    reaper7 reacted to bluehash in Maker Faire NY 2014 Complimentary Tickets   
    Maker Faire pictures are here.
    There are some videos at the end.

  9. Like
    reaper7 got a reaction from bluehash in Maker Faire NY 2014 Complimentary Tickets   
    @@spirilis on hackaday
    good oration, congratulations!
  10. Like
    reaper7 got a reaction from GeekDoc in Maker Faire NY 2014 Complimentary Tickets   
    @@spirilis on hackaday
    good oration, congratulations!
  11. Like
    reaper7 got a reaction from simpleavr in Maker Faire NY 2014 Complimentary Tickets   
    @@spirilis on hackaday
    good oration, congratulations!
  12. Like
    reaper7 got a reaction from RobG in Maker Faire NY 2014 Complimentary Tickets   
    @@spirilis on hackaday
    good oration, congratulations!
  13. Like
    reaper7 got a reaction from spirilis in Maker Faire NY 2014 Complimentary Tickets   
    @@spirilis on hackaday
    good oration, congratulations!
  14. Like
    reaper7 got a reaction from yosh in Maker Faire NY 2014 Complimentary Tickets   
    @@spirilis on hackaday
    good oration, congratulations!
  15. Like
    reaper7 got a reaction from yosh in ESP8266 - IoT on the cheap ;)   
    @@spirilis - we just made ??a milestone   single GPIO control as output via AT commands
  16. Like
    reaper7 got a reaction from pine in ESP8266 - IoT on the cheap ;)   
    @@spirilis - we just made ??a milestone   single GPIO control as output via AT commands
  17. Like
    reaper7 got a reaction from bluehash in ESP8266 - IoT on the cheap ;)   
    @@spirilis - we just made ??a milestone   single GPIO control as output via AT commands
  18. Like
    reaper7 got a reaction from CorB in Energia-013 ethernet example doesn't compile   
    look at this:
    simply remove
    const IPAddress INADDR_NONE(0,0,0,0); from hardware/lm4f/libraries/Ethernet/Ethernet.h
  19. Like
    reaper7 reacted to spirilis in CC3200 & SSL   
    Ok, the links up above now have a new commit - SSL root CA support.
    TBH, I have not got it to work 100% kosher yet.  I keep trying www.ti.com with various root certs (chrome says they use GeoTrust, the closest I can get is GeoTrust Global CA - but it gives a "date error", possibly b/c that needs an Intermediate CA yet there's no way to specify one in the CC3100/CC3200 that I can find).
    I may test it with my own private root CA + self-generated certificate just to prove that it works.
    The functions for managing that-
    .sslRootCA(uint8_t *derfile, size_t length) - requires binary DER format
    .useRootCA() - Looks for /cert/rootCA.der, if it exists, use it (so you don't have to keep re-uploading the root CA each time you load a sketch)
    .sslStrict(true/false) - Insist that only a perfectly executed SSL connection be passable.
    .sslGetReason() - returns a const char * string indicating the last known error from sl_Connect(), good way to figure out WTF went wrong with your SSL connection attempt.
    .sslIsVerified - a public variable, test this after making a connection to see if it's truly a verified connection or not.
    If .sslRootCA() is called with either derfile = NULL or length = 0, the /cert/rootCA.der is deleted and the library won't attempt root CA verification anymore.
  20. Like
    reaper7 reacted to spirilis in CC3200 & SSL   
    I got basic outbound SSL sockets working.  Wasn't that hard, although the File Writing process for uploading a root CA certificate doesn't seem to work so I axed it...
    Replace your energia-0101E0013/hardware/cc3200/libraries/WiFi/WiFiClient.cpp and WiFiClient.h files with these:
    Syntax is just .sslConnect(hostname, port) or .sslConnect(IPAddress, port).
    Example sketch:
    #include <WiFiUdp.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiServer.h> const char ssid[] = "myWifiSSID"; const char wifipw[] = "blahblahblah"; void setup() { uint32_t msave; Serial.begin(115200); delay(2000); Serial.println("WiFi:"); WiFi.begin((char *)ssid, (char *)wifipw); while (WiFi.status() != WL_CONNECTED) { Serial.print('.'); delay(150); } Serial.println(); Serial.println("Connected- waiting for IP"); msave = millis(); while (WiFi.localIP() == INADDR_NONE) { Serial.print('.'); delay(150); if (millis()-msave > 5000) { Serial.println("Timeout waiting for IP; disconnecting & reconnecting."); WiFi.disconnect(); WiFi.begin((char*)ssid); msave = millis(); } } Serial.print(" done; IP="); IPAddress my_ip = WiFi.localIP(); Serial.println(my_ip); } void loop() { char buf[1025]; int i; size_t total = 0; WiFiClient http; Serial.println("Attempting HTTPS request-"); if (http.sslConnect("www.ti.com", 443)) { Serial.println("Connected to www.ti.com- submitting GET / HTTP/1.0 request"); http.print("GET / HTTP/1.0\r\nHost: www.ti.com\r\n\r\n"); Serial.println("Waiting for response..."); while (http.connected()) { while (!http.available()) delay(50); i = http.read((uint8_t *)buf, 1024); buf[i] = '\0'; total += i; //Serial.print(buf); } Serial.println("Disconnected by remote host."); Serial.print(total); Serial.println(" bytes read in total."); delay(100000000); } else { Serial.println("Error connecting to www.ti.com"); } } Output from serial monitor:
    WiFi: .. Connected- waiting for IP ............... done; IP= Attempting HTTPS request- Connected to www.ti.com- submitting GET / HTTP/1.0 request Waiting for response... Disconnected by remote host. 87527 bytes read in total.
  21. Like
    reaper7 reacted to energia in Energia 0101E0013 - How turn on optimization for Tiva/CC3200?   
    One thing you can try is to replace the pde.jar with the one in the attached zip file.
    If you are on windows simply replace the one in the Energia installation forlder.
    If you are on OS X: Right click Energia -> Show Package Content -> Browse to Contents->Resources->Java.
    Make sure that you backup the original pde.jar before copying the new one.
    The attached pde.jar was compiled on OS X but give that it is java it should run on all platforms.
  22. Like
    reaper7 reacted to RobG in WIZpix - Internet enabled pixel controller with PoE   
    WIZpix is an internet enabled RGB pixel controller with built in PoE. 
    WIZpix uses W5500 internet appliance to connect to internet and MSP430F5172 MCU to control RGB pixels.
    Built-in DC/DC converter allows use of PoE, which eliminates need for directly connected power supply, ability to place controller far away from the outlet, and use of only one inexpensive CAT-5 cable. 

  23. Like
    reaper7 reacted to Temboo in TI and Temboo partner for IoT   
    Hi everyone!
  24. Like
    reaper7 reacted to spirilis in TI and Temboo partner for IoT   
    Anyone else feel like they need to take a 2 week sabbatical from work to play with these new LaunchPad gadgets all day long?
    Sent from my Galaxy Note II with Tapatalk 4
  25. Like
    reaper7 got a reaction from monsonite in [Energia Library] EtherEncLib for ENC28J60   
    This is a very simple enc28j60 library created by Renato Aloi for atmega
    modifed by me for MSP430G2553 and MSP430F5529
    Please, check my latest master fork from Renato Aloi newMods branch
    or download directly v0.4.2:
    EtherEncLib-0.4.2.zip   fix CS, fix examples, disable debug from tcpstack
    EtherEncLib-0.4.zip     only harware SPI version (MSP430G2553 and MSP430F5529 tested)
    EtherEncLib_v03.zip - hard/soft spi version
    EtherEncLib_v2.zip - hardware spi version
    EtherEncLib_v01.zip - softspi version
    v03: selectable hardware/software spi
    all definitions moved to EtherEncLib.h lines 17,18 -> select between hard/soft spi lines 21,23-25 -> SPI pins definition for MSP430 lines 28,30-32,34 -> SPI pins definition for Stellaris & Tiva(?)  
    v02: hardware spi version
    enctypes.h file contains CS pins definition (lines 247, 250)  
    v01: init version
    At this moment, after my quick mod, spi communication work on softspi (shiftOut/shiftIn) and replace strange arduino access via registers like SPDR etc... So...shiftOut/shiftIn are not so fast enctypes.h file contains pins definition (lines 247-259)  
    description from EtherEncLib.cpp file:

  • Create New...