Richten Sie eine ADC-ISR ein, aber jedes Mal, wenn ein ADC-Interrupt aufgerufen wird, geht er stattdessen zu isr_trap.asm

Ich versuche, ein Programm mit meinem MSP430FR6989 von Texas Instruments zu machen. Ich sende ein analoges Signal an mein ADC-Modul im uC, das es in ein digitales Signal umwandelt. Wenn der Wert größer als 0x800 ( 1,65 V ) ist, setze eine blaue LED, andernfalls lösche die blaue LED

Ich versuche das mit Interrupts.

Dies ist ein Ausschnitt meines Codes

EDIT2 Ich habe den gesamten Code anstelle des Snippets hinzugefügt

#include <msp430.h> 


#define ENABLE_PINS 0xFFFE

void ADC_SETUP (void);

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    PM5CTL0 = ENABLE_PINS;
    P4DIR = BIT3;

    ADC_SETUP ();

    ADC12IER0 = ADC12IE0;

    _BIS_SR(GIE);

    ADC12CTL0 = ADC12CTL0 | ADC12ENC;
    ADC12CTL0 = ADC12CTL0 | ADC12SC;

    while(1);

    return 0;
}

void ADC_SETUP (void)
{
    #define ADC12_SHT_16      0x0200
    #define ADC12_ON          0x0010
    #define ADC12_SHT_SRC_SEL 0x0200
    #define ADC12_12BIT       0x0020
    #define ADC12_P92         0x000A

    ADC12CTL0 = ADC12_SHT_16 | ADC12_ON;
    ADC12CTL1 = ADC12_SHT_SRC_SEL;
    ADC12CTL2 = ADC12_12BIT;
    ADC12MCTL0 = ADC12_P92;
}


#pragma vector = ADC12_VECTOR//0xFFEA//ADC12_VECTOR
__interrupt void ADC12_ISR (void)
{
    if(ADC12MEM0 > 0x0800)
        P4OUT = BIT3;
    else
        P4OUT = 0x00;

    ADC12CTL0 = ADC12CTL0 | ADC12SC;
}

Wenn ich es baue, bekomme ich diese Warnung.

#2580-D Pragma vector = akzeptiert numerische Argumente oder "unused_interrupt", aber nicht ADC12_VECTOR

Wenn ich es debugge und mein uC zu Zeile A geht und das ADC12SC-Bit gesetzt ist, geht es zu isr_trap.asm und mein uC bleibt dort hängen

Bitte helfen Sie mir bei diesem Problem.

Beginn von EDIT_0

MSP430FR6989

Code Composer Studio 6.1.0

Compiler: TI v4.4.3

Ende von EDIT_0

Beginn von EDIT_1

Ich kann die .map-Datei hier nicht kopieren und einfügen, da sie zu groß ist, da ich die Zeichenbeschränkung für diesen Beitrag überschritten habe.

Stattdessen habe ich die Datei in eine Textdatei kopiert und an diesen Link gesendet.

https://we.tl/t-4aECqSr4yA

Sie heißt ADC_ISR_UDEMY.map.txt

Ende von EDIT_1

Beginn von EDIT_3

Entschuldigung für die späte Antwort, ich schätze die Hilfe aller in diesem Thread.

Ich habe versucht, 3 Projekte zu machen, eines mit Timer A0 CCR0 ISR ( ISR_TRAP_TIMER_TEST ), eines mit ADC12_B ISR ( ISR_TRAP_ADC_TEST ) und eines mit ADC12_B isr mit @GVelascoh Header ( ISR_TRAP_ADC_HEADER_2 ).

ISR_TRAP_TIMER_TEST funktionierte gut, die P1.0 LED blinkte

#include <msp430.h> 

#define ENABLE_PINS 0xFFFE

void init_Timer (void);

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    PM5CTL0 = ENABLE_PINS;
    P1DIR = BIT0;

    init_Timer ();

    _BIS_SR(GIE);

    while(1);

    return 0;
}

void init_Timer (void)
{
    TA0CTL = TASSEL__ACLK | MC__UP;
    TA0CCR0 = 3000;
    TA0CCTL0 = CCIE;
}

#pragma vector = TIMER0_A0_VECTOR //TA0 CCR0
__interrupt void Test_ISR (void)
{
    P1OUT = P1OUT ^ BIT0;

    //clear the flag
}

Bauen:

**** Build of configuration Debug for project ISR_TRAP_TIMER_TEST ****

"C:\\ti\\ccsv6\\utils\\bin\\gmake" -k all 
'Building file: ../main.c'
'Invoking: MSP430 Compiler'
"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/bin/cl430" -vmspx --abi=eabi --data_model=restricted --use_hw_mpy=F5 --include_path="C:/ti/ccsv6/ccs_base/msp430/include" --include_path="C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/include" --advice:power=all --advice:hw_config=all -g --define=__MSP430FR6989__ --diag_warning=225 --display_error_number --diag_wrap=off --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --printf_support=minimal --preproc_with_compile --preproc_dependency="main.pp"  "../main.c"
"../main.c", line 19: warning #112-D: statement is unreachable
"../main.c", line 17: remark #1527-D: (ULP 2.1) Detected SW delay loop using empty loop. Recommend using a timer module instead
'Finished building: ../main.c'
' '
'Building target: ISR_TRAP_TIMER_TEST.out'
'Invoking: MSP430 Linker'
"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/bin/cl430" -vmspx --abi=eabi --data_model=restricted --use_hw_mpy=F5 --advice:power=all --advice:hw_config=all -g --define=__MSP430FR6989__ --diag_warning=225 --display_error_number --diag_wrap=off --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --printf_support=minimal -z -m"ISR_TRAP_TIMER_TEST.map" --heap_size=160 --stack_size=160 --cinit_hold_wdt=on -i"C:/ti/ccsv6/ccs_base/msp430/include" -i"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/lib" -i"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/include" -i"C:/ti/ccsv6/ccs_base/msp430/lib/5xx_6xx_FRxx" -i"C:/ti/ccsv6/ccs_base/msp430/lib/FR59xx" --reread_libs --priority --warn_sections --display_error_number --diag_wrap=off --xml_link_info="ISR_TRAP_TIMER_TEST_linkInfo.xml" --use_hw_mpy=F5 --rom_model -o "ISR_TRAP_TIMER_TEST.out" "./main.obj" "../lnk_msp430fr6989.cmd"  -l"libmath.a" -l"libc.a" 
<Linking>
remark #10372-D: (ULP 4.1) Detected uninitialized Port A in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port B in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port C in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port D in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port E in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
'Finished building target: ISR_TRAP_TIMER_TEST.out'
' '

**** Build Finished ****

ISR_TRAP_ADC_TEST Der uC geht immer noch zur isr_trap.asm

#include <msp430.h> 

#define ENABLE_PINS 0xFFFE

void init_ADC (void);

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    PM5CTL0 = ENABLE_PINS;
    P1DIR = BIT0;

    init_ADC ();

    _BIS_SR(GIE);

    ADC12CTL0 = ADC12CTL0 | ADC12ENC;
    ADC12CTL0 = ADC12CTL0 | ADC12SC;

    while(1);

    return 0;
}

void init_ADC (void)
{
    ADC12CTL0 = ADC12ON | ADC12SHT0_2;
    ADC12CTL1 = ADC12SHP;
    ADC12CTL2 = ADC12RES__12BIT;
    ADC12MCTL0 = ADC12INCH_10;

    ADC12IER0 = ADC12IE0;
}

#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR (void)
{
    if(ADC12MEM0 > 0x0800)
        P1OUT = BIT0;
    else
        P1OUT = 0x00;
}

Bauen:

**** Build of configuration Debug for project ISR_TRAP_ADC_TEST ****

"C:\\ti\\ccsv6\\utils\\bin\\gmake" -k all 
'Building file: ../main.c'
'Invoking: MSP430 Compiler'
"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/bin/cl430" -vmspx --abi=eabi --data_model=restricted --use_hw_mpy=F5 --include_path="C:/ti/ccsv6/ccs_base/msp430/include" --include_path="C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/include" --advice:power=all --advice:hw_config=all -g --define=__MSP430FR6989__ --diag_warning=225 --display_error_number --diag_wrap=off --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --printf_support=minimal --preproc_with_compile --preproc_dependency="main.pp"  "../main.c"
"../main.c", line 22: warning #112-D: statement is unreachable
"../main.c", line 20: remark #1527-D: (ULP 2.1) Detected SW delay loop using empty loop. Recommend using a timer module instead
"../main.c", line 35: warning #2580-D: pragma vector= accepts numeric arguments or "unused_interrupts" but not ADC12_VECTOR
'Finished building: ../main.c'
' '
'Building target: ISR_TRAP_ADC_TEST.out'
'Invoking: MSP430 Linker'
"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/bin/cl430" -vmspx --abi=eabi --data_model=restricted --use_hw_mpy=F5 --advice:power=all --advice:hw_config=all -g --define=__MSP430FR6989__ --diag_warning=225 --display_error_number --diag_wrap=off --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --printf_support=minimal -z -m"ISR_TRAP_ADC_TEST.map" --heap_size=160 --stack_size=160 --cinit_hold_wdt=on -i"C:/ti/ccsv6/ccs_base/msp430/include" -i"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/lib" -i"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/include" -i"C:/ti/ccsv6/ccs_base/msp430/lib/5xx_6xx_FRxx" -i"C:/ti/ccsv6/ccs_base/msp430/lib/FR59xx" --reread_libs --priority --warn_sections --display_error_number --diag_wrap=off --xml_link_info="ISR_TRAP_ADC_TEST_linkInfo.xml" --use_hw_mpy=F5 --rom_model -o "ISR_TRAP_ADC_TEST.out" "./main.obj" "../lnk_msp430fr6989.cmd"  -l"libmath.a" -l"libc.a" 
<Linking>
remark #10372-D: (ULP 4.1) Detected uninitialized Port A in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port B in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port C in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port D in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port E in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
'Finished building target: ISR_TRAP_ADC_TEST.out'
' '

**** Build Finished ****

ISR_TRAP_ADC_HEADER_2 Ich habe immer noch das gleiche Problem, wo das uC zu isr_trap.asm geht (ich hoffe, ich habe deinen Header richtig hinzugefügt @GVelascoh)

#include <msp430.h> 


#define ENABLE_PINS 0xFFFE

void init_ADC (void);

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    PM5CTL0 = ENABLE_PINS;
    P1DIR = BIT0;

    init_ADC ();

    _BIS_SR(GIE);

    ADC12CTL0 = ADC12CTL0 | ADC12ENC;
    ADC12CTL0 = ADC12CTL0 | ADC12SC;

    while(1);

    return 0;
}

void init_ADC (void)
{
    ADC12CTL0 = ADC12ON | ADC12SHT0_2;
    ADC12CTL1 = ADC12SHP;
    ADC12CTL2 = ADC12RES__12BIT;
    ADC12MCTL0 = ADC12INCH_10;

    ADC12IER0 = ADC12IE0;
}

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
{
    if(ADC12MEM0 > 0x0800)
        P1OUT = BIT0;
    else
        P1OUT = 0x00;
}
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void)
#else
#error Compiler not supported!
#endif

Bauen:

**** Build of configuration Debug for project ISR_TRAP_ADC_HEADER_2 ****

"C:\\ti\\ccsv6\\utils\\bin\\gmake" -k all 
'Building file: ../main.c'
'Invoking: MSP430 Compiler'
"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/bin/cl430" -vmspx --abi=eabi --data_model=restricted --use_hw_mpy=F5 --include_path="C:/ti/ccsv6/ccs_base/msp430/include" --include_path="C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/include" --advice:power=all --advice:hw_config=all -g --define=__MSP430FR6989__ --diag_warning=225 --display_error_number --diag_wrap=off --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --printf_support=minimal --preproc_with_compile --preproc_dependency="main.pp"  "../main.c"
"../main.c", line 23: warning #112-D: statement is unreachable
"../main.c", line 21: remark #1527-D: (ULP 2.1) Detected SW delay loop using empty loop. Recommend using a timer module instead
"../main.c", line 37: warning #2580-D: pragma vector= accepts numeric arguments or "unused_interrupts" but not ADC12_VECTOR
'Finished building: ../main.c'
' '
'Building target: ISR_TRAP_ADC_HEADER_2.out'
'Invoking: MSP430 Linker'
"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/bin/cl430" -vmspx --abi=eabi --data_model=restricted --use_hw_mpy=F5 --advice:power=all --advice:hw_config=all -g --define=__MSP430FR6989__ --diag_warning=225 --display_error_number --diag_wrap=off --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --printf_support=minimal -z -m"ISR_TRAP_ADC_HEADER_2.map" --heap_size=160 --stack_size=160 --cinit_hold_wdt=on -i"C:/ti/ccsv6/ccs_base/msp430/include" -i"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/lib" -i"C:/ti/ccsv6/tools/compiler/ti-cgt-msp430_4.4.3/include" -i"C:/ti/ccsv6/ccs_base/msp430/lib/5xx_6xx_FRxx" -i"C:/ti/ccsv6/ccs_base/msp430/lib/FR59xx" --reread_libs --priority --warn_sections --display_error_number --diag_wrap=off --xml_link_info="ISR_TRAP_ADC_HEADER_2_linkInfo.xml" --use_hw_mpy=F5 --rom_model -o "ISR_TRAP_ADC_HEADER_2.out" "./main.obj" "../lnk_msp430fr6989.cmd"  -l"libmath.a" -l"libc.a" 
<Linking>
remark #10372-D: (ULP 4.1) Detected uninitialized Port A in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port B in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port C in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port D in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port E in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
'Finished building target: ISR_TRAP_ADC_HEADER_2.out'
' '

**** Build Finished ****

Ende von EDIT_3

Beginn von EDIT_4

Vielen Dank für Ihre Hilfe, ich habe mein Problem behoben, ich habe CCS v6.1.0 deinstalliert und CCS 8.2.0 installiert, dasselbe Programm geschrieben, und das Problem ist weg.

Ich dachte, ich würde das teilen, also lasse ich es nicht hängen.

Ende von EDIT_4

Sieht eher so aus, als ob Sie uC nicht wissen, wohin Sie springen sollen, wenn der ADC-Interrupt eintrifft, daher gerät es in Panik. Sie müssen Ihrem Interrupt-Controller mitteilen, dass er @ ADC12_Vector springen soll. Sind Sie sicher, dass Sie das tun?
es tut dies nur für ADC-Interrupts, nicht zum Beispiel für Timer0_A0 ISR. Wie kann ich es beheben?
Soweit ich weiß, ja, habe ich den ADC12 MEM0-Interrupt, den globalen Interrupt, aktiviert, und wenn sich der Wert bei ADC12MEM0 ändert (Konvertierung abgeschlossen), springt er zum ISR
Nun, die Warnung scheint die Geschichte zu erzählen. ADC12_VECTOR scheint nicht in einen numerischen Wert aufgelöst zu werden, den der Compiler erwartet. Sind Sie sicher, dass Sie das richtige Symbol verwenden?
Für welche CPU ist der Compiler konfiguriert?
@Arsenal ja, das ist das richtige Symbol, ich habe sogar das Symbol durch die Hex-Zahl ersetzt, die Warnung ist weg, aber der uC geht immer noch in die isr_trap.asm
@CL Ich folge nicht, wenn Sie den Laptop meinen, den ich verwende, ist es Dell Inspiron 15
Welchen Compiler verwenden Sie, um dieses Programm zu kompilieren? Wie ist es konfiguriert?
@CL Es ist TI v4.4.3 und wurde als Debug konfiguriert
@CL bezieht sich auf den Compiler, wenn Sie zu Projekt>Eigenschaften>Allgemein gehen, sehen Sie Compiler-Optionen, Sie könnten entweder den TI-Compiler oder gcc verwenden. Ich werde eine mögliche Lösung als Antwort geben, wenn dies der Fall ist
@GVelascoh Ich habe es geöffnet und auf der Registerkarte "Allgemein" / "Erweiterte Einstellung" wird die Compiler-Version erwähnt: TI v4.4.3 (Compiler für Texas Instrument)
Könnten Sie Ihre .map-Datei posten?
@GVelascoh Ich werde es auf EDIT_1 posten
@GVelascoh, es war zu groß, um es in den Beitrag einzufügen, also habe ich einen Link hinzugefügt, ich hoffe, das ist in Ordnung
Bitte fügen Sie die folgenden drei Zeilen hinzu: #if !defined (__MSP430FR5989__) #error __MSP430FR5989__ is not defined #endifErhalten Sie eine Fehlermeldung?

Antworten (2)

Aus Ihrer Kartendatei geht hervor, dass Ihre ISR-Funktion nicht kompiliert ist, da ihr kein Code zugeordnet ist. In der "Abschnittszuordnungskarte" können Sie feststellen, dass kein Hinweis auf das Symbol vorhanden istADC12_ISR

.text:_isr 
*          0    00004400    00000020     
                00004400    0000001a     rts430x_lc_rd_eabi.lib : boot_special.obj (.text:_isr:_c_int00_noargs_noexit)
                0000441a    00000006                            : isr_trap.obj (.text:_isr:__TI_ISR_TRAP)

Dies ist ein Teil einer Kartendatei für ein anderes Projekt, das ich habe, sehen Sie, wie ISR-Symbole darin detailliert sind:

.text      0    0000c600    00000d30     
                0000c600    0000023c     main.obj (.text:main)
                   ...
                0000cc62    0000007e     my-lib-Debug_2.lib : events.obj (.text:events_insert)
                0000cce0    0000007c                            : i2c_master.obj (.text:_isr:USCIB0_ISR)
                0000ce30    0000005e     port_interrupts.obj (.text:_isr:Port3_ISR)
                   ...

Versuchen Sie, Ihr Projekt zu bereinigen, und erstellen Sie es erneut. Welche Dateien schließen Sie auch ein, da der von Ihnen gepostete Code so wie er ist nicht kompilierbar ist. Außerdem sehe ich aus der Map-Datei, dass Sie eine andere Funktion haben, ADC_SETUP.

Bearbeiten: Ich sehe nur, dass Sie in Ihrem Code den Watchdog nicht ausschalten, der beim Start aktiviert ist. Normalerweise wird dazu diese Zeile am Anfang der Hauptfunktion hinzugefügt:WDTCTL = WDTPW | WDTHOLD;


