STM8 Timer4 interrupt

OP (Firma: Torrox.de) #4143929
Lesenswert?

Hallo,
ich habe gerade Probleme dabei, bei einem STM8L152C6, den Timer 4 dazu 
zu bringen, anzulaufen, geschweige den, einen Interrupt zu erzeugen.

Die Clock läuft intern mit 16Mhz, da ich (mittlerweile) davon eine 
korrektes UART-Debugging ableiten konnte, gehe ich mal davon aus, dass 
das in Ordnung ist.

Ich kann erfolgreich einen Interrupt vom ADC erzeugen lassen.

Initialisieren ich den Timer 4 und lasse mir TIM4->CNTR auf der UART 
ausgeben, so bekomme ich kontinuierlich 0x00.

Der Code selbst ist aus einem Beispiel von ST:
1
void TIM4_Init (void) {
2
    CLK->PCKENR |= 0x04;             // TIM4 clock enable
3

4
    TIM4->ARR = 0x80;                // init timer 4 1ms interrupts
5
    TIM4->PSCR= 7;                   // prescaled by 2^7
6
    TIM4->EGR = 1;                   // kommt so nicht aus dem ST Beispiel, wird aber in der peripheral libray so "gemacht"
7

8
    TIM4->IER = 1;
9
    TIM4->CR1 |= 1;
10
}

Ich habe schon validiert, dass die Funktion aufgerufen wird. Ich schalte 
in dem interrupt handler eine LED an, diese geht aber nie an.

Hat von euch noch jemand eine Idee?

mfg und mit Dank im Voraus,
Torsten

P.S.: Was mir gerade noch einfällt: Ich arbeite mit dem SDCC
OP (Firma: Torrox.de) #4143998
Lesenswert?

Oh, ich glaube, ich habe den Fehler gefunden. Ich habe den flashen 
header verwendet, der definiert dem timer4 so, dass ein Register in der 
struct nicht vorkommt, und somit alle darauf folgenden Elemente um ein 
Byte verschoben sind :-( Böser Fehler!!!

Danke an alle für's Lesen und Helfen!

mfg Torsten

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