Interrupt-Problem

  • 1
  • 2
  • Page 1 of 2
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Interrupt-Problem

 · 
Posted: 13.04.2021 - 05:14  ·  #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
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: Interrupt-Problem

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


miparo
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Interrupt-Problem

 · 
Posted: 13.04.2021 - 10:42  ·  #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?

Quote by 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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Interrupt-Problem

 · 
Posted: 13.04.2021 - 11:50  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Interrupt-Problem

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

Harry
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Interrupt-Problem

 · 
Posted: 13.04.2021 - 14:30  ·  #6
Quote by 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
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: Interrupt-Problem

 · 
Posted: 13.04.2021 - 14:47  ·  #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
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Interrupt-Problem

 · 
Posted: 13.04.2021 - 16:16  ·  #8
Quote by 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
  • Page 1 of 2
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 14 · Cache Hits: 14   136   150 · Page-Gen-Time: 0.050239s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI