Forum: Mikrocontroller und Digitale Elektronik msp430 Timerinterrupt unregelmäßig?


von Timo P. (latissimo)


Lesenswert?

initialisierung: (nach OSC Fault)
1
void init_timerA()
2
{
3
  TACCTL0 = CCIE;                             // TACCR0 interrupt enabled
4
    TACCR0 = 5000;                // 10ms bei 4MHz Quarz
5
  TACTL = TASSEL_1 + MC_2 + TAIE + ID_3 ;     // ACLK/8, contmode, interrupt
6
}

Interrupt :
1
// Timer A0 interrupt service routine
2
#pragma vector=TIMERA0_VECTOR
3
__interrupt void Timer_A (void)
4
{
5
  P4OUT ^= (1<<2);
6
  TACCR0 += 500000;                          // Periode/(8/XTAL)
7
}
der timer ist ausschließlich hierfür verwendet.

Msp430F2274  mit CCE kompiliert

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Tja, wenn du die Obergrenze für den Timer in jedem Interrupt 
unregelmäßig verschiebst...

> TACCR0 += 500000;                          // Periode/(8/XTAL)

TACCR0 ist wieviele Bits breit?

von Timo P. (latissimo)


Lesenswert?

schon klar, verdammt.......
aus 50 000 wird schnell mal ne 500 000 blöder schreibfehler

dann sind das die Überläufe, die ja bei 16bit desöfteren zustande 
kommen....

danke !

von Timo P. (latissimo)


Lesenswert?

Zahlenwert ist geändert!

Als Beispiel mal auf 50 gesetzt Aber ich bek. nur rotze heraus, siehe 
Anhang!

von Timo P. (latissimo)


Angehängte Dateien:

Lesenswert?

siehe anhang....

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Der "Spike" ist sicher kein Messproblem sondern so reproduzierbar 
erzeugbar? Hast du eine tatsächliche Oszi-Mitschrift zur Hand?

Nebensächlich: Warum benutzt du den Continuous Mode (TACCR0...0xFFFF) 
statt den Up Mode (0...TACCR0)

von Timo P. (latissimo)


Lesenswert?

moment ich gucke nach dachte ich hätte den upmode

wenn ich continious habe ist mir alles klar....
dann kommen zwei interrupts oder? einer bei taccr0 und einer bei 
overflow.

richtig?

von Timo P. (latissimo)


Lesenswert?

sollte natürlich MC_1 sein statt MC_2....

diese blöden Makros kenn ich noch net auswendig.....

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Weiss ich nicht. Ich habe nicht das Datenblatt zur Hand, sondern nur 
eine Übersicht eines Dritten 
(http://www.ccs.neu.edu/home/noubir/Courses/CSU610/S07/MSP430-Clock-Timers.pdf). 
Dort sind beide Fälle streng getrennt bzw. der Mixed-Fall nicht 
betrachtet.

von Gunb (Gast)


Lesenswert?

Ich nutze zwar für meine Zwecke den Cont. Mode mit Interrupt und 
mehreren CCRs, aber rein spontan fällt mir nur ein: schau dir mal die 
OUTMODx-Settings des TACCTL0-Registers an. Stimmt dies für deinen Zweck?

Ich meine zu glauben, dass der Overflow eine separate ISR-Aktivierung 
hat, der sollte also bei die nicht ausgelöst werden.

gruss
gunb

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.