Forum: Mikrocontroller und Digitale Elektronik [MSP430]: TimerA capture mode: ISR wird auf P1.1 aufgerufen, auf P1.5 nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von DanDanger (Gast)


Lesenswert?

Hallo zusammen,
ich habe hier ein kleines Problem mit meinem MSP430F1611:
Ich möchte einen Port-Pin (genauer: P1.5, Pin 17 beim MSP430F1611) auf
Änderungen hin überwachen. Bei einer fallenden Flanke soll in die ISR 
vom Timer_A0 gesprungen werden.
Minimaler Code um den Fehler zu reproduzieren:
1
/***********************
2
main_isr
3
***********************/
4
INTERRUPT_HANDLER(main_isr, TIMERA0_VECTOR)
5
{
6
  P5OUT ^= BIT0;
7
}
8
9
/***********************
10
main
11
***********************/
12
void main(void)
13
{
14
  // (Initialisierung von Clock, Watchdog & Co.) (...)
15
16
  P1DIR = 0x00;
17
  P1SEL = BIT5;   // P1.5 configured as TA0
18
  //P1SEL = BIT1; // (*) P1.1 configured as TA0
19
20
  // Falling edge + CCI0A + Capture Mode + Interrupt 
21
  TACCTL0 = CM_2 + SCS + CCIS_0 + CAP + CCIE; 
22
23
  // ACLK + Continuous Mode
24
  TACTL = TASSEL_1 + MC_2;
25
  __enable_interrupt();
26
  while(1)
27
  {
28
      // Busy wait
29
  }
30
}
Das seltsame ist: Wenn ich statt P1.5 den Pin P1.1 als TA0 einstelle
(also den mit (*) gekennzeichneten Code einkommentiere) funktioniert 
alles
problemlos (d.h. die ISR wird angesprungen und alles ist so wie es sein 
sollte).
Einen Hardwaredefekt kann ich ausschliessen, da meine fallende Flanke
garantiert am Pin P1.5 anliegt (mit Oszi nachgemessen).
Die Falnek liegen auch lange genug an (mehrere 100ms), so dass hier 
eigentlich mehr als genug Zeit für den MSP430 bleibt um die Änderung zu 
registrieren.

Ich bin hier gerade ein wenig verwirrt. Ich habe das Datenblatt so 
verstanden, dass ich über eine "1" an der entsprechenden Stelle des 
P1SEL-registers auswählen kann, welchen Port-pin ich gerne als 
TA0-Quelle haben möchte. Laut Datenblatt kommen dazu beim MSP430F1611 
die Pins P1.1 (Pin 13) und P1.5 (Pin 17) in Frage.

Meine Frage: Was läuft hier Falsch? Warum funktioniert denn das nur mit 
P1.1 als TA0?

Neugierige Grüsse
  DanDanger

von FriendTI (Gast)


Lesenswert?

DanDanger schrieb:
> Ich möchte einen Port-Pin (genauer: P1.5, Pin 17 beim MSP430F1611) auf
> Änderungen hin überwachen.

Wenn Zeiten nicht wichtig sind, reicht der Portpin Interrupt. Zustand 
einlesen und die richtige Flanke auswählen. Das geht mit jedem Portpin.

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.