This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR5972

Other Parts Discussed in Thread: MSP430FR5972

Hi my name is Luigi 

sorry for my English 

I would like to know if someone have problems with  CPU MSP430fr5972 

I'm developing  a new product,  I program only in Assembly and I used  this CPU

but I found some problems, I would like know if there are my errors or should

be some problems on this cpu. because I need to produce I final product and want to be sure.

First of all I want to precise that I write direct data into the Information memory segment without any write 

eeprom or flash mechanism like example MSP30G2553, and the data are maintained properly.

1) every time that the cpu start after reset always JUMP into the JMBINFG interrupt also when theFEt 

emulator tool is disconnected.

2) The system remains stationary do not know where, if switch off the cpu and than switch on start properly

3) if with FET I set one breakpoint often don't jump into the right line but in the other line, I think this is because

id there is BIT instruction also if is NOP operation the breakpoint is lost 

4) I put this electronic board near to the high temperature around 85 °C , after seome minute 

the memory is erased, I don't know if all or only one part but need to program again the CPU

probably is at the temperature limit 

in the case of magnetic field can should be erase thei memeory ? 

other question if the memory is erase is possible through bootloader by rs232 reload the firmware 

I don't have experience in bootloader.

I want to use a bootloader to upgrade the firmware there is already the utility in windows

that can be used with RS232? 

 

best Regards 

