mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega168PB Interrupt an E0


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von PunchBoy (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte am ATmega168PB an E0 einen externen Interrupt hängen, der den 
Controller aus dem PowerDown weckt.

Der ATmega168PB hat die Pins E0-E3 neu als I/O-Pins mit zugehörigen 
Interrupts PCINT24-27.

Ich verstehe aus dem Datenblatt leider nicht genau, wie ich den 
Interrupt PCINT24 tatsächlich aktiviere bzw. welche ISR dann 
angesprungen wird.


Soweit bin ich:

"Kapitel 18, EXINT - External Interrupts: The pin change interrupt PCI2 
will trigger if any enabled PCINT pin toggles."
- ich nehme also an, dass die ISR (PCINT2_vect) angesprungen wird.

Das übliche demaskieren und aktivieren der Interrupts über z.B.
PCMSK2 |= (1<<PCINT24);
PCICR  |= (1<<PCIE2);
ist nur für PCINT0-23 definiert.

In Kapitel 19.3 Alternate Port Functions gibt es einen Abschnitt: "Table 
19-13 Overriding Signals for Alternate Functions in PE3...PE0 relate the 
alternate functions of Port E to the overriding signals shown in Figure 
19-5 Alternate Port Functions(1)."
- das verstehe ich inhaltlich nicht, ich denke, die I/O-Funktion ist 
schon die Standard-Funktion von E0, keine Alternate Function?


Hat schonmal jemand die neuen Pins E0-E3 als Interrupt verwendet?
Oder kann das Datenblatt besser entziffern?

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
PunchBoy schrieb:
> Das übliche demaskieren und aktivieren der Interrupts über z.B.
> PCMSK2 |= (1<<PCINT24);

 PCMSK3 |= (1<<PCINT27);
 PCICR  |= (1<<PCIE3);

von PunchBoy (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:
> PCMSK3 |= (1<<PCINT27);
>  PCICR  |= (1<<PCIE3);

PunchBoy schrieb:
> Das übliche demaskieren und aktivieren der Interrupts über z.B.
> PCMSK2 |= (1<<PCINT24);
> PCICR  |= (1<<PCIE2);
> ist nur für PCINT0-23 definiert.

Der Compiler kennt weder PCMSK3 noch PCINT27 noch PCIE3.
Mein Compiler mit meiner iom168pb.h von 2/2016 zumindest.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
PunchBoy schrieb:
> Der Compiler kennt weder PCMSK3 noch PCINT27 noch PCIE3.

 Dann hast du ein Problem mit dem Compiler, nicht mit fehlenden
 Interruptregistern und entsprechenden bits.

> Mein Compiler mit meiner iom168pb.h von 2/2016 zumindest.

 Vielleicht weil M168PB nicht dasselbe ist wie 328PB ?

 Nur 328PB hat das.

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>Der Compiler kennt weder PCMSK3 noch PCINT27 noch PCIE3.
>Mein Compiler mit meiner iom168pb.h von 2/2016 zumindest.

Das Datenblatt auch nicht.

MfG Spess

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Mir gibt zu denken, das im DB für 48PB-168PB weder in der Register 
Übersicht noch im Pinout PCINT24-27 erwähnt werden (und auch kein PCMSK3 
Register oder PCIE3). PCINT24-27 stehen zwar in der Beschreibung zu Port 
E, aber nirgends sonst. Auch ein ISR Vektor ist nicht vorhanden.

Entweder gibts die nicht, oder sie sind nicht maskierbar, was aber 
Unsinn wäre.

: Bearbeitet durch User
von PunchBoy (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Matthias S. schrieb:
> Entweder gibts die nicht, oder sie sind nicht maskierbar, was aber
> Unsinn wäre.

Inhaltlich unsinn, ja. Aber vielleicht lassen sie sich ja trotzdem ohne 
maskieren, nur durch das aktivieren als "Alternate"-Funktion, 
aktivieren? Ich wüsste allerdings immer noch nicht, wie.

von PunchBoy (Gast)


Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
>>Der Compiler kennt weder PCMSK3 noch PCINT27 noch PCIE3.
>>Mein Compiler mit meiner iom168pb.h von 2/2016 zumindest.
>
> Das Datenblatt auch nicht.

Zumindest in Kapitel 6 I/O Multiplexing tauchen PCINT24-27 auch auf.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
PunchBoy schrieb:
> Zumindest in Kapitel 6 I/O Multiplexing tauchen PCINT24-27 auch auf.

Tja, wenn der Mega328PB die Dinger hat (hab jetzt nicht im DB 
nachgeschaut), hat evtl. der Praktikant bei Atmel/Microchip das Kapitel 
ins Mega48PB-168PB Datenblatt kopiert, obwohl es falsch ist. Gehe davon 
aus, das es diese PCINTs nicht gibt.
Edit: Jo, beim 328PB sind PCMSK3 und auch PCIE3 in der Registerübersicht 
und auch in der Vektortabelle.

: Bearbeitet durch User
von Hubert G. (hubertg)


Bewertung
0 lesenswert
nicht lesenswert
Gerade beide Datenblätter heruntergeladen.
Mega168PB ist in der Funktionalität nicht gleich Mega328PB, mal 
abgesehen von unterschiedlichem Flash, RAM usw.
Es gibt beim Mega168PB keinen PCINT3, somit auch keinen Interrupt an 
PortE.
Der Mega168PB hat 27 Interruptvektoren, der Mega328 hat 45 Vektoren.

von Dieter F. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
PunchBoy schrieb:
> Zumindest in Kapitel 6 I/O Multiplexing tauchen PCINT24-27 auch auf.

Ja, aber man kann die nicht (per Register) aktivieren.

Matthias S. schrieb:
> Gehe davon > aus, das es diese PCINTs nicht gibt.

Ich auch.

Hubert G. schrieb:
> Es gibt beim Mega168PB keinen PCINT3, somit auch keinen Interrupt an
> PortE.

Das verstehe ich leider nicht :-/

von Hubert G. (hubertg)


Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Das verstehe ich leider nicht :-/

Dann schau ins Datenblatt des Mega168PB, dann siehst du das es keinen 
Pin Change Interrupt Request 3 gibt und somit keinen Interrupt auf 
PortE.

von Dieter F. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Dann schau ins Datenblatt des Mega168PB, dann siehst du das es keinen
> Pin Change Interrupt Request 3 gibt

Es gibt aber sehr wohl einen PCINT3 - und der hängt an PB3.

Schön ruhig bleiben :-)

von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Ihr verwechselt PCIE3 mit PCINT3 ;)

von Dieter F. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
M. K. schrieb:
> Ihr verwechselt PCIE3 mit PCINT3 ;)