Wenn Ihr Problem auf den Compiler zurückzuführen ist, helfen Ihnen diese Präprozessorbedingungen:

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void)
#else
#error Compiler not supported!
#endif
Entschuldigung für die Verwirrung, als ich gepostet habe, habe ich versucht, nur einen Ausschnitt des Codes hinzuzufügen, nicht den ganzen echten Code, da ich versucht habe, relevante Dinge meines Codes in diesen Thread zu stellen. ADC_SETUP ist dasselbe wie init_ADC. Ich werde init_ADC in ADC_SETUP ändern und den gesamten Code einfügen (als Referenz). Ich habe WDT deaktiviert, aber ich dachte nicht, dass es für den Beitrag relevant ist, also habe ich es nicht in meinen Code eingefügt, sondern es einfach ersetzt mit //code
Ich habe das Snippet meines Codes durch den echten Code ersetzt, den ich verwende
Ich habe online nach isr_trap.asm gesucht, und es gibt mehrere Links aus TI-Foren, die besagen, dass ich isr_trap passiert, wenn ich das Interrupt-Flag nicht gelöscht habe, was ich überprüft habe, es wurde gelöscht, oder 2 Interrupts aktiviert, aber es gibt nur eine ISR-Funktion, und der 2. ISR heißt, der uC weiß nicht, wohin er gehen soll, was ich auch überprüft habe, da nur ein Interrupt aktiviert ist (ADC12IE0)
isr_trap.asm irgendwie ein Trap/Haltepunkt für meinen Debugger, wenn der uC das Gefühl hat, dass etwas mit meinem Interrupt nicht stimmt, werde ich es noch einmal mit 2 Diff-Projekten versuchen, eines für ADC ISR und das andere für einen Timer ISR und sehen, wie es läuft
Eigentlich ISR_trap()ist dies die Standardfunktion für die Verarbeitung von Interrupts, das heißt, falls Sie einen Interrupt aktivieren, aber keinen ISR definieren (oder vergessen), ISR_trap()ihn zu verarbeiten. Standardmäßig zeigen alle Interrupt-Vektoren auf diese Funktion.
Überprüfen Sie, wie @CL in den Kommentaren gefragt hat, ob das Gerät in den Projekteigenschaften das ist, das Sie verwenden (MSP430FR6989) und ob die Linker-Datei mit dem Gerät übereinstimmt. Darüber hinaus können Sie alle Warnmeldungen, die Sie vom Build erhalten, posten, was ebenfalls hilfreich sein könnte.
@GVeloscoh Nun, ich verwende den CCS-Assistenten, um ein Projekt zu erstellen, und überlasse die Arbeit des Kompilierens / Erstellens und Verknüpfens mit CCS. Ich dachte, wenn es keine Probleme mit den Linker-Dateien des Timer-ISR-Projekts gäbe, sollte es keine geben Problem mit dem ADC-ISR-Projekt. Außerdem wird im Build meines ISR_TRAP_ADC_TEST erwähnt, 'Building target: ISR_TRAP_ADC_HEADER_2.out' 'Invoking: MSP430 Linker'dass dies ausreicht oder ich etwas anderes tun sollte
Könnten Sie bitte Ihre Linker-Datei anhängen? Ich habe Ihren Code in CCS online ausprobiert und er generiert keine #pragma-Warnung und verwendet eine neuere Version des Compilers.
Ich bin ein kleiner Anfänger in Sachen Mikrocontroller, wie bekomme ich die Linker-Dateien meines Projekts (PS mein CCS ist Code Composer Studio 6.1.0)
Mein Projekt heißt ISR_TRAP_ADC_TEST, als ich ein Projekt erstellte, erstellte CCS einen Ordner mit dem Namen ISR_TRAP_ADC_TEST ISR_TRAP_ADC_TEST/Debug/ISR_TRAP_ADC_TEST.out Ist die .out-Datei die gewünschte Linker-Datei, wenn ja, habe ich sie in diesen Link we.tl/t eingefügt -8hECUpt9i1
Wenn Sie sich Ihr Projektverzeichnis ansehen, finden Sie eine .cmd-Datei wie lnk_msp430fr6989.cmd, das ist die Linker-Datei. Übrigens, warum verwenden Sie alte Versionen von TI-Tools? Das neueste CCS ist v8 und der TI-Compiler hat sogar seine Versionierungssyntax geändert
Dies ist der Link zum Linker (.cmd-Datei) we.tl/t-RY9YecOvmJ Ich mache einen Udemy-Kurs für Mikrocontroller, und der Kurs schlug vor, dass ich CCS Version 6 verwende, damit der Student und der Dozent auf demselben Kurs sein können Seite, wenn es Fragen zu seinen Tutorials gibt. Ich werde die Version aktualisieren, wenn ich den Kurs beendet habe oder wenn dieses Problem dadurch behoben wird
Versuchen Sie, Ihren Compiler zu aktualisieren, ich denke, die letzte Version von TI 4.4.x ist 4.4.8. Ich konnte keine großen Unterschiede zur letzten Version der Linker-Datei feststellen, hier ist sie, obwohl linkerfile v1.206 . Sie können auch überprüfen, wo die Funktion isr_trap implementiert ist und davor sollte die Liste aller Interrupt-Vektoren stehen. Sie können vergleichen, wie die Syntax dort ist.
Ich habe CCS 6.1.0 deinstalliert und CCS 8.2.0 installiert, und das Problem war weg. Danke für die Hilfe

Sie müssen dem Compiler mitteilen, welchen Mikrocontroller Sie verwenden. Dies wird beim Erstellen eines Projekts abgefragt, kann aber später mit Projekt → Eigenschaften → Allgemein → Gerät → Variante geändert werden .

Das habe ich gemacht, Variante: MSP430FRxxx