Luigi 

 

  

  • Hi Luigi,

    Why are you attempting to use assembly rather than C?  Modern C compilers are very efficient, and C code is MUCH easier to write and debug compared to assembly.

    For the temperature testing, can you elaborate on what your heat source is, and how precise it is?

    For the bootloader, please take a look at the MSP BSL Tools Page.  This site provides information on all our BSL options and how to use them.  Included is a document called "MSP430FR57xx, FR58xx, FR59xx, FR68xx, and FR69xx Bootloader (BSL) User's Guide".  This guide would be a great starting place for learning more about the BSL on your MSP430FR5972 and how to use the bootloader.

    Mike

  • Luigi,

    Any update to this thread? If not I will close the thread.

    Thanks,
    Mike
  • Mike

    sorry, not yet, at the moment I stopped the development about the firmware, I will finish the hardware

    I will Check all in April when finish the development. .

    I work in assembly from long time,  I don't want to learn C because I'm not so Young

    and now I develop only a few project in one year, 4 / 5 maximum, and my job is now more

    versus commercial job and corporate responsability.

    For the temperature testing, can you elaborate on what your heat source is, and how precise it is

    About the temperature source  my electronic control is use for cooking system, so I can have high temperature.

    during my last test I have the system immediately on the top of the boiling water 5/5 cm over,  so probably may be  around 90° / 95°C into the

    case where was the processor, and in this case the processor lost the firmware, after programming again work well..

    you can reply to the followings my question ? step by step ?

     

    First of all I want to precise that I write direct data into the Information memory segment without any write 

    eeprom or flash mechanism like example MSP30G2553, and the data are maintained properly.

    1) every time that the cpu start after reset always JUMP into the JMBINFG interrupt also when theFEt 

    emulator tool is disconnected.

     3) if with FET I set one breakpoint often don't jump into the right line but in the other line, I think this is because

    id there is BIT instruction also if is NOP operation the breakpoint is lost 

     

    in the case of magnetic field can should be erase thei memeory ? 

    I order to the segment problems CPU40 is correct to put nop in this manner

    BIT.W    #BIT1 ,LABEL,JUMP

    NOP

    ........

    JUMP:

    NOP

    ......

    REGARDS

    LUIGI

    Thank you Luigi

      

  • Luigi,

    Do you use IAR assembler? Please show some of the code you have. I may be able to help you.

    --OCY
  • Ocy
    yes I use IAR assembler , what code yuo want to see, I have alot of macro function

    Luigi
  • Could you show me a simple but complete example of your code. Does the cpu start after reset always JUMP into the JMBINFG interrupt?
  • BSET_W = BIT W
    BSET_B = BIT B
    JSR= CALLA #??
    SALTA = BRA
    CLEAR_RAM_AND_REG = MACRO CLR RAN AND REGISTER



    EVEN
    main:
    MAIN: SEI ;* disabilita gli interrupt
    MOV.W #END_RAM,SP ;* INIZIALIZZA LO STACK POINTER

    ;*** INIZIALIZZAZIONE REGISTRI OSCILLATORE **************
    ;*********** INIZIALIZZAZIONE I/O ***********************
    MOV.B #00010000b,P1OUT ;* PORTA 1
    MOV.B #00000000b,P2OUT ;* PORTA 2
    MOV.B #00000000b,P3OUT ;* PORTA 3
    MOV.B #00001100b,P4OUT ;* PORTA 4
    MOV.B #00000000b,P5OUT ;* PORTA 4
    MOV.B #00000000b,P6OUT ;* PORTA 4
    MOV.B #00011111b,P7OUT ;* PORTA 4
    MOV.B #00000000b,P9OUT ;* PORTA 4
    MOV.W #00000000b,PJOUT ;* TUTTE LE USCITE AD OFF

    MOV.B #11110000b,P1DIR ;* SP EGNE I DIGIT DEL DISPLAY CON
    MOV.B #00001101b,P2DIR ;* TUTTE LE USCITE AD OFF
    MOV.B #11111111b,P3DIR ;* TUTTE LE USCITE AD OFF
    MOV.B #01111111b,P4DIR ;* TUTTE LE USCITE AD OFF
    MOV.B #10000000b,P5DIR ;* TUTTE LE USCITE AD OFF
    MOV.B #11111111b,P6DIR ;* TUTTE LE USCITE AD OFF
    MOV.B #11111111b,P7DIR ;* TUTTE LE USCITE AD OFF
    MOV.B #10001111b,P9DIR ;* TUTTE LE USCITE AD OFF
    MOV.W #11110000b,PJDIR ;* TUTTE LE USCITE AD OFF
    ;* MOV.W #11110010b,PJDIR ;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJSEL0*/

    MOV.B #00001111b,P1SEL0 ;* 4 A TO D
    MOV.B #00001111b,P1SEL1 ;* 4 A TO D
    MOV.B #00000011b,P2SEL0 ;* RS2332
    MOV.B #00000000b,P2SEL1 ;* RS2332
    MOV.B #00000000b,P3SEL0 ;*
    MOV.B #00000000b,P3SEL1
    MOV.B #00000000b,P4SEL0 ;* SPI
    MOV.B #11110000b,P4SEL1 ;* SPI
    MOV.B #00000000b,P5SEL0 ;*
    MOV.B #00000000b,P5SEL1 ;*
    MOV.B #00000000b,P6SEL0 ;*
    MOV.B #00000000b,P6SEL1 ;*
    MOV.B #00000000b,P7SEL0 ;*
    MOV.B #00000000b,P7SEL1 ;*
    MOV.B #00000000b,P9SEL0 ;*
    MOV.B #00000000b,P9SEL1 ;*
    MOV.W #11110000b,PJSEL0 ;*
    ;* MOV.W #11110010b,PJSEL0 ;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJDIR*/
    MOV.W #00000000b,PJSEL1 ;*

    MOV.B #11111111B,P3REN ;* PULL UP DOWN
    BCLR_W LOCKLPM5,PM5CTL0 ;* ATTIVA GLI I/O ALTRIMENTI SONO IN TRISTATE */
    MOV.B #00H,P3OUT
    NOP
    BSET_B CS_OUT,P1OUT
    NOP
    NOP
    BCLR_B CS_OUT,P1OUT
    OFF_COLONNE
    /******************************************************************************/
    MOV.W #FRCTLPW+NWAITS1,FRCTL0 /* WAIT STATES 1 */
    MOV.W #WDTPW+WDTSSEL0+WDTCNTCL+WDTIS2+WDTIS0,WDTCTL // attivazione watchdog 250 Ms
    /******************************** RICARICA LA EEPROM IN RAM ******************/
    clr_ram_andreg ;* MACRO , AZZERA TUTTA LA RAM

    /******************************************************************************
    ********* INIZIALIZZAZIONE CLOCK SYSTEM **************************************/
    #include "c:\firmware\EL_0005_15\WORK\INIT_CLOCK_SYSTEM.H"
    /******************************************************************************/
    /********************* ATTIVAZIONE BASE TIMER **********************/
    MOV.W #(TASSEL1+TACLR+MC1),TA0CTL ;SOURCE FROM SMCLK ;*CONTINUOS MODE; IRQ DA OVERFLOW RIS.TIMER 2uS
    MOV.W #BASE_OCMPL1_2000uS,TA0CCR0 ;* 125 us
    MOV.W #(CCIE),TA0CCTL0

    MOV.W #(TASSEL0+TACLR+MC1+ID0+ID1),TA1CTL ;SOURCE FROM ACLK / 8 ;*CONTINUOS MODE; IRQ DA OVERFLOW RIS.TIMER 2uS
    MOV.W #BASE_500_MS_ACLK,TA1CCR0 ;* 125 us
    MOV.W #(CCIE),TA1CCTL0
    /******************************************************************************************/
    BSET_W OFIE+VMAIE+WDTIE,SFRIE1 /* OSCILLATOR FAULT INTERRUPT ENABLE VACANT MEMORY ACCESS INTERRUPT ENABLE WATCH DOG INTERRUPT ENABLE */

    /****** ATTIVA IL REF_A RIFEIRIMENTO PER VARI MODULI *****/


    ATT_LIBERA:
    NOP
    JSR WATCH_DOG
    BRSET_W REFGENBUSY,REFCTL0,ATT_LIBERA
    NOP
    BSET_W (REFVSEL0+REFVSEL1+REFGENRDY+REFGENOT+REFBGOT+REFON),REFCTL0 /* 2,5 VOLT INTERNAL REFERENCE */
    BSET_W (ADC12MSC+ADC12ON),ADC12CTL0
    BSET_W (ADC12CONSEQ0+ADC12SHP),ADC12CTL1 /* SINGOLA CONVERSIONE DI SEQUENZA DI CANALI */
    BSET_W ADC12RES1,ADC12CTL2
    BSET_W (ADC12TCMAP+ADC12BATMAP),ADC12CTL3
    BSET_W (ADC12VRSEL0),ADC12MCTL0
    BSET_W (ADC12VRSEL0+ADC12INCH0),ADC12MCTL1
    BSET_W (ADC12VRSEL0+ADC12INCH1),ADC12MCTL2
    BSET_W (ADC12VRSEL0+ADC12INCH0+ADC12INCH1+ADC12EOS),ADC12MCTL3
    MOV.W #00H,ADC12IER0
    BSET_W ADC12IE3,ADC12IER0 /* ABILITA L'INTERRUPT DEL CANALE 3 */
    ATT_LIBERA_1:
    NOP
    JSR WATCH_DOG
    BRCLR_W REFGENRDY,REFCTL0,ATT_LIBERA_1
    WAIT_CONV:
    NOP
    JSR WATCH_DOG
    BRSET_W ADC12BUSY,ADC12CTL1,WAIT_CONV
    NOP
    CLI
    /***********************************************************************************************/
    /******************************** LAMP TEST DEL DISPLAY ***************************************/

    MOV.B #00000000B,OUTPUT
    CALLA #DELAY_500mS /* ATTEDA 500mS */
    BSET_W (ADC12ENC+ADC12ON+ADC12SC),ADC12CTL0 /* FA PARTIRE LA CONVERSIONE */
    CALLA #ACCENDI_DISPLAY_LED
    ACCENDI_PUNTI
    CALLA #DELAY_1_SEC /* ATTEDA 1 SECONDO */
    CALLA #DELAY_1_SEC /* ATTEDA 1 SECONDO */
    CALLA #SPEGNI_DISPLAY_LED
    SPEGNI_PUNTI
    SUONO_ALLARME
    END
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #include "c:\firmware\EL_0005_15\WORK\INIT_CLOCK_SYSTEM.H"

    CLOCK_AND_SYSTEM INCLUDE FILE

    MOV.W #100,R4 /* PICCOLO DELAY */
    DECRAS:
    MOV.W #WATCHDOG_32ms,WDTCTL
    DEC.W R4
    JNZ DECRAS
    BCLR_W OFIFG,SFRIFG1 /* AZZERA IL FLAG DI ERRORE DI UN QUARZO */
    MOV.W #CSKEY,CSCTL0 /* ABILITA LA SCRITTURA NEI REGISTRI CLOCK SYSTEM */
    BCLR_W SELS1+SELM1,CSCTL2 /* ACLK /1 SMCLK /2 MCLK/2 */
    BSET_W SELS0+SELS2+SELM0+SELM2,CSCTL2 /* ACLK /1 SMCLK /2 MCLK/2 */
    BCLR_W DIVS_0+DIVS_1+DIVS_2+DIVM_0+DIVM_1+DIVM_2,CSCTL3
    NOP
    BCLR_W HFXTOFF+LFXTOFF,CSCTL4
    NOP
    TEST_HFXTOFFG:
    BCLR_W HFXTOFFG+LFXTOFFG,CSCTL5
    BCLR_W OFIFG,SFRIFG1
    NOP
    BRSET_W HFXTOFFG,CSCTL5,TEST_HFXTOFFG
    NOP
    TEST_LFXTOFFG:
    BCLR_W HFXTOFFG+LFXTOFFG,CSCTL5
    BCLR_W OFIFG,SFRIFG1
    NOP
    BRSET_W LFXTOFFG,CSCTL5,TEST_LFXTOFFG
    NOP
    MOV.B #000H,CSCTL0_H /
  • Thank you.
    I do not understand even the first line.
    Are you trying to define or equate the word "BSET_W" to two words "BIT" and "W"?
    My copy of IAR assembler flag your first line with "invalid syntax" or "Bad instruction".
  • I think I can work on your code.

    (1) But please tell me which bit in P1OUT is CS_OUT?

    (2) Could you send me the file used in:
    #include "c:\firmware\EL_0005_15\WORK\INIT_CLOCK_SYSTEM.H"

    --OCY
  • (1) But please tell me which bit in P1OUT is CS_OUT? P1OUT Bit5

    #include "c:\firmware\EL_0005_15\WORK\INIT_CLOCK_SYSTEM.H"; is already included see at the end
    start from line
    CLOCK_AND_SYSTEM INCLUDE FILE
    MOV.W #100,R4
  • I modified your source code and it is here: 

       

    #include "msp430.h"
    
            org     0x4400          ;* 
    main:
    //      DINT                    ;* disabilita gli interrupt
            MOV.W   #0x2400,SP      ;* INIZIALIZZA LO STACK POINTER
    
    //;*** INIZIALIZZAZIONE REGISTRI OSCILLATORE **************
    ;*********** INIZIALIZZAZIONE I/O ***********************
            MOV.B   #00010000b,&P1OUT;* PORTA 1
            MOV.B   #00000000b,&P2OUT;* PORTA 2
            MOV.B   #00000000b,&P3OUT;* PORTA 3
            MOV.B   #00001100b,&P4OUT;* PORTA 4
            MOV.B	#00000000b,&P5OUT;* PORTA 5
            MOV.B   #00000000b,&P6OUT;* PORTA 6
            MOV.B   #00011111b,&P7OUT;* PORTA 7
            MOV.B   #00000000b,&P9OUT;* PORTA 9
            MOV.W   #00000000b,&PJOUT;* TUTTE LE USCITE AD OFF
    
            MOV.B   #11110000b,&P1DIR;* SP EGNE I DIGIT DEL DISPLAY CON
            MOV.B   #00001101b,&P2DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #11111111b,&P3DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #01111111b,&P4DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #10000000b,&P5DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #11111111b,&P6DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #11111111b,&P7DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #10001111b,&P9DIR;* TUTTE LE USCITE AD OFF
            MOV.W   #11110000b,&PJDIR;* TUTTE LE USCITE AD OFF
    ;*	MOV.W   #11110010b,&PJDIR;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJSEL0*/
    
            MOV.B   #00001111b,&P1SEL0;* 4 A TO D
            MOV.B   #00001111b,&P1SEL1;* 4 A TO D
            MOV.B   #00000011b,&P2SEL0;* RS2332
            MOV.B   #00000000b,&P2SEL1;* RS2332
            MOV.B   #00000000b,&P3SEL0;*
            MOV.B   #00000000b,&P3SEL1
            MOV.B   #00000000b,&P4SEL0;* SPI
            MOV.B   #11110000b,&P4SEL1;* SPI
            MOV.B   #00000000b,&P5SEL0;*
            MOV.B   #00000000b,&P5SEL1;*
            MOV.B   #00000000b,&P6SEL0;*
            MOV.B   #00000000b,&P6SEL1;*
            MOV.B   #00000000b,&P7SEL0;*
            MOV.B   #00000000b,&P7SEL1;*
            MOV.B   #00000000b,&P9SEL0;*
            MOV.B   #00000000b,&P9SEL1;*
            MOV.W   #11110000b,&PJSEL0;*
    ;*      MOV.W   #11110010b,&PJSEL0;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJDIR*/
            MOV.W   #00000000b,&PJSEL1;*
    
    // ???  MOV.B   #11111111B,&P3REN;* PULL UP DOWN
            BIC.W   #LOCKLPM5,&PM5CTL0;* ATTIVA GLI I/O ALTRIMENTI SONO IN TRISTATE
            MOV.B   #00H,&P3OUT      ;* ???
            NOP
    #define CS_OUT BIT5
            BIS.B   CS_OUT,&P1OUT
            NOP
            NOP
            BIC.B   CS_OUT,&P1OUT
    OFF_COLONNE // ???
    /******************************************************************************/
            MOV.W   #FRCTLPW+NWAITS1,&FRCTL0        /* WAIT STATES 1 */
            MOV.W   #WDTPW|WDTHOLD,&WDTCTL          // ???
    
    clr_ramandreg:                  // ???
            MOV.W   #0x1C00,R14
            MOV.W   #0x2400,R15
    loop:   MOV.W   #0,0(R14)
            ADD.W   #2,R14
            CMP.W   R14,R15
            JNZ     loop
    
            MOV.W   #0,R15          // ??? ...
            MOV.W   #0,R14
            MOV.W   #0,R13
            MOV.W   #0,R12
            MOV.W   #0,R11
            MOV.W   #0,R10
            MOV.W   #0,R9
            MOV.W   #0,R8
            MOV.W   #0,R7
            MOV.W   #0,R6
            MOV.W   #0,R5
            MOV.W   #0,R4           // ... ???
    
    /********************* ATTIVAZIONE BASE TIMER **********************/
            MOV.W   #(TASSEL1+TACLR+MC__UP),&TA0CTL    ;SOURCE FROM SMCLK ;*UP MODE; IRQ DA OVERFLOW RIS.TIMER 2uS // ???
            MOV.W   #0xF000-1,&TA0CCR0              // ???
    //      MOV.W   #(CCIE),&TA0CCTL0               // !!!
    
            MOV.W   #(TASSEL0+TACLR+MC__UP+ID0+ID1),&TA1CTL    ;SOURCE FROM ACLK / 8 ;*UP MODE; IRQ DA OVERFLOW RIS.TIMER 2uS // ???
            MOV.W   #0x1000-1,&TA1CCR0              // ???
    //      MOV.W   #(CCIE),&TA1CCTL0               // !!!
    /******************************************************************************************/
            MOV.W   #(REFVSEL0+REFVSEL1+REFGENOT+REFBGOT+REFON),&REFCTL0    /* 2,5 VOLT INTERNAL REFERENCE */ // !!!
    
            BIS.W   #(ADC12CONSEQ0+ADC12SHP),&ADC12CTL1                     /* SINGOLA CONVERSIONE DI SEQUENZA DI CANALI */
            BIS.W   #ADC12RES1,&ADC12CTL2
            BIS.W   #(ADC12TCMAP+ADC12BATMAP),&ADC12CTL3
            BIS.W   #(ADC12VRSEL0),&ADC12MCTL0
            BIS.W   #(ADC12VRSEL0+ADC12INCH0),&ADC12MCTL1
            BIS.W	#(ADC12VRSEL0+ADC12INCH1),&ADC12MCTL2
            BIS.W   #(ADC12VRSEL0+ADC12INCH0+ADC12INCH1+ADC12EOS),&ADC12MCTL3
            BIS.W   #(ADC12MSC+ADC12ON),&ADC12CTL0                          // !!! do this last
    //      MOV.W   #00H,&ADC12IER0
    //      BIS.W   #ADC12IE3,&ADC12IER0    /* ABILITA L'INTERRUPT DEL CANALE 3 */
    /******************************************************************************************/
    	
    /******************************** LAMP TEST DEL DISPLAY ***************************************/
    
    flip:   XOR.B   #BITx,&PyOUT            // !!! ??? !!! ??? !!! ??? flip LED lamp
    wait:   BIT.W   #CCIFG,&TA0CCTL0
            JZ      wait
            BIC.W   #CCIFG,&TA0CCTL0
            JMP     flip
            NOP
    
            org     0xFFFE
            DW      main
    
            END 
    
     Also it is here:

    #include "msp430.h"
    
            org     0x4400          ;* 
    main:
    //      DINT                    ;* disabilita gli interrupt
            MOV.W   #0x2400,SP      ;* INIZIALIZZA LO STACK POINTER
    
    //;*** INIZIALIZZAZIONE REGISTRI OSCILLATORE **************
    ;*********** INIZIALIZZAZIONE I/O ***********************
            MOV.B   #00010000b,&P1OUT;* PORTA 1
            MOV.B   #00000000b,&P2OUT;* PORTA 2
            MOV.B   #00000000b,&P3OUT;* PORTA 3
            MOV.B   #00001100b,&P4OUT;* PORTA 4
            MOV.B	#00000000b,&P5OUT;* PORTA 5
            MOV.B   #00000000b,&P6OUT;* PORTA 6
            MOV.B   #00011111b,&P7OUT;* PORTA 7
            MOV.B   #00000000b,&P9OUT;* PORTA 9
            MOV.W   #00000000b,&PJOUT;* TUTTE LE USCITE AD OFF
    
            MOV.B   #11110000b,&P1DIR;* SP EGNE I DIGIT DEL DISPLAY CON
            MOV.B   #00001101b,&P2DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #11111111b,&P3DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #01111111b,&P4DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #10000000b,&P5DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #11111111b,&P6DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #11111111b,&P7DIR;* TUTTE LE USCITE AD OFF
            MOV.B   #10001111b,&P9DIR;* TUTTE LE USCITE AD OFF
            MOV.W   #11110000b,&PJDIR;* TUTTE LE USCITE AD OFF
    ;*	MOV.W   #11110010b,&PJDIR;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJSEL0*/
    
            MOV.B   #00001111b,&P1SEL0;* 4 A TO D
            MOV.B   #00001111b,&P1SEL1;* 4 A TO D
            MOV.B   #00000011b,&P2SEL0;* RS2332
            MOV.B   #00000000b,&P2SEL1;* RS2332
            MOV.B   #00000000b,&P3SEL0;*
            MOV.B   #00000000b,&P3SEL1
            MOV.B   #00000000b,&P4SEL0;* SPI
            MOV.B   #11110000b,&P4SEL1;* SPI
            MOV.B   #00000000b,&P5SEL0;*
            MOV.B   #00000000b,&P5SEL1;*
            MOV.B   #00000000b,&P6SEL0;*
            MOV.B   #00000000b,&P6SEL1;*
            MOV.B   #00000000b,&P7SEL0;*
            MOV.B   #00000000b,&P7SEL1;*
            MOV.B   #00000000b,&P9SEL0;*
            MOV.B   #00000000b,&P9SEL1;*
            MOV.W   #11110000b,&PJSEL0;*
    ;*      MOV.W   #11110010b,&PJSEL0;* /*PER AVERE L'MCLK SUL PIN TC1 PJ1OUT IN COMBINAZIONE CON PJDIR*/
            MOV.W   #00000000b,&PJSEL1;*
    
    // ???  MOV.B   #11111111B,&P3REN;* PULL UP DOWN
            BIC.W   #LOCKLPM5,&PM5CTL0;* ATTIVA GLI I/O ALTRIMENTI SONO IN TRISTATE
            MOV.B   #00H,&P3OUT      ;* ???
            NOP
    #define CS_OUT BIT5
            BIS.B   CS_OUT,&P1OUT
            NOP
            NOP
            BIC.B   CS_OUT,&P1OUT
    OFF_COLONNE // ???
    /******************************************************************************/
            MOV.W   #FRCTLPW+NWAITS1,&FRCTL0        /* WAIT STATES 1 */
            MOV.W   #WDTPW|WDTHOLD,&WDTCTL          // ???
    
    clr_ramandreg:                  // ???
            MOV.W   #0x1C00,R14
            MOV.W   #0x2400,R15
    loop:   MOV.W   #0,0(R14)
            ADD.W   #2,R14
            CMP.W   R14,R15
            JNZ     loop
    
            MOV.W   #0,R15          // ??? ...
            MOV.W   #0,R14
            MOV.W   #0,R13
            MOV.W   #0,R12
            MOV.W   #0,R11
            MOV.W   #0,R10
            MOV.W   #0,R9
            MOV.W   #0,R8
            MOV.W   #0,R7
            MOV.W   #0,R6
            MOV.W   #0,R5
            MOV.W   #0,R4           // ... ???
    
    /********************* ATTIVAZIONE BASE TIMER **********************/
            MOV.W   #(TASSEL1+TACLR+MC__UP),&TA0CTL    ;SOURCE FROM SMCLK ;*UP MODE; IRQ DA OVERFLOW RIS.TIMER 2uS // ???
            MOV.W   #0xF000-1,&TA0CCR0              // ???
    //      MOV.W   #(CCIE),&TA0CCTL0               // !!!
    
            MOV.W   #(TASSEL0+TACLR+MC__UP+ID0+ID1),&TA1CTL    ;SOURCE FROM ACLK / 8 ;*UP MODE; IRQ DA OVERFLOW RIS.TIMER 2uS // ???
            MOV.W   #0x1000-1,&TA1CCR0              // ???
    //      MOV.W   #(CCIE),&TA1CCTL0               // !!!
    /******************************************************************************************/
            MOV.W   #(REFVSEL0+REFVSEL1+REFGENOT+REFBGOT+REFON),&REFCTL0    /* 2,5 VOLT INTERNAL REFERENCE */ // !!!
    
            BIS.W   #(ADC12CONSEQ0+ADC12SHP),&ADC12CTL1                     /* SINGOLA CONVERSIONE DI SEQUENZA DI CANALI */
            BIS.W   #ADC12RES1,&ADC12CTL2
            BIS.W   #(ADC12TCMAP+ADC12BATMAP),&ADC12CTL3
            BIS.W   #(ADC12VRSEL0),&ADC12MCTL0
            BIS.W   #(ADC12VRSEL0+ADC12INCH0),&ADC12MCTL1
            BIS.W	#(ADC12VRSEL0+ADC12INCH1),&ADC12MCTL2
            BIS.W   #(ADC12VRSEL0+ADC12INCH0+ADC12INCH1+ADC12EOS),&ADC12MCTL3
            BIS.W   #(ADC12MSC+ADC12ON),&ADC12CTL0                          // !!! do this last
    //      MOV.W   #00H,&ADC12IER0
    //      BIS.W   #ADC12IE3,&ADC12IER0    /* ABILITA L'INTERRUPT DEL CANALE 3 */
    /******************************************************************************************/
    	
    /******************************** LAMP TEST DEL DISPLAY ***************************************/
    
    flip:   XOR.B   #BITx,&PyOUT            // !!! ??? !!! ??? !!! ??? flip LED lamp
    wait:   BIT.W   #CCIFG,&TA0CCTL0
            JZ      wait
            BIC.W   #CCIFG,&TA0CCTL0
            JMP     flip
            NOP
    
            org     0xFFFE
            DW      main
    
            END 
    


    I assume that one of your output pins is connected to a LED lamp.
    Please edit the line "flip: XOR.B #BITx,&PyOUT" so that it will toggle the LED lamp.
    Please do not change anything else and try to bedbug it.

  • Hi,

    i solved this problem, was one error in the CLEARAMreg  reg routine

    but had other problem Always for one error in other soubroutine

    but I see that in the

    SYSTEM_VECTOR:

                    ADD &SYSSNIV,PC                          ; Add offset to jump table

                    RETI                                                                      ; Vector 0: No interrupt

                    JMP       DBD_ISR                                             ; Vector 2: DBDIFG

                    JMP       ACCTIM_ISR                                     ; Vector 4: ACCTIMIFG

                    JMP       RSVD1_ISR                                        ; Vector 6: Reserved for future usage.

                    JMP       RSVD2_ISR                                        ; Vector 8: Reserved for future usage.

                    JMP       RSVD3_ISR                                        ; Vector 10: Reserved for future usage.

                    JMP       RSVD4_ISR                                        ; Vector 12: Reserved for future usage.

                    JMP       ACCV_ISR                                          ; Vector 14: ACCVIFG

                    JMP       VMA_ISR                                           ; Vector 16: VMAIFG

                    JMP       JMBI_ISR                                            ; Vector 18: JMBINIFG

                    JMP       JMBO_ISR                                          ; Vector 20: JMBOUTIFG

                    JMP       SBD_ISR                                              ; Vector 22: SBDIFG

    DBD_ISR:                                                                           ; Vector 2: DBDIFG

                    RETI ; Return

    in case of VMA_ISR    flag set Always the control jump to the JMBI_ISR  for this reason I'm confused

    I check that in the SYSTEM_VECTOR register the flag JMBI_ISR  is 0 and VMA_ISR is 1 but Always jmp to the JMBI_ISR

    soubroutine if is set JMBI_ISR flag or VMA_ISR

    what I can solve this error ?

**Attention** This is a public forum