I'm not experienced in SPI usage in MSP430, but I haven't noticed
following things:

1) SWRST flag in U1CTL is not disabled in your sources (probably 
the "while((IFG1 & UTXIFG1));" waits endless)

2) Your app treats the reading & writing from/to RX/TX USART buffers as
blocking ones - those are not !!. When you want to make blocking reads
and writes you must waits for apropriate flags to change: TXEPT in
U1TCTL and URXIFG1 in IFG2.

3) By the way: UTXIFG1 flag is not in register IFG1 !!! (at least not in
x169)

4) Prepare a JTAG for yourself and use it together with gdb - it makes
the work really simpler.

        regards,

W liście z śro, 18-08-2004, godz. 19:18, Ian Bobbitt pisze: 
> Hello,
> 
> I am trying to interface a MSP430F169 to an Atmel AT45DB021B flash.  As a 
> first attempt, I am trying to read the status register, which contains a 
> part-specific bit string for size determination, as well as a busy indicator. 
>  I have the data lines on USART1, and /CS on P3.0.  I have tried the 
> following code to read from the part and output the register on P1, but have 
> been unsuccessful thus far. This is my first MSP430 project.  What am I doing 
> wrong, and how can I fix it?
> 
> #include <msp430x16x.h>
> #include <stdlib.h>
> #include <signal.h>
> #include <io.h>
> 
> #define nCS_LOW { P3OUT &= ~BIT0; }
> #define nCS_HIGH { P3OUT |= BIT0; }
> 
> #define WRITE_BYTE(b) { while ((IFG1 & UTXIFG1) == 1); TXBUF1 = b; }
> 
> int main(void);
> void setup(void);
> unsigned char read_status_reg(void);
> 
> int main(void)
> {
>   setup();
>   nCS_HIGH;
>   while(1)
>   {
>     P1OUT = read_status_reg();
>   }
> }
> 
> unsigned char read_status_reg(void)
> {
>   unsigned char x;
>   nCS_LOW;
>   while((IFG1 & UTXIFG1));
>   TXBUF1 = 0x57; // read status reg
>   x = RXBUF1;
>   nCS_HIGH;
>   return x;
> }
> 
> void setup(void)
> {
>   WDTCTL = WDTPW|WDTHOLD;  // disable watchdog
> 
>   P1DIR = 0xFF;
>   P1OUT = 0xFF;
>  
>   ME2    = USPIE1;
>   UTCTL1 = SSEL1|SSEL0|STC;
>   UCTL1  = CHAR|SYNC|MM;
>   UBR01  = 0x02;
>   UBR11  = 0x00;
>   UMCTL1 = 0x00;
> 
>   P5SEL |= BIT1|BIT2|BIT3; // SPI 5.1-5.3
>   P3OUT |= BIT0;           // nCS output;
> } 
> 
> 
> 
> 
> -------------------------------------------------------
> SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
> 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
> Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
> http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Reply via email to