Hallo Community, ich habe mal wieder mein msp430g2 board ausgepackt. Leider musste ich feststellen das der mspgcc sich sehr stark verändert(weiterentwickelt) hat und meine alten Programme nicht mehr laufen. Hat jemand von euch eventuell nen lauffähiges Watchdog Interrupt Beispiel ? Google macht mich auch nicht viel schlauer da ich entweder nur den #pragma Code oder veralteten mspgcc Code finde. Oder weiß jemand von euch ein Tut für den mspgcc das aktuell ist?
Siehe gcc-Dokumentation: https://gcc.gnu.org/onlinedocs/gcc/MSP430-Function-Attributes.html Wenn du dir __attribute__((interrupt(WDT_VECTOR))) nicht merken kannst, gibt es auch ein hilfreiches Makro __interrupt(WDT_VECTOR) (oder __interrupt_vec(WDT_VECTOR) in der neuesten Version der MSP-Header). Ein Blick in den Beispielcode von TI wäre auch hilfreich gewesen:
1 | //******************************************************************************
|
2 | // MSP430G2xx3 Demo - WDT, Toggle P1.0, Interval Overflow ISR, DCO SMCLK
|
3 | //
|
4 | // Description: Toggle P1.0 using software timed by the WDT ISR. Toggle rate
|
5 | // is approximately 30ms based on default DCO/SMCLK clock source
|
6 | // used in this example for the WDT.
|
7 | // ACLK = n/a, MCLK = SMCLK = default
|
8 | //
|
9 | // MSP430G2xx3
|
10 | // -----------------
|
11 | // /|\| XIN|-
|
12 | // | | |
|
13 | // --|RST XOUT|-
|
14 | // | |
|
15 | // | P1.0|-->LED
|
16 | //
|
17 | // D. Dang
|
18 | // Texas Instruments Inc.
|
19 | // December 2010
|
20 | // Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
|
21 | //******************************************************************************
|
22 | |
23 | #include <msp430.h> |
24 | |
25 | int main(void) |
26 | {
|
27 | WDTCTL = WDT_MDLY_32; // Set Watchdog Timer interval to ~30ms |
28 | IE1 |= WDTIE; // Enable WDT interrupt |
29 | P1DIR |= 0x01; // Set P1.0 to output direction |
30 | |
31 | __bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt |
32 | }
|
33 | |
34 | // Watchdog Timer interrupt service routine
|
35 | #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
36 | #pragma vector=WDT_VECTOR
|
37 | __interrupt void watchdog_timer(void) |
38 | #elif defined(__GNUC__)
|
39 | void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void) |
40 | #else
|
41 | #error Compiler not supported!
|
42 | #endif
|
43 | {
|
44 | P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR |
45 | }
|
:
Bearbeitet durch User
Danke für die schnelle Antwort! Öhm bei Ti habe ich nur die reinen #pragma Code gefunden http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_Interrupt_vs_Polling hast du vielleicht nen Link zu den Beispielen ? EDIT: Allerdings bekomme ich noch eine Fehlermeldung: > /opt/ti/gcc/bin/msp430-elf-gcc -I /opt/ti/gcc/include -mmcu=msp430g2211 -O2 -g -L /opt/ti/gcc/include taster.o -o msp430g2211.out > /opt/ti/gcc/bin/../lib/gcc/msp430-elf/5.3.0/../../../../msp430-elf/bin/l d: msp430g2211.out section `.bss' will not fit in region `RAM' > /opt/ti/gcc/bin/../lib/gcc/msp430-elf/5.3.0/../../../../msp430-elf/bin/l d: region `RAM' overflowed by 20 bytes > collect2: error: ld returned 1 exit status > Makefile:14: die Regel für Ziel „all“ scheiterte > make: *** [all] Fehler 1 EDIT: Fehler gefunden! Aufgrund dessen das der 2211 128 bytes SRAM besitzt muss noch die Option -minrt hinzugefügt werden.
:
Bearbeitet durch User
Tester T. schrieb: > bei Ti habe ich nur die reinen #pragma Code gefunden > http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_Interrupt_vs_Polling *klicke-di-klick* Komisch, ich sehe da auch gcc-Code ... Die Beispiele gibt es auf der Seite http://www.ti.com/product/msp430g2211 im Tab "Tools & Software".
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.