mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny25 - Aufwachen aus PowerDown nur über INT0??


Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich bin gerade dabei den ATtiny25 für den PowerDown Mode zu 
programmieren. Allerdings benötige ich zwei Pins die ihn wieder 
aufwecken. Im Datenblatt steht:
Only an External Reset, a Watchdog Reset, a Brown-out Reset, 
USI start condition interupt, an external level interrupt on INT0 
or a pin change interrupt can wake up the MCU.
Bezieht sich das "or a pin change interrupt" auf einen beliebigen Pin 
(PCINT0-5), oder nur auf INT0?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. wrote:
> Bezieht sich das "or a pin change interrupt" auf einen beliebigen Pin,
> oder nur auf INT0?
INT0 ist kein Pin Change Interrupt, sondern ein externer Interrupt! 
Die Pin Change Interrupts heißen PCINTx

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
g
Ja habs auch gerade selber gemerkt. Danke

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BTW:
level interrupt und pin change interrupt widersprechen sich schon 
per se...

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mmh, irgendwie finde ist das im Datenblatt komisch. Dort steht:
Bit 5 – PCIE: Pin Change Interrupt Enable
When the PCIE bit is set (one) and the I-bit in the Status Register (SREG)
is set (one), pin change interrupt is enabled. Any change on any enabled
PCINT5:0 pin will cause an interrupt. The corresponding interrupt of Pin
Change Interrupt Request is executed from the PCI Interrupt
Vector. PCINT5:0 pins are enabled individually by the PCMSK0 Register.
Den PCI Interrupt finde ich aber nicht in den Vektoren, dort ist nur
3 0x0002 PCINT0 Pin Change Interrupt Request 0
Der also eigentlich nur von PCINT0 ausgelöst wird. Oder ist das der 
allgemeine PCI?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der also eigentlich nur von PCINT0 ausgelöst wird. Oder ist das der
>allgemeine PCI?

Ja. "Welcher Pin es war" musst Du anschließend anhand des Registers 
PCINT checken.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
>>Der also eigentlich nur von PCINT0 ausgelöst wird. Oder ist das der
>>allgemeine PCI?
>
> Ja. "Welcher Pin es war" musst Du anschließend anhand des Registers
> PCINT checken.
Nicht wirklich. In den Mask-Registern stellt man vorher ein, welche 
Pins den Interrupt auslösen können sollen. Wenn mehr als einer 
ausgewählt wurde, muss man das PIN-Register des betreffenden Ports 
abfragen, um rauszufinden, wer es war.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja. "Welcher Pin es war" musst Du anschließend anhand des Registers
>PCINT checken.
Ah gut zu wissen, bloß warum wird das nicht auch so geschrieben? 
Ziemlich verwirrend wie ich finde.

>Nicht wirklich. In den Mask-Registern stellt man vorher ein, welche
>Pins den Interrupt auslösen können sollen. Wenn mehr als einer
>ausgewählt wurde, muss man das PIN-Register des betreffenden Ports
>abfragen, um rauszufinden, wer es war.
So hab ich mir das schon gedach.

Vielen Dank euch beiden.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn mehr als einer ausgewählt wurde, muss man das PIN-Register des
>betreffenden Ports abfragen,

Ah, OK. Dann hab ich oben was falsches erzählt. Sorry, war keine 
Absicht.

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>Ich bin gerade dabei den ATtiny25 für den PowerDown Mode zu
>programmieren. Allerdings benötige ich zwei Pins die ihn wieder aufwecken.

Man muss dazu übrigens nicht unbedingt auf den Pin Change Interrupt 
zurückgreifen; das Bild zeigt, wie es auch ohne geht: Beide Taster 
lösen beim Gedrücktwerden einen gewöhnlichen externen Interrupt aus 
(Int0 beim ATtiny25). Welcher es war, kann man durch unmittelbar 
darauffolgendes Einlesen des Zustands der Pins PB2 und PB1 über das 
PIN-Register feststellen:

PB2  PB1    Taster A    Taster B
--------------------------------
 0    0        ?          down
 0    1       down         up
(1)  (0)
 1    1        up          up

Das "?" bedeutet, dass man den Zustand von Taster A nicht herausbekommen 
kann, d. h. bei dieser Schaltungsvariante ist "A und B down" von "A up 
und B down" ununterscheidbar. "Beide Taster gedrückt" ist also nicht 
detektierbar.

Die eingeklammerte Kombination PB2=1 und PB1=0 tritt niemals auf.

Die Pullups an beiden Pins müssen enabled sein, und statt PB1 kann man 
natürlich auch einen anderen Pin nehmen.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist auch ne gute Idee. Welche besser ist sei mal dahingestellt. Ich 
werde mich wegen der geringeren Anzahl von Bauteilen jedoch für die PCI 
Version entscheiden. Ist auch schon fertig gelötet.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar. Was dem einen sein Pintschäintsch ist dem annern sein Diode. Oder 
so... :-)

Viel Spaß noch.

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.