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?
Markus schrieb: > "sonst" Du darfst halt nicht mit der Standard-Alternative arbeiten, sondern musst saemtliche Bits explizit abfragen. Markus schrieb: > wenn bit GS2 gesetzt ==> leseZählerwert_TSC_Gruppe2 > wenn bit GS1 gesetzt ==> leseZählerwert_TSC_Gruppe1 etc. pp. Man koennte das auch noch in eine Schleife packen, die solangs laeuft, wie das Flag gesetzt ist. PS: Der Imperativ von "Lesen" heisst "Lies"
STK500-Besitzer schrieb: > > Man koennte das auch noch in eine Schleife packen, die solangs laeuft, > wie das Flag gesetzt ist. Wie welches Flag? > PS: Der Imperativ von "Lesen" heisst "Lies" Danke:) Jetzt nachdem das so verstanden wurde frage ich einmal weiter. Das EOAF Flag wird gesetzt, wenn eine Gruppe fertig ist. Wenn es zB 3 Gruppen sind, kommt man auch 3 mal in den selben Interrupt. Die Bits GxS werden aber erst hardwaremässig gelöscht, wenn die Acq. neu gestartet wird. Das heisst, dass erstens irgend eine Gruppe immer 3 mal gelesen wird und zweitens darf ich erst eine neue Aquisition starten, wenn ein Zähler den Wert 3 erreicht hat. Wie meinst du das jetzt mit der Schleife?
Markus schrieb: > Wie welches Flag? EOAF Der Zusammenhang mit dem Interrupt war mir nicht klar. > Wenn es zB 3 Gruppen sind, kommt man auch 3 mal in den selben Interrupt. > Die Bits GxS werden aber erst hardwaremässig gelöscht, wenn die Acq. neu > gestartet wird. Vermutlich... Ich habe mit der Controller-Funktion noch nie gearbeitet. > Das heisst, dass erstens irgend eine Gruppe immer 3 mal gelesen wird und > zweitens darf ich erst eine neue Aquisition starten, wenn ein Zähler den > Wert 3 erreicht hat. Das waeren insgesamt 3 Abfragen. Wo ist das Problem? Es geht doch nur darum, ob das jeweile Flag GSx gesetzt ist, oder?
STK500-Besitzer schrieb: > Vermutlich... Ich habe mit der Controller-Funktion noch nie gearbeitet. Ich auch nicht. Das Manual beschreibt ja, dass EOAF gesetzt wird, wenn eine Gruppenacq. abgeschlossen ist. Also müssen demnach 3 Interrupts kommen. Aber das kann ich ja mal testen. > Das waeren insgesamt 3 Abfragen. Wo ist das Problem? > Es geht doch nur darum, ob das jeweile Flag GSx gesetzt ist, oder? Ja es ging mir darum, ob du das auch so verstehst wie ich. Ich frage im Interrupt die GxS bits einzeln ab. Danke dir für deinen Beitrag.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.