Interrupt Frage

  • 1
  • 2
  • Seite 1 von 2
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 69
Beiträge: 792
Dabei seit: 06 / 2013
Betreff:

Interrupt Frage

 · 
Gepostet: 28.05.2026 - 09:57 Uhr  ·  #1
Guten Morgen, ich suche gerade eine Möglichkeit 3 Interrupt
C1 C2 C3
beim Xmega abzufragen der bei Aufsteigender und Absteigender Flanke auslöst.
Ich denke das ist dieses -> bothedges;

Kann jmd helfen ?

Gruß Frank


Good morning, I'm looking for a way to query three interrupts (C1, C2, C3) on the Xmega that trigger on both rising and falling edges.

I think this is what's needed -> bothedges;

Can anyone help?

Regards, Frank
miparo
PowerUser
Avatar
Geschlecht:
Herkunft: Germany
Alter: 60
Beiträge: 1015
Dabei seit: 09 / 2007
Betreff:

Re: Interrupt Frage

 · 
Gepostet: 28.05.2026 - 12:00 Uhr  ·  #2
Moin Frank,
mit bothedges liegst du richtig, es gibt ein Demo dazu XMega_PortInt.

Wobei BeepClick im Interrupt natürlich sinnfrei ist eher kurz und knapp im Int.

miparo
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 69
Beiträge: 792
Dabei seit: 06 / 2013
Betreff:

Re: Interrupt Frage

 · 
Gepostet: 28.05.2026 - 12:15 Uhr  ·  #3
Hallo miparo, genau das habe ich mir auch angeschaut.
Aber wie lese ich jetzt PinC1 / PinC2 / PinC3 aus.

Im Demo wird nur PortIntD = 0 ausgelesen also ich denke PinD.0
PortIntD = 0, PullUp, bothedges; // pin0 used, Pullup on, both edge

Das hier ist Interrupt CallBack
Procedure PortIntD;
begin
BeepClick;
inc(PD);
end;

Ich habe auch was von einen Dispatcher gelesen, aber KA was das genau ist.

Ich habe auch schon versucht
PortIntD = 1,2,3 PullUp, bothedges; // pin0 used, Pullup on, both edge

Und auch Procedure
PortIntD1;
begin
BeepClick;
inc(PD);
end;

Aber da bekomme ich Probleme.

Gruß Frank
miparo
PowerUser
Avatar
Geschlecht:
Herkunft: Germany
Alter: 60
Beiträge: 1015
Dabei seit: 09 / 2007
Betreff:

Re: Interrupt Frage

 · 
Gepostet: 28.05.2026 - 13:49 Uhr  ·  #4
dann den PinChangeInt benutzen dazu define PCintCmask = $07 ; ....... deiner 3 Pins und
Procedure PCintC0;
Procedure PCintC1;
Procedure PCintC2 definieren ;

Weiß allerdings nicht , ob der auf beide Flanken geht.
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 69
Beiträge: 792
Dabei seit: 06 / 2013
Betreff:

Re: Interrupt Frage

 · 
Gepostet: 28.05.2026 - 15:48 Uhr  ·  #5
Ne miparo das haut nicht hin. Ich habe viel getestet.

// PCintCmask = $14, PullUp, bothedges;
// PCintCmask = %00001110, PullUp, bothedges;
PCintCmask = 14, PullUp, rising;// bothedges;

Ich bekomme immer diese Meldung.
Habe auch schon in den pdf Datein nach PCintCmask gesucht,
aber nichts gefunden.

Gruß Frank
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
miparo
PowerUser
Avatar
Geschlecht:
Herkunft: Germany
Alter: 60
Beiträge: 1015
Dabei seit: 09 / 2007
Betreff:

Re: Interrupt Frage

 · 
Gepostet: 28.05.2026 - 16:00 Uhr  ·  #6
Du würfelst PortInt und PCint durcheinander!
Die PCint Parameter erwarten nur ein Byte.

Compiler Handbuch Seite 81.
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 69
Beiträge: 792
Dabei seit: 06 / 2013
Betreff:

Re: Interrupt Frage

 · 
Gepostet: 28.05.2026 - 18:16 Uhr  ·  #7
Genau miparo, ich darf nicht PCint nehmen sondern
PortIntC = 3, PullUp, bothedges;
Und damit wird wirklich Pin3 von Port C abgefragt.

Dann bekomme ich auch alles richtig angzeigt
Code

Procedure PortIntC;             // Interrupt CallBack
begin
  if EndZ = true then
    GSwitchView(6);
    gDrawCircle (0, 0, 10, 255, byte(clRED));
    gFillCircle (0, 0, 10, byte(clRED));
    GSwitchView(0);
  else
    GSwitchView(6);
    gDrawCircle (0, 0, 10, 255, byte(clGREEN));
    gFillCircle (0, 0, 10, byte(clGREEN));
    GSwitchView(0);
  endif;
end;

Das haut 100% hin.

Aber was ist mit Pin1 und Pin2

PortIntCmask geht nicht.

Ich brauche für meine Abfrage -> bothedges;

Gruß Frank
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 69
Beiträge: 792
Dabei seit: 06 / 2013
Betreff:

Re: Interrupt Frage

 · 
Gepostet: 29.05.2026 - 16:23 Uhr  ·  #8
Ich habe es jetzt anders gemacht und damit habe ich ruhe.

Code

  PortIntD       = 0, PullUp, bothedges;  
  PortIntC       = 1, PullUp, bothedges;  
  PortIntF       = 4, PullUp, bothedges; 



Gruß Frank
  • 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   141   155 · Page-Gen-Time: 0.023441s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI