Interrupt-Problem

  • 1
  • 2
  • Seite 1 von 2
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 05:14 Uhr  ·  #1
Hallo @ all,

ich hab ein Problem und evtl. hat ja einer von euch eine gute Idee .....
Meine Schaltung, an der ich gerade arbeite, hat u.a. einen LAN-Anschluss mit einem Wiz550io-Modul und einen Touchscreen. Für den Touch setze ich einen AR1021 als Controller ein, der bei Touchbetätigung einen Interrupt auslösen soll. Da ich einen Blick auf den Code des Netzwerktreibers werfen konnte, weiß ich, daß dieser recht oft die Interrupts sperrt und ich somit zu 99% nicht mitbekomme, wenn der Touch betätigt wurde. Das einzige was mir dazu einfallen würde: Mit dem Interrupt-Ausgang des Touchcontrollers ein FlipFlop setzen und dessen Ausgang zyklisch überprüfen und nach Auslesen der Touchkoordinaten das FlipFlop resetten.

Bin für jede Idee zu haben .... Danke
Harry
miparo
Schreiberling
Avatar
Geschlecht:
Herkunft: Germany
Alter: 59
Beiträge: 988
Dabei seit: 09 / 2007
Betreff:

Re: Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 09:39 Uhr  ·  #2
Moin Harry,
das kling ja etwas hanebüchend :)
Auf was steht denn WzSetPriority ?


miparo
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 10:42 Uhr  ·  #3
Hallo Harry,

hmm er wird ja im Treiber NIE lange gesperrt. Die Wahrscheinlichkeit, dass es daran liegt sehe ich eher als sehr gering an und 99% finde ich doch extrem hoch für diese Wahrscheinlichkeit. Evtl. beisst sich da irgendwas anderes.

Wie ist der Touchcontroller an der CPU angeschlossen?

Zitat geschrieben von Harry

...
Das einzige was mir dazu einfallen würde: Mit dem Interrupt-Ausgang des Touchcontrollers ein FlipFlop setzen und dessen Ausgang zyklisch überprüfen und nach Auslesen der Touchkoordinaten das FlipFlop resetten
....


Im Prinzip ist es ja genau das, was man in einen Interrupt machen sollte (schnell und kurz).
Nur kurz einen Merker setzen dann wieder raus. Und im normalen Betrieb die Abfrage machen.

Thorsten
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 11:50 Uhr  ·  #4
Hallo ihr beiden,

@miparo: muß ich nach schauen

@Thorsten: Was macht ein Interrupteingang wenn Interrupts gesperrt sind? Speichert der das und die CallBack-Funktion wird später ausgeführt?
Nunja mein Programm wartet zu 99% auf eine Pingantwort, deshalb behaupte ich, daß das Prog sehr lange im Treiber ist. Touchcontroller wird via I2C gelesen. Spätestens alle 500ms (wenn ein Ping nicht beantwortet wird) kommt das Programm an der Stelle "Interrupt ausgelöst? Ja: Touch lesen" vorbei.

Harry
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 13:03 Uhr  ·  #5
@miparo: Steht jetzt auf TinaPrioLow (vorher TinaPrioHigh), was die Sache aber nicht wesentlich besser macht.

Harry
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 14:30 Uhr  ·  #6
Zitat geschrieben von Harry

...
@Thorsten: Was macht ein Interrupteingang wenn Interrupts gesperrt sind? Speichert der das und die CallBack-Funktion wird später ausgeführt?
Nunja mein Programm wartet zu 99% auf eine Pingantwort, deshalb behaupte ich, daß das Prog sehr lange im Treiber ist. Touchcontroller wird via I2C gelesen. Spätestens alle 500ms (wenn ein Ping nicht beantwortet wird) kommt das Programm an der Stelle "Interrupt ausgelöst? Ja: Touch lesen" vorbei.
...


Hallo Harry,

ich hätte da evtl die Vermutung, dass Dein Interrupt von dem des WizNet unterbrochen wird.
Entweder sperrst Du dies kurz bei Deinem Interrupt zum testen. Oder schaue Dir mal die PRIO an.

Der XMEGA hat für die Interrupts ja ein Prio-System, wenn ich das richtig verstanden habe, darf eine hohe Prio einen anderen mit niedrigerer Prio einfach unterbrechen. Der Interrupt wird wahrscheinlich die Register des Wiznet nicht sichern und anderst herum wahrscheinlich auch nicht.

Evtl. mal den WizNet und den eigenen auf eine Prio setzen und testen, klar könntest Du da evtl. mal einen beim Test verlieren. Aber ich würde da erstmal so an das Ganze rangehen.

@miparo:
Aber gibt es überhaupt einen Grund beim Wiznet auf Interrupts so schnell zu reagieren? Die haben intern doch den Speicher, ich denke da machen ein paar ms mehr oder weniger nichts aus.

Thorsten
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 14:47 Uhr  ·  #7
Hi Thorsten.

The original designer of the AVRCo WizNet system tried to make it as PC-Like as possible, I think, and therefore waits for a response to a request before allowing AVRCo to proceed. I wrote a totally non-blocking driver that takes advantage of the chips facilities as you describe, so no interrupt blocking, no extra memory for sockets, and so on. But unfortunately for Harry, I never got round to writing a Ping for it, and Harry absolutely needs ping.
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Interrupt-Problem

 · 
Gepostet: 13.04.2021 - 16:16 Uhr  ·  #8
Zitat geschrieben von Merlin

Hi Thorsten.

The original designer of the AVRCo WizNet system tried to make it as PC-Like as possible, I think, and therefore waits for a response to a request before allowing AVRCo to proceed. I wrote a totally non-blocking driver that takes advantage of the chips facilities as you describe, so no interrupt blocking, no extra memory for sockets, and so on. But unfortunately for Harry, I never got round to writing a Ping for it, and Harry absolutely needs ping.


Hello Merlin,

sounds good with your driver.

The real point is actually to use the WizNet sockets (WIZNET memory), so that the CPU does not have to worry about the LAN traffic so quickly and wastes computing time waiting.

Thorsten
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   137   151 · Page-Gen-Time: 0.035818s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI