Interrupt Frage

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

Interrupt Frage

 · 
Gepostet: Heute um 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: 59
Beiträge: 1006
Dabei seit: 09 / 2007
Betreff:

Re: Interrupt Frage

 · 
Gepostet: Heute um 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: 786
Dabei seit: 06 / 2013
Betreff:

Re: Interrupt Frage

 · 
Gepostet: Heute um 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: 59
Beiträge: 1006
Dabei seit: 09 / 2007
Betreff:

Re: Interrupt Frage

 · 
Gepostet: Heute um 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: 786
Dabei seit: 06 / 2013
Betreff:

Re: Interrupt Frage

 · 
Gepostet: Heute um 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: 59
Beiträge: 1006
Dabei seit: 09 / 2007
Betreff:

Re: Interrupt Frage

 · 
Gepostet: Heute um 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: 786
Dabei seit: 06 / 2013
Betreff:

Re: Interrupt Frage

 · 
Gepostet: Heute um 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
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   126   140 · Page-Gen-Time: 0.023672s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI