TM4C1231H6 kein Interrupt

OP #6746704
Lesenswert?

Hallo,
ich habe ein eigenes Board gebaut mit einem TM4C1231 von TI.
Das Problem ist, das kein einziger Int ausgeführt wird.
Z,Bsp der Timer Int :



://********************************************************************* 
********
//
// The interrupt handler for the Timer0B interrupt.
//
//********************************************************************** 
*******
void
Timer0BIntHandler(void)
{
    //
    // Clear the timer interrupt flag.
    //
    TimerIntClear(TIMER0_BASE, TIMER_TIMB_TIMEOUT);

    g_ui32Counter++;


}

//********************************************************************** 
*******
//
// Configure Timer0B as a 16-bit periodic counter with an interrupt
// every 1ms.
//
//********************************************************************** 
*******
int
main(void)
{

    uint32_t ui32PrevCount = 0;

    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | 
SYSCTL_XTAL_16MHZ);


    SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
    TimerConfigure(TIMER0_BASE, TIMER_CFG_SPLIT_PAIR | 
TIMER_CFG_B_PERIODIC);
    TimerLoadSet(TIMER0_BASE, TIMER_B, SysCtlClockGet() / 1000);
    IntMasterEnable();
    TimerIntEnable(TIMER0_BASE, TIMER_TIMB_TIMEOUT);
    IntEnable(INT_TIMER0B);
    TimerEnable(TIMER0_BASE, TIMER_B);

    //
    // Loop forever while the Timer0B runs.
    //
    while(1)
    {

    }
}




g_ui32Counter wir niemals erhöht, und auch der Debugger springt niemals 
in die interrupt service routine. ( Gibt aber auch kein Faulthandler 
sprung )

Der Timer an sich zählt ordentlich hoch.

Kann das irgendein Hardwarefehler sein ?
Was kann eventuell noch falsch sein?



Andreas
#6746787
Lesenswert?

Ein

IntRegister(INT_TIMER0B, Timer0BIntHandler);

wäre noch ganz gut. Dann IntEnable(), und dann IntMasterEnable() in 
genau dieser Reihenfolge.

Außerdem würde ich nach jedem SysCtlPeripheralEnable() ein 
while(!SysCtlPeripheralReady(...)); setzen, sicherheitshhalber.

fchk
OP #6746844
Lesenswert?

ist eigentlich in der Startup drin ..

aber auch ein
IntRegister(INT_TIMER0B, Timer0BIntHandler);

und die Reihenfolge ändert nichts dran.

Es geht auch kein Interrupt, noch nicht einmal der Systick ...

Es ist als ob IntMasterEnable()

 __asm("    mrs     r0, PRIMASK\n"
          "    cpsie   i\n"
          "    bx      lr\n");


; keinerlei Wirkung hat.



Andreas
Gast #6746854
Lesenswert?

Hallo,

mit welcher Umgebung wird das Projekt erstellt?
Hänge doch bitte mal das komplette Programm / Projekt an.

Ich arbeite schon lange mit diesen Prozessoren (unter Rowley Crossworks) 
und kann nur sagen, daß die Libraries von TI (TvaWare) gut 
funktionieren.
OP #6746863
Lesenswert?

Hallo ,
Mit CCS10.3,
das Programm ist im Grunde nur ein Example aus Tivaware  was ich als 
Projekt
für den TM4C1231 und Segger J-Link angepasst habe.


Bis auf die Ints funktionert es ja, also z.Bsp GPIO usw ...

Ich habe schon fast die Hardware in Verdacht, obwohl das eigentlich sehr 
unwarscheinlich ist, da ich hier 3 ( eigene ) Boards habe, die alle das 
selbe Verhalten zeigen.
Ein Evalboard für die Variante scheint es leider nicht zu geben.

Andreas
Angehängte Dateien:
OP #6746942
Lesenswert?

Es war Hardware ...
ich hatte als Basis für mein eigenes Board den Schaltplan vom
Tiva TM4C123G LaunchPad genommen.

Dummerweise ist in dem Schaltplan Port PF0 nur als PF0 bezeichnet,
und nicht was er eigentlich ist, nämlich  "NMI" !!
Und meine Hardware an dem Port hat den Pin dann auch nach Masse gezogen.

Naja, jetzt läuft es ....


Andreas

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