TMS320F28069 Abbruch bei Delay_US Funktion

Gast #4141641
Lesenswert?

Hallo Mikrocontroller Gemeinde,

habe folgendes Problem, sobald ich die Funktion DELAY_US() aufrufe 
bekomm ich beim debuggen " No source available for... "

Ich habe absolut keine Ahnung wo ich suchen soll den er schmiert dort 
einfach ab.

Eventuell kann mir ja jemand dabei helfen, das vollständige Projekt habe 
ich angehängt.

  while(1)
  {

     DELAY_US(500); // 500 ms, nur für Testzwecke erstmal

     GpioDataRegs.GPATOGGLE.bit.GPIO27 = 0x1;
  }

Vielen Dank im Vorraus!
Angehängte Dateien:
Gast #4142746
Lesenswert?

Christian schrieb:
> habe folgendes Problem, sobald ich die Funktion DELAY_US() aufrufe
> bekomm ich beim debuggen " No source available for... "

Das bedeutet nur, dass der Debugger (das Programm im PC) keinen C- oder 
ASM-Code für die Binaris findet. Solange der µC die Binaries hat ist das 
nur ne optische Sache.

Christian schrieb:
> den er schmiert dort einfach ab.
Woran erkennst du das?

Hört sich erst mal so an, als ob das Kopieren ins RAM nicht geklappt 
hat.

Kannst du in der Entwicklungsumgebung "Assembler-Ansicht" (oder ähnlich) 
wählen, dann einen Breakpoint vor das delay setzen und einen ASM-Step 
ausführen? Evtl. gibt dir die Sprungadresse Aufschluss.
Gast #4147303
Lesenswert?

Hallo und danke für die Antworten.

Nach langem suchen nach dem Fehler habe ich ihn gefunden, zum einen war 
es

  #ifdef FLASH
    memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,(unsigned 
long)(&RamfuncsLoadSize));
    InitFlash();
  #endif

dadurch das FLASH nirgendwo definiert war ist der Controller nicht in 
die Funktion gesprungen und die DELAY Funktion wurde nicht ausm RAM 
ausgeführt sondern noch ausm FLASH was ja zum Teil zu Fehlfunktionen bei 
der Funktion führen kann.

Durch #define FLASH 1 wurde der Codeteil mit aufgerufen.

Danach wurde DELAY_US(x);  mit x<1000 ausgeführt, aber sobald da größere 
Werte drinnen standen ist er dann wieder in die InitPLL aus der 
SysCtrl.h zurückgesprungen (vermutlich interer Reset ).

Dann habe ich einfach mal in der InitPeripheralClocks() mehrere 
unbenötigte Funktionen ausgeschaltet und schon lief alles tadellos auch 
mit höherern Werten.

Demzufolge gehe ich davon aus das mein Leiterplattendesign in Bezug auf 
Stromversorgung zu knapp dimensioniert ist da dort 2 TI Chips laufen 
sowie 2x  ISO1050, 1x LevelShifter, 1xADCRefQuelle, 1x 2KanalOptokopler 
(galvanisch getrennt ), 1x SPI zu isoSPI und dies alles über nen 24 zu 
5V DCDC mit 1,25 W  Ausgangsleistung versorgt wird.

Also nochmal danke!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren