Gast
#5701157
Hallo Ich arbeite mit einem uC STM32F072C8T6 und bin gerade dabei mir die Funktion eines TSC näher anzusehen. Ich lese auf S 317 im Reference Manual: Bits 23:16 GxS: Analog I/O group x status These bits are set by hardware when the acquisition on the corresponding enabled analog I/O group x is complete. They are cleared by hardware when a new acquisition is started. Nun, ich kann Gruppenacquisitionen gleichzeitig starten. (zB Gruppe 1 und 2) Eine Gruppe hat 4 IOs. Man nehme an, dass einfachheitshalber eine Gruppe 1 Touchkey beinhaltet. Laut Beschrieb oben würde es nun bedeuten, dass am Ende einer Acquisition ein Flag EOAF gesetzt wird und zusätzlich das Bit gesetzt, welches kennzeichnet, welche Gruppe gerade fertig wurde. Was ich nicht verstehe ist, wie die Unterscheidung genau passiert. Warum? EOAF wird gesetzt und ein Interrupt wird aufgerufen. OK Im Interrupt steht beispielsweise: wenn bit GS2 gesetzt leseZählerwert_TSC_Gruppe2 sonst leseZählerwert_TSC_Gruppe1 Sagen wir jetzt, dass die Gruppe1 den Interrupt auslöst und das G1S bit gesetzt ist. Wenn das Programm an der Stelle "sonst" ankommt, wird Gruppe 2 gerade fertig und löst ebenfalls ein Interrupt aus. G2S ist also auch gesetzt. Jetzt steht direkt hinter dem laufenden Interrupt (ausgelöst durch Gruppe1) noch ein Interrupt (ausgelöst durch Gruppe 2). Es ist also zu erkennen, dass im ersten Interrupt der Zählerwert_TSC_Gruppe2 nicht gelesen wird, da das Bit noch nicht gesetzt ist. Das Programm führt den Interrupt aus, liest den Zählerwert für Gruppe1 und kommt direkt nochmals hinein und liest den Zählerwert für Gruppe 2. Damit funktioniert das ganz gut. Habe ich das soweit richtig verstanden?