Custom Search

Category Archives: Uncategorized

I will return shortly

0
Filed under Uncategorized

I’m just on a short break from blogging at this moment, I have been working on getting my car fixed (i am doing the work myself) Adjusting to my new job.

Its tough getting my schedule back to normal. I have been working nights for 2 years with only four 10 hour shifts. Now i am back on a normal 9-5 5 days a week.
So stay tuned I will be back very shortly

Thanks for reading :)

MSP430: Custom calibration for DCO

0
Filed under electronics, Hardware, MSP430, programing, Uncategorized

While using the launchpad and Value line chips, I was a little Disappointed in lack of calibration data and no way to reliably change the default settings. So I started flashing the DCO calibrations data –> original post http://www.43oh.com/forum/viewtopic.php?f=10&t=239&hilit=calibration
Now the default 1 8 12 and 16 MHZ settings are fine but what if you wanted a bunch of chips to run on 3MHz or 500KHz. Are you will to try and figure out the RSEL and MOD and DCO bits and start randomly flipping testing settings? To me this sounds like a long and boring process and I don’t have the time to test and try and get 2MHz, or what if I need 10MHz , my scope doesn’t even come close to that :( .

So I decided to modify the TI DCO flash calibration code from TIs examples, these changes allow me to set the default and the other calibration data to the settings I want.
The few changes I made are,

  • Added Xcap setting to BCSCTL3 to make internal cap 12.5pF
  • Added custom constant to replace 1MHz default(244), – new one is for 2MHz

no other changes made to the code.

custom_dco

 

Now there is a few things to remember, This code will re-write over TI calibrated constants if you have An F series (IE everything but value line G series) chips. Or it will Write the calibration to the G line chips – which are not calibrated when you get them except the 1MHz default.

SO USE THIS CODE AT YOUR OWN RISK!!

 



//******************************************************************************
// Custom DCO settings- based on TI code example
//
// MSP430F20xx Demo - DCO Calibration Constants Programmer
//
// NOTE: THIS CODE REPLACES THE TI FACTORY-PROGRAMMED DCO CALIBRATION
// CONSTANTS LOCATED IN INFOA WITH NEW VALUES. USE ONLY IF THE ORIGINAL
// CONSTANTS ACCIDENTALLY GOT CORRUPTED OR ERASED.
//
//
// MSP430F20xx
// ---------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P1.0|--> LED
// | P1.4|--> SMLCK = target DCO
// Orignal Code By
// A. Dannenberg
// Texas Instruments Inc.
// May 2007
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A
//******************************************************************************
//******************************************************************************
/*Flash Custom DCO settings, This will replace The default 1MHz */
/* to use
//Custom calibration
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation
*/
//ACLK = LFXT1/8 = 32768/8, MCLK = SMCLK = target DCO
//* External watch crystal installed on XIN XOUT is required for ACLK *//
//******************************************************************************
#include "msp430f2013.h"
#define DELTA_CUSTOM 489 // 489 x 4096Hz = 2002944Hz or 2.02MHz
#define DELTA_8MHZ 1953 // 1953 x 4096Hz = 7.99MHz
#define DELTA_12MHZ 2930 // 2930 x 4096Hz = 12.00MHz
#define DELTA_16MHZ 3906 // 3906 x 4096Hz = 15.99MHz
unsigned char CAL_DATA[8]; // Temp. storage for constants
volatile unsigned int i;
int j;
char *Flash_ptrA; // Segment A pointer
void Set_DCO(unsigned int Delta);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
for (i = 0; i < 0xfffe; i++); // Delay for XTAL stabilization
P1OUT = 0x00; // Clear P1 output latches
P1SEL = 0x10; // P1.4 SMCLK output
P1DIR = 0x11; // P1.0,4 output
BCSCTL3 = XCAP_3; // Set internal cap to 12.5
j = 0; // Reset pointer
Set_DCO(DELTA_16MHZ); // Set DCO and obtain constants
CAL_DATA[j++] = DCOCTL;
CAL_DATA[j++] = BCSCTL1;
Set_DCO(DELTA_12MHZ); // Set DCO and obtain constants
CAL_DATA[j++] = DCOCTL;
CAL_DATA[j++] = BCSCTL1;
Set_DCO(DELTA_8MHZ); // Set DCO and obtain constants
CAL_DATA[j++] = DCOCTL;
CAL_DATA[j++] = BCSCTL1;
Set_DCO(DELTA_CUSTOM); // Set DCO and obtain constants
CAL_DATA[j++] = DCOCTL;
CAL_DATA[j++] = BCSCTL1;
Flash_ptrA = (char *)0x10C0; // Point to beginning of seg A
FCTL2 = FWKEY + FSSEL0 + FN1; // MCLK/3 for Flash Timing Generator
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY + LOCKA; // Clear LOCK & LOCKA bits
*Flash_ptrA = 0x00; // Dummy write to erase Flash seg A
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
Flash_ptrA = (char *)0x10F8; // Point to beginning of cal consts
for (j = 0; j < 8; j++)
*Flash_ptrA++ = CAL_DATA[j]; // re-flash DCO calibration data
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCKA + LOCK; // Set LOCK & LOCKA bit
while (1)
{
P1OUT ^= 0x01; // Toggle LED
for (i = 0; i < 0x4000; i++); // SW Delay
}
}
void Set_DCO(unsigned int Delta) // Set DCO to selected frequency
{
unsigned int Compare, Oldcapture = 0;
BCSCTL1 |= DIVA_3; // ACLK = LFXT1CLK/8
TACCTL0 = CM_1 + CCIS_1 + CAP; // CAP, ACLK
TACTL = TASSEL_2 + MC_2 + TACLR; // SMCLK, cont-mode, clear
while (1)
{
while (!(CCIFG & TACCTL0)); // Wait until capture occured
TACCTL0 &= ~CCIFG; // Capture occured, clear flag
Compare = TACCR0; // Get current captured SMCLK
Compare = Compare - Oldcapture; // SMCLK difference
Oldcapture = TACCR0; // Save current captured SMCLK
if (Delta == Compare)
break; // If equal, leave "while(1)"
else if (Delta < Compare)
{
DCOCTL--; // DCO is too fast, slow it down
if (DCOCTL == 0xFF) // Did DCO roll under?
if (BCSCTL1 & 0x0f)
BCSCTL1--; // Select lower RSEL
}
else
{
DCOCTL++; // DCO is too slow, speed it up
if (DCOCTL == 0x00) // Did DCO roll over?
if ((BCSCTL1 & 0x0f) != 0x0f)
BCSCTL1++; // Sel higher RSEL
}
}
TACCTL0 = 0; // Stop TACCR0
TACTL = 0; // Stop Timer_A
BCSCTL1 &= ~DIVA_3; // ACLK = LFXT1CLK
}

