Jump to content
43oh

agaelema

Members
  • Content Count

    56
  • Joined

  • Last visited

  • Days Won

    39

Reputation Activity

  1. Like
    agaelema reacted to zeke in CCS for $9.99   
    The Node Lock uses the MAC address of a LAN adapter in your computer.
     
    So, I just bought a USB WiFi adapter and assigned its MAC address to the CCS license. Now I can move CCS around with my WiFi adapter.
  2. Like
    agaelema reacted to selcukc in Tiva LaunchPad: Internet of Things (IoT) with ESP8266 WiFi Module   
    In present work, I aim to control servo motor as an Internet of Things(IoT) so i use ESP8266 , which is the low cost wifi module (approx. 3$), to establish connection between Tiva LaunchPad(as a client) and Computer(as a server) via internet with Transmission Control Protocol (TCP). I use Java application to create server to control servo on the PC side of the project. One can see the Java Application in below video.



    Video Tutorial

    https://www.youtube.com/watch?v=2NBJP0-isrg

    Servo Motor: Micro Servo 3.7G (approx. 1.5$)
    WiFi Module: ESP8266 (approx. 3$)
    Source code (IoT.rar) can be found in below link. It incudes both Java(as a Server) and Code Composer Studio(as Client) codes.

     

    TI E2E
  3. Like
    agaelema reacted to terjeio in Compact command parser/dispatcher example   
    A command parser/dispatcher example from my CO2 laser engraver codebase, using a struct array containing the commands and associated  pointer to functions. A lot cleaner (and easier to maintain) than switch/case statements or if/else constructs...
    Functions get called with a pointer to the command tail for local parameter parsing.
    The struct array data are all placed in flash.
    typedef struct { char const *const command; bool (*const handler)(char *); const bool report; } command; bool query (char* params); bool start (char* params); bool moveXrel (char* params); bool moveYrel (char* params); bool moveZrel (char* params); bool XHome (char* params); bool YHome (char* params); bool ZHome (char* params); bool XYHome (char* params); bool zeroAllAxes (char* params); bool laser (char* params); bool setLaserPower (char* params); bool setImageDPI (char* params); bool setPulseDutyCycle (char* params); bool enableCoolant (char* params); bool enableAirAssist (char* params); bool setMode (char* params); bool getPosition (char* params); bool setPPI (char* params); bool setPulseWidth (char* params); bool enableExhaustFan (char* params); bool setEngravingSpeed (char* params); bool getStatus (char* params); bool setEchoMode (char* params); bool setAMode (char* params); bool setPWROffset (char* params); bool loadProfile (char* params); bool setXBcomp (char* params); void exeCommand (char *cmdline) { static const command commands[] = { "?", &query, true, "Power:", &setLaserPower, true, "DutyCycle:", &setPulseDutyCycle, true, "PulseWidth:", &setPulseWidth, true, "DPI:", &setImageDPI, true, "Start:", &start, true, "X:", &moveXrel, true, "Y:", &moveYrel, true, "Z:", &moveZrel, true, "HomeXY", &XYHome, true, "HomeX", &XHome, true, "HomeY", &YHome, true, "HomeZ", &ZHome, true, "ZeroAll", &zeroAllAxes, true, "Laser:", &laser, true, "Coolant:", &enableCoolant, true, "Air:", &enableAirAssist, true, "Mach3:", &setMode, true, "Pos", &getPosition, false, "PPI:", &setPPI, true, "Exhaust:", &enableExhaustFan, true, "Speed:", &setEngravingSpeed, true, "Status", &getStatus, false, "ASelect:", &setAMode, true, "PWROffset:", &setPWROffset, true, "LoadProfile:", &loadProfile, true, "XBComp:", &setXBcomp, true, "Echo:", &setEchoMode, false }; bool ok = false; uint32_t i = 0, numcmds = sizeof(commands) / sizeof(command), cmdlen; while(!ok && i < numcmds) { cmdlen = strlen(commands[i].command); if(!(ok = !strncmp(commands[i].command, cmdline, cmdlen))) i++; } if(ok) { ok = commands[i].handler(cmdline + cmdlen); if(commands[i].report) serialWriteLn(ok ? "OK" : "FAILED")); } else serialWriteLn("Bad command"); } For further reading see http://www.barrgroup.com/Embedded-Systems/How-To/C-Function-Pointers
     
     
     
  4. Like
    agaelema reacted to RROMANO001 in I2C scanner for 2553 & 5529   
    Actual out of box experience:
         I am new to Energia so I am still in the learning curve knee but about wire these are some FAQ or FIXUP:
     
     First attempt was not working, using an LCD bought from ebay wiring was not same as library example so take care when you use these devices, I wrote a pin pulser to be able to identify how pin where connected using a multimeter or one LED with series resistor. (sketch attached as file on PCF 8574[A])
     
     Wire is present on folder CORE, is required on folder WIRE to be attached as library, I placed for now a symbolic_link to original files and it cure both compile and library add too. Some library probably where developed on winzz so it suffer capitalization too on Linux and I suppose also on OSX, again link solved this problem before ask to cure problem.
     
     during test for learning how library work I wrote a scanner very similar to one found on this thread to see what return as error, no timeout is on library, transaction get not locking but deadloking in case of unresponsive bus.
     When P1.6 is Low Wire Library forever return 0 as if transaction was ok if no write and lock if no ack come back from device. This require more debugging inspection than just reading code.
     Wire.endTransmission(stop) default to true as from source overloading, using () version forever generate <I2C stop>.
     
     On launchpad P1.6 is attached green LED, this disturb I2C transaction and system forever hang or return OK, Logic analyser was reading ok but I suppose internal threshold is more higher than 1.8 volt and 1.9 where not enough. Seen observing LED glow and also attaching scope to measure bus parameter.
    Removing LED P1.6 Jumper scanner and other sketch I tested worked fine.
     
     LCD I bought on Ebay was not connected as from Library but I found was RS RW EN BL D4 D5 D6 D7, pulser can be useful to check how is connected, from china you get cheap items but at expense of our time.
     
    More to come when I better know forum and Energia.
    /* I2C Bit Pulse exerciser to identify pinout This sketch repeatedly pulse at 4 Second period every bit 5 time showing on serial console. example added 16 May 2015 by Roberto Romano modified by This example code is in the public domain. */ #include <Wire.h> #define I2CADDR 0x27 void setup() { // put your setup code here, to run once: Serial.begin(9600); // start serial for output Serial.println("I2C Pulser Begin"); Wire.begin(); // join i2c bus (address optional for master) } int errnum; void loop() { // put your main code here, to run repeatedly: Serial.println(); Wire.beginTransmission(I2CADDR); // Set and test Slave device Wire.write(0); errnum=Wire.endTransmission(); delay(5); Serial.print(" Errnum: "); Serial.print(errnum); if(errnum) else if(errnum) Serial.println(" -> I2C error!!!"); else { // Wire OK Serial.println(" -> OK"); for(int i=0;i<7;i++) { // bit scanner for loop Serial.print(" pulse on BIT: "); Serial.println(i); for(int j=0;j<5;j++) { // pulser loop Serial.print(" pulse High "); Serial.println(i); Wire.beginTransmission(I2CADDR); // Set and test Slave device Wire.write(1<<i); errnum=Wire.endTransmission(); delay(2000); Serial.print(" pulse Low "); Serial.println(i); Wire.beginTransmission(I2CADDR); // Set and test Slave device Wire.write(0); errnum=Wire.endTransmission(); delay(2000); } // pulser loop } // bit scanner for loop } // Wire OK }
  5. Like
    agaelema reacted to OzGrant in I2C scanner for 2553 & 5529   
    Fixed. For some reason Energia requires a Wire.write() before Wire.endTransmission() command. to get a valid returned value.
    Have fun.
    Grant
     
    -----------------------------------------------------------------------
    // I2C scanner for M430G2553 // Added  Wire.write(1);  for sketch to work. // Grant Forest May 2014 #include <Wire.h> uint8_t error, address; void setup () {     Serial.begin(9600);     Serial.println("G'Day MyI2C_ScannerV1");     Wire.begin(); } void loop () {   Serial.print(" Scanning...");   for(address = 1; address < 127; address++ )   {     Wire.beginTransmission(address);     Wire.write(1);  ///////////////////////////////////// sketch works ok when this line added     error = Wire.endTransmission();     if (error==0) {       Serial.print("Found Address 0x");       if (address<15) Serial.print('0');       Serial.print(address,HEX);       Serial.print(", ");       }   }          Serial.println();          delay(2000); } --------------------------------------------
  6. Like
    agaelema reacted to Binish in New MSP430FR5994 LaunchPad Development Kit   
    Hi,
     
        TI has a new launchpad MSP430FR5994 LaunchPad Development Kit  based on the MSP430FR5994.
     
    The new controller is in "Preview" status , but looks interesting -- 256KB FRAM + 8KB RAM + a Low-Energy Accelerator for Vector Math Operations ( TI claims 35x Faster Than ARM Cortex-M0+ Core for 256-Point Complex FFT ).
     
    Check the app note Benchmarking the Signal Processing Capabilities of the Low-Energy Accelerator (Rev. A)  for details.
     
        The launchpad itself is interesting as it has an on-board micro SD card and super capacitor. Has any one got hands on experience with this one? I was thinking of getting one for a data-logging application,  256KB FRAM + SD card  combo is very much tempting. 
     
       Would like to hear from you guys , has TI finally going in the right direction,  as far as MSP430 is concerned, with the LEA in the fight against ARM?
  7. Like
    agaelema reacted to terjeio in PCB Laser Exposer/Printer   
    Here are the files for my PCB Exposer/Printer, it is the complete package including mechanical design files.
     

    The printer itself.
     

    Example - a power control PCB for Raspberry Pi - 40 x 40 mm.
     
    Code includes driver for MCP4725 DAC, buffered serial port driver, stepper motor control and command parsing for the MSP430G2553 used as the main controller.
     
    Code and design files:
     
    PCB Exposer - controller code for MSP430G2553.zip
    PCB Exposer - desktop application.zip
    PCB Exposer - mechanical design files in Vectric format.zip
    PCB Exposer - schematics and PCBs.zip
     
    Desktop application is coded in C#, schematics and PCBs in KiCad format.
     
    There is some more information to be found in this tread:
    http://forum.43oh.com/topic/4990-what-are-you-doing-right-now/page-5
     
    Terje
     
     
  8. Like
    agaelema reacted to chicken in Casio watch rebuild w/ MSP430   
    Today Hackaday featured someone that replaced the innards of a Casio watch with an MSP430FR6972
    http://hackaday.com/2016/05/30/gutting-and-rebuilding-a-classic-watch/

     
    Very well documented on GitHub, including more pictures:
    https://github.com/carrotIndustries/pluto
     
    If the author is on 43oh:
  9. Like
    agaelema reacted to dubnet in New launchpad msp-exp430fr5994 with microSD   
    @@agaelema Thanks for doing the second test. Assuming the Launchpad user guide is accurate on the power consumption of the inserted SD card at 100uA, then that would infer that the average current consumption for the demo, without the SD, would be about 200uA. Then at 5uA average current for a periodic data logger perhaps you could get 40 hours (assuming very low leakage for the cap). Haven't done much with supercaps so I will need to take a look at the specs and come up to speed.
     
    Thanks again for taking the time to do another test.
  10. Like
    agaelema got a reaction from greeeg in New launchpad msp-exp430fr5994 with microSD   
    My launchpad arrived today
     

  11. Like
    agaelema got a reaction from Fmilburn in New launchpad msp-exp430fr5994 with microSD   
    My launchpad arrived today
     

  12. Like
    agaelema reacted to RobG in (Universal) Color LCD graphics library (2)   
    This is my new universal graphics library (original one is here.)
     
    Supported boards (this is out of the "box" support, but the library will work with any board after small changes.)
     
    TI's MSP430FR5969 LaunchPad (ugl16msp only for now)
    TI's MSP430F5529 LaunchPad
    TI's MSP430G2 LaunchPad with G2553 chip
    RobG's MSP430G2955 Dev Board
    RobG's MSP430F5172 Dev Board
    RobG's MSP430F5510 Dev Board
     
    Supported displays
     
    1.8" ST7735 based JD-T1800 - ugl8
    2.2" HX8340 based displays - ugl8
    2.2" ILI9225 based displays (touch panel) - ugl8
    2.2" ILI9341 based displays 320x240 pixels - ugl16
     
    Tiva versions are right here
     

     

     
     
    ugl8msp.zip (name change 4/18/14)
    ugl16msp.zip (updated 4/19/14)
  13. Like
    agaelema reacted to RobG in Graphics Library for MSP432   
    MSP432 version of my Universal Graphics Library.
    Works with my latest Color LCD BoosterPacks, 2.2" and 2.4" (320x240)
    Touch support will be added in late April.
     
    ugl432.zip
     

     
  14. Like
    agaelema got a reaction from pine in New launchpad msp-exp430fr5994 with microSD   
    Did you see this: "The MSP430F599x microcontrollers take low power and performance to the next level with the Low-Energy Accelerator (LEA_SC), a co-processor optimized for signal processing. this accelerator enables developers to efficiently process data using complex functions such as FFT, FIR and matrix multiplication. Implementation requires no DSP expertise with a free optimized DSP Library available."
     
         
     
    Awesome
  15. Like
    agaelema reacted to parakleta in Tiny printf() - C version   
    I use the following asm to convert integers into BCD so they can be printed using the hex print function. This example only converts 16 bit integers to values up to 4 digits, but you could increase the input or output by simply chaining rlc and dadd steps. Within this limitation it's much more efficient both in space and time than a table driven solution. The following is in the GCC3 style, but could easily be adapted to whatever else you're using.
     

    int input, output; __asm__ ( "clr %0 \n" "setc \n" "rlc %1 \n" ".Lagain%=: \n" "dadd %0, %0 \n" "rlc %1 \n" "jnz .Lagain%= \n" : "=g" (output), "+g" (input) : : "cc" );
  16. Like
    agaelema reacted to tonyp12 in tiny msp430 preemptive multitasking system   
    Tested on G2553 Launchpad with IAR, I recommend G2955 with 1K RAM if you want more than 3 task
    #include "msp430.h" #include "common.h" //=========================(C) Tony Philipsson 2016 ======================= funcpnt const taskpnt[]={ task1, task2, task3, // <- PUT YOUR TASKS HERE }; const int stacksize[tasks] = {28}; // a blank value defaults to 24 stack words //========================================================================= int taskstackpnt[tasks]; unsigned int taskdelay[tasks]; char taskrun; int main( void ) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer if (CALBC1_8MHZ != 0xff){ // erased by mistake? BCSCTL1 = CALBC1_8MHZ; // Set DCO to factory calibrate 1MHz DCOCTL = CALDCO_8MHZ; } int* multistack = (int*) __get_SP_register(); int i=0; while(i<tasks-1){ int j = stacksize[i]; if (!j) j = 24; multistack -= j; *(multistack) = (int) taskpnt[++i]; // prefill in PC *(multistack-1) = GIE; // prefill in SR taskstackpnt[i] = (int) multistack-26; // needs 12 dummy push words } WDTCTL = WDTPW+WDTTMSEL+WDTCNTCL; // 4ms interval at 8MHz smclk IE1 |= WDTIE; __bis_SR_register(GIE); asm ("br &taskpnt"); // indirect jmp to first task } //============= TASK SWITCHER ISR ============= #pragma vector = WDT_VECTOR __raw __interrupt void taskswitcher(void) { asm ("push R15\n push R14\n push R13\n push R12\n" "push R11\n push R10\n push R9\n push R8\n" "push R7\n push R6\n push R5\n push R4"); taskstackpnt[taskrun] = __get_SP_register(); if (++taskrun == tasks) taskrun = 0; __set_SP_register(taskstackpnt[taskrun]); asm ("pop R4\n pop R5\n pop R6\n pop R7\n" "pop R8\n pop R9\n pop R10\n pop R11\n" "pop R12\n pop R13\n pop R14\n pop R15"); } #include "msp430.h" #include "common.h" __task void task1(void){ P1DIR |= BIT0; while(1){ __delay_cycles(800000); P1OUT |= BIT0; __delay_cycles(800000); P1OUT &=~BIT0; } } #include "msp430.h" #include "common.h" __task void task2(void){ P1DIR |= BIT6; while(1){ __delay_cycles(1200000); P1OUT |= BIT6; __delay_cycles(1200000); P1OUT &=~BIT6; } } #include "msp430.h" #include "common.h" unsigned int fibo(int); __task void task3(void){ int temp = 0; while(1){ fibo(++temp); } } unsigned int fibo(int n){ if (n < 2) return n; else return (fibo(n-1) + fibo(n-2)); } #ifndef COMMON_H_ #define COMMON_H_ #define tasks (sizeof(taskpnt)/2) __task void task1(void); __task void task2(void); __task void task3(void); typedef __task void (*funcpnt)(void); #endif
  17. Like
    agaelema reacted to oPossum in Tiny printf() - C version   
    This is a tiny printf() function that can be used with the chips that come with the Launchpad. Code size is about 640 bytes with CCS.
     
    There are 7 format specifiers:
    %c - Character
    %s - String
    %i - signed Integer (16 bit)
    %u - Unsigned integer (16 bit)
    %l - signed Long (32 bit)
    %n - uNsigned loNg (32 bit)
    %x - heXadecimal (16 bit)
     
    Field width, floating point and other standard printf() features are not supported.
     
    printf() code

    #include "msp430g2231.h" #include "stdarg.h" void putc(unsigned); void puts(char *); static const unsigned long dv[] = { // 4294967296 // 32 bit unsigned max 1000000000, // +0 100000000, // +1 10000000, // +2 1000000, // +3 100000, // +4 // 65535 // 16 bit unsigned max 10000, // +5 1000, // +6 100, // +7 10, // +8 1, // +9 }; static void xtoa(unsigned long x, const unsigned long *dp) { char c; unsigned long d; if(x) { while(x < *dp) ++dp; do { d = *dp++; c = '0'; while(x >= d) ++c, x -= d; putc(c); } while(!(d & 1)); } else putc('0'); } static void puth(unsigned n) { static const char hex[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; putc(hex[n & 15]); } void printf(char *format, ...) { char c; int i; long n; va_list a; va_start(a, format); while(c = *format++) { if(c == '%') { switch(c = *format++) { case 's': // String puts(va_arg(a, char*)); break; case 'c': // Char putc(va_arg(a, char)); break; case 'i': // 16 bit Integer case 'u': // 16 bit Unsigned i = va_arg(a, int); if(c == 'i' && i < 0) i = -i, putc('-'); xtoa((unsigned)i, dv + 5); break; case 'l': // 32 bit Long case 'n': // 32 bit uNsigned loNg n = va_arg(a, long); if(c == 'l' && n < 0) n = -n, putc('-'); xtoa((unsigned long)n, dv); break; case 'x': // 16 bit heXadecimal i = va_arg(a, int); puth(i >> 12); puth(i >> 8); puth(i >> 4); puth(i); break; case 0: return; default: goto bad_fmt; } } else bad_fmt: putc(c); } va_end(a); }
     
    test code

    #include "msp430g2231.h" void serial_setup(unsigned out_mask, unsigned in_mask, unsigned duration); void printf(char *, ...); void main(void) { char *s; char c; int i; unsigned u; long int l; long unsigned n; unsigned x; // Disable watchdog WDTCTL = WDTPW + WDTHOLD; // Use 1 MHz DCO factory calibration DCOCTL = 0; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; // Setup the serial port // Serial out: P1.1 (BIT1) // Serial in: P1.2 (BIT2) // Bit rate: 9600 (CPU freq / bit rate) serial_setup(BIT1, BIT2, 1000000 / 9600); printf("%s", "\r\n*** printf() test ***\r\n"); s = "test"; c = 'X'; i = -12345; u = 12345; l = -1234567890; n = 1234567890; x = 0xABCD; printf("String %s\r\n", s); printf("Char %c\r\n", c); printf("Integer %i\r\n", i); printf("Unsigned %u\r\n", u); printf("Long %l\r\n", l); printf("uNsigned loNg %n\r\n", n); printf("heX %x\r\n", x); printf("multiple args %s %c %i %u %l %n %x\r\n", s, c, i, u, l, n, x); printf("\r\n*** Done ***\r\n"); for(;; }

  18. Like
    agaelema got a reaction from bluehash in Embedded_Printf   
    I would like to share with you this library. Is an embedded version of the famous "printf ( )".
    - https://github.com/agaelema/Embedded_Printf
     

     
    The start point was this post in the e2e where an user share a code.
    - http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/30479/107146
     
    I modified the code inserting new functions as binary notation, float notation, scientific notation, functions to convert numbers into strings and strings into numbers.
     
    The user can enable some #define enabling/disabling functions to use just what is useful.
     
    This is an resume comparison between the CCS native "printf" and this library (using th Launchpad EXP430FR6989 at 1MHz).
    - http://processors.wiki.ti.com/index.php/Printf_support_for_MSP430_CCSTUDIO_compiler
     

     
    To facilitate the port to other devices there is a separated file. Currently there are two ports: MSP430G2553 and MSP430FR6989.
     
    I hope it is useful.
  19. Like
    agaelema got a reaction from tripwire in Embedded_Printf   
    My initial objective is not create the smaller or better code, is just learn more things related to embedded world.
     
    This code has a lot to improve in size and performance, but anyway, can be useful for someone, even though there are many others.
     
    Thanks for the link, I will study it. The approach to convert the number seems to be more efficient.
  20. Like
    agaelema got a reaction from Fmilburn in Embedded_Printf   
    I would like to share with you this library. Is an embedded version of the famous "printf ( )".
    - https://github.com/agaelema/Embedded_Printf
     

     
    The start point was this post in the e2e where an user share a code.
    - http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/30479/107146
     
    I modified the code inserting new functions as binary notation, float notation, scientific notation, functions to convert numbers into strings and strings into numbers.
     
    The user can enable some #define enabling/disabling functions to use just what is useful.
     
    This is an resume comparison between the CCS native "printf" and this library (using th Launchpad EXP430FR6989 at 1MHz).
    - http://processors.wiki.ti.com/index.php/Printf_support_for_MSP430_CCSTUDIO_compiler
     

     
    To facilitate the port to other devices there is a separated file. Currently there are two ports: MSP430G2553 and MSP430FR6989.
     
    I hope it is useful.
  21. Like
    agaelema got a reaction from tripwire in Embedded_Printf   
    I would like to share with you this library. Is an embedded version of the famous "printf ( )".
    - https://github.com/agaelema/Embedded_Printf
     

     
    The start point was this post in the e2e where an user share a code.
    - http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/30479/107146
     
    I modified the code inserting new functions as binary notation, float notation, scientific notation, functions to convert numbers into strings and strings into numbers.
     
    The user can enable some #define enabling/disabling functions to use just what is useful.
     
    This is an resume comparison between the CCS native "printf" and this library (using th Launchpad EXP430FR6989 at 1MHz).
    - http://processors.wiki.ti.com/index.php/Printf_support_for_MSP430_CCSTUDIO_compiler
     

     
    To facilitate the port to other devices there is a separated file. Currently there are two ports: MSP430G2553 and MSP430FR6989.
     
    I hope it is useful.
  22. Like
    agaelema reacted to Fmilburn in MSP430G2955 Launchpad Development   
    I have lightly modified the pins_energia.h file by spirilis to compile with Energia v17 and it seems to be running fine on the G2955.  I'm using the pin assignments by RobG, but put SS on pin 8.  Using a F5529 LaunchPad to program.  The repository is here.
     
    I had almost finished adding the G2955 to Energia using my own pin assignments and pins_energia.h when I discovered this thread.  Oops.  Oh well, it was a good learning exercise and I got to compare my own effort to a more polished one.
  23. Like
    agaelema reacted to jamjam in New launchpad msp-exp430fr5994 with microSD   
    Looks like TI have launched a new part, 256KB FRAM and 4 UART's a dream for me.
    Is Energia support available at launch? Happy to help out if not.
     
    http://www.ti.com/tool/msp-exp430fr5994
     
    Great news or a very cruel April fool!
     
     
  24. Like
    agaelema reacted to greeeg in Simple FAT32-SD-Project   
    @@Lacto, You are right, petietFS does not NEED a sector buffer. (requiring 512 bytes of RAM.)
     
    However be aware that there are many limitations due to this restriction http://elm-chan.org/fsw/ff/pf/write.html
     
    Cannot create file. Only existing file can be written. Cannot expand file size. Cannot update time stamp of the file. Write operation can start/stop on the sector boundary. Read-only attribute of the file cannot block write operation. These are some serious limitations. Especially for a datalogger. So while it IS possible, it's not without it's limitations.
     
    A major disadvantage is this point "Write operation can start/stop on the sector boundary."
    This means you need to write in blocks of 512 bytes, otherwise the blocks are zero padded to reach the boundary.
     
     
    Typically petietFS is used for applications only requiring read operations, due to these limitations.
  25. Like
    agaelema got a reaction from tripwire in Products using MSP430   
    Teardown Tuesday: Kwikset SmartCode Lock
     
    http://www.allaboutcircuits.com/news/teardown-tuesday-kwikset-smartcode-lock/
     
     

×
×
  • Create New...