Forum: Compiler & IDEs MSPGCC: Interessantes Verhalten


von T. H. (pumpkin) Benutzerseite


Lesenswert?

Moin!

Gerade bin ich mit dem MSPGCC rumzumachen. Ich habe aber ein Problem bei 
dem
ich nicht weiterkomme - und langsam zweifle ich an meinen Fähigkeiten.
Folgendes (gestutzt):
1
volatile uint16_t   uiStartup   = 0;
2
volatile uint16_t  uiStartupDone   = 0;
3
4
int
5
main(void)
6
{
7
  uiStartup = 0;
8
  uiStartupDone = 0;
9
10
  InitTimer1A2();
11
12
  WRITE_SR( READ_SR | GIE );
13
  StartTimer1A2();
14
15
  while( uiStartup < STARTUP_DECOUPLING_CAPS_COUNT );
16
17
  StopTimer1A2();
18
  ClearTimer1A2();
19
  uiStartup = 0;
20
  // ...
21
  StartTimer1A2();
22
23
  while( uiStartup < STARTUP_CHARGEPUMP_CAPS_COUNT );
24
25
  StopTimer1A2();
26
  ClearTimer1A2();
27
  uiStartupDone = 1;
28
  // ...
29
  StartTimer1A2();
30
31
  // Power down to LPM3.
32
  WRITE_SR( (READ_SR & ~(OSCOFF | CPUOFF | SCG0 | SCG1)) | (LPM3_bits)
33
);
34
35
  while( true );
36
  return( 0 );
37
}
38
39
interrupt(TIMER1_A0_VECTOR) TA1CCR0InterruptVector(void)
40
{
41
  if( uiStartupDone == 0 )
42
  {
43
    uiStartup++;
44
  }
45
  else
46
  {
47
    // Hierhin kommt das Programm nie 
48
    // weil uiStartupDone immer 0 ist.
49
  }
50
}

Das Programm setzt uiStartupDone niemals auf 1. Es sieht so aus als 
wenn die Optimierung zuschlägt (-O3). Allerdings ändert sich das 
Verhalten nicht wenn ich die Optimierung ausschalte. DIe letzte 
Anweisung (LPM3) wird erreicht! Habe ich Tomaten auf den Augen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> STARTUP_DECOUPLING_CAPS_COUNT
> STARTUP_CHARGEPUMP_CAPS_COUNT
Was sind die Werte dieser beiden Konstanten?
Passen die in einen uint16?

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Jeweils 6U.

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Kommando zurück! Es war kein Fehler im Programm, Eclipse hat nicht immer 
die aktuelle ELF-Datei geflasht. Ich kann an dieser Stelle nur davon 
abraten, im der Eclipse Debug-Konfiguration im Reiter "Arguments" 
irgendwas zu übergeben (also nicht so wie hier [1] beschrieben) - Fehler 
werden nicht quittiert. Statt dessen sollte man unter "Debugger" ein 
"GDB command file" übergeben...

[1] http://msp430.techcontent.net/eclipse.htm

von Christian R. (supachris)


Lesenswert?

Ja, Eclipse ist da bissl eigen. Auch das Verwechseln von \ und / im 
File-Namen für das Elf File bringt interessante Effekte. Ebenso, wenn 
man bei den aktuellen msp430-gdb Versionen diese ganze "Set 
remotesize..." usw. mit in die ini schreibt. Da sucht man sich zu Tode, 
wieso es nicht klappt.

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
Noch kein Account? Hier anmelden.