So you want a your own custom frequency, now the easiest way to do this is take your target clk speed and divide it by 4096. which 4096 is 32KHz clock divided by 8. For my 2MHz calculation I did 489 x 4096Hz = 2002944Hz or 2.02MHz
you division will get you close to the number you will need, round up or down according to your frequency. I choose to go a little over/ round up.

Remember the Faster your clock, the farther you will be away from your target
example - 488 x 4096 = 1,998,848
489 x 4096 = 2,002,944
difference 4,096

Its not too bad but if you are going for a specific CLK speed you may need to try a different method like an oscilloscope, and manually changing the DCO, RSEL, MOD bits .

FYI there is a test program included in the zip file to test your new calibration data.

Support OSHW!!!

0
Filed under Uncategorized

Support Open Source Hardware!!

http://freedomdefined.org/OSHW

Open Source Hardware (OSHW) Statement of Principles 1.0

Open source hardware is hardware whose design is made publicly available so that anyone can study, modify, distribute, make, and sell the design or hardware based on that design. The hardware’s source, the design from which it is made, is available in the preferred format for making modifications to it. Ideally, open source hardware uses readily-available components and materials, standard processes, open infrastructure, unrestricted content, and open-source design tools to maximize the ability of individuals to make and use hardware. Open source hardware gives people the freedom to control their technology while sharing knowledge and encouraging commerce through the open exchange of designs.

PCLinux: a great alternitive to Ubuntu

0
Filed under Uncategorized

Recently i have been having issues with my Ubuntu install, well no really recently but ever since i upgraded to 9.10 and then to 10.04 and then to 10.10,  I have had nothing but trouble with the system. So off i went to look for a new Distro, Gentoo, openSuse, PClinux Mint linux, Debian, and a few other smaller ones. But i had to narrow it down a little further. I wanted a Gnome interface (personal preference), a Debian based distro was preferable and we cant forget good old bash lol. First one i tried was PCLinux  with the Gnome desktop. My first thoughts…….:) gnome loads and my keyboard and mouse works and so does the sound….what more could i ask for lol.

Some key things that i like

  • Easy configuration manager
  • Supports my hardware right from the start
  • live CD works great
  • easy network setup
  • great list of repositories

Cons or things i didnt like

  • Duel monitor support ? it works but no settings changes and the screen blanks every 5 mins or so
  • Boot up is a little long
  • themes, are just OK lol
  • no other real complaints —Yet……

as of right now im sticking to this distro, i will be testing some of the others in a few weeks.

http://www.pclinuxos.com/

Your Comments are welcome!!

0
Filed under Uncategorized

I wanted to get some opinions on my site, I want to know what I can change or  improve.

I know my writing isn’t always the best but I try. If you have any suggestions to improve my writing, or technical abilities or you just don’t like me. please speak up!!  ……Trolls welcome! lol