Ich nicht :-)

von PunchBoy (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Der Mega168PB hat 27 Interruptvektoren

da wären die PCINT24-27 aber auch dabei...seltsam...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
PunchBoy schrieb:
> da wären die PCINT24-27 aber auch dabei...seltsam..

Nein. Es fehlt der Interrupt Vektor für die PCINT3 Gruppe. Der Mega328PB 
hat diesen, aber eben nicht der Mega88PB oder 168PB.
Also vergiss es. Kannst ja einen 328PB nutzen.

von Dieter F. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
>> Gehe davon > aus, das es diese PCINTs nicht gibt.
>
> Ich auch.

Matthias S. schrieb:
> Nein. Es fehlt der Interrupt Vektor für die PCINT3 Gruppe.

Ja - gut erkannt :-)

von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> M. K. schrieb:
>> Ihr verwechselt PCIE3 mit PCINT3 ;)
>
> Ich nicht :-)

Doch, auch du. Es gibt einen Pin der PCINT3 heißt und einen 
Interrupt-Vector der ebenso PCINT3 heißt ;)
Man könnte auch sagen, ihr sprecht gezielt aneinander vorbei.

von Draco (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn du Vector 0x0036 ansprichst, den PCINT3 Vektor - der steht im 
Datenblatt, gibt es aber beim 328pb nicht.

von Dieter F. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
M. K. schrieb:
> und einen Interrupt-Vector der ebenso PCINT3 heißt ;)

Aber nicht beim 168PB -> S. 87 DB - Punkt 17.3

Wer Lesen kann ...

von Hubert G. (hubertg)


Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Es gibt aber sehr wohl einen PCINT3 - und der hängt an PB3.
>
> Schön ruhig bleiben :-)

Was hat dieser PCINT3 mit dem PortE zu tun?

von Dieter F. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ubert G. schrieb:
> Es gibt beim Mega168PB keinen PCINT3, somit auch keinen Interrupt an
> PortE

Dieter F. schrieb:
> Es gibt aber sehr wohl einen PCINT3 - und der hängt an PB3.

Hubert G. schrieb:
> Was hat dieser PCINT3 mit dem PortE zu tun?

Das kannst nur Du beantworten :-)

von Hubert G. (hubertg)


Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Dieter F. schrieb:
>> Es gibt aber sehr wohl einen PCINT3 - und der hängt an PB3.
>
> Hubert G. schrieb:
>> Was hat dieser PCINT3 mit dem PortE zu tun?
>
> Das kannst nur Du beantworten :-)

Der Hinweis kam aber von dir, also solltest du es schon wissen.

von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Aber nicht beim 168PB -> S. 87 DB - Punkt 17.3

Ja, das weiß ich auch, Dieter. Aber Hubert schrieb oben, dass es beim 
Atmega168PB keinen Pin Change Interrupt Request 3 gibt worauf du 
schriebst, dass es sehr wohl einen PCINT3 gäbe. Hubert meinte aber 
eindeutig den PCINT3 Vector, und du eindeutig den Pin PCINT3.
Ich wies lediglich darauf hin, dass ihr von zwei verschiedenen Dingen 
sprecht.
Soviel dann mal zum Thema wer lesen kann...

von Dieter F. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
M. K. schrieb:
> Hubert meinte aber
> eindeutig den PCINT3 Vector, und du eindeutig den Pin PCINT3.
> Ich wies lediglich darauf hin, dass ihr von zwei verschiedenen Dingen
> sprecht.

Ja, bekannt.

M. K. schrieb:
> Dieter F. schrieb:
>> M. K. schrieb:
>>> Ihr verwechselt PCIE3 mit PCINT3 ;)
>>
>> Ich nicht :-)

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Schreib doch einfach mal ins PCICR = 0x0F und lies es zurück, wieviel 
Bits gesetzt bleiben.

: Bearbeitet durch User
von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Ja, bekannt.

Dir ganz offensichtlich nicht:

Dieter F. schrieb:
> Hubert G. schrieb:
>> Dann schau ins Datenblatt des Mega168PB, dann siehst du das es keinen
>> Pin Change Interrupt Request 3 gibt
>
> Es gibt aber sehr wohl einen PCINT3 - und der hängt an PB3.

Der Pin Change Interrupt Request 3 hängt nicht an PB3. Was du meinst 
heißt Pin Change Interrupt 3, das ist nicht der Pin Change Interrupt 
Request 3 auch wenn er abgekürzt mit PCINT3 bezeichnet ist.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.