mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik atmega64 mit ext. int. aufwecken ?


Autor: karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
iIh verzweifel grade daran meinen atmega64 mit einem flankengesteuerten
ext. int (egal welche flanke und auch egal welcher int.) aufzuwecken.
Ich versteh auch nich ganz was die Zahl nach dem Doppelpunkt bei "Only
INT3:0 or level interrupt INT7:4." heißen soll.

Könnte mir jemand ein kleines beispiel geben wie ich einen ext.int
initliseren muss der es schafft einen atmega64 aus dem sleep mode
wecken kann! Wenn möglich auch aus einem "tieferen" schlaf als dem
idle mode.

besten dank,
karl

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus den tiefen Idle-Modes kannst du nur mit LEVEL Interrupt aufwecken.
Da kein Takt erzeugt wird, kann er auch keine Flanke erkennen. Du
kannst da INT0 und INT1 nehmen, allerdings musst du auf LEVEL-Interrupt
einstellen.

Autor: karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich muss aber leider einen Int. verwenden, der durch eien Flanek
ausgelöst wird - wobei die Flanke eben egal ist, kann also einstellen
welche kommen soll.

Um flankengesteuerte Interrupts zu verwenden, muss doch nru die "Main
Clock" laufen ... und die ist abgesehen von Power-Down udn Pwer-Save
eh überall eingeschalten.

Das Problem ist aber wirklich, dass ich nicht ganz verstehe welche
Interrupts ich nun verwenden kann ... und vorallem wie ich diese
initilisiere ... hab nur Beispiele für den atmega8 gefunden und im
Datenblatt finde ich leider wirklich keine Erklärung aus der ich schlau
werde.


karl

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Flanke geht nur mit sleepmode Idle.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne den ATmega64 jetzt nicht, aber die Bezeichnung "INT7:4"
bedeutet meist "Interrupt 7 bis Interrupt 4". Der Doppelpunkt hat
also die gleiche Funktion wie der Bindestrich im Deutschen...
Müsste eigentlich so sein.
Ich weiß halt nicht, wieviele Interrupt-Quellen der ATMEga64 hat.
Sind damit vielleicht auch die internen wie Timer etc gemeint?

Gruß
Rahul

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir gerade das Datenblatt angeguckt:
Es sind insgesamt 8 externe Interrupt-Quellen, wobei die oberen 4
(INT7:4) Level getriggert sind und die unteren 4 scheinbar
flankengetriggert.

Gruß Rahul

Autor: karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für eure zahlreiche und schnelle Hilfe.

Laut Datenblatt (Table 18, Seite 46) kann ich doch die Ints 7:0 für
JEDEN Sleep-Modus verwenden, oder ?

Wenn ich das jetzt richtig verstanden habe, kann ich ja eh Int 7:0
(also 7 - 0 g) verwenden. Und 3:0 sind ja auch flankengetriggert -
also muss ich einfach einen von diesen verwenden um ihn aufzuwecken?

Werde das ganze mal so versuchen , wenn mir jemand von euch sein "ok"
gibt - ein kleines Beispiel wie manbeim atmega64 einen solchen interrupt
init. wär natürlich auch parktisch. Timer, etc hab ich schon alles
zusammengebracht .. abe rbei den ext. int scheiters irgendwie!

freundliche Grüße
karl

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Int0 - Int3 können aus Powerdown mit Flanken (>=50ns) aufgeweckt
werden. Hier ein Beispiel für Int1:

  EIMSK &= ~2;    // Int1 zuerst sperren
  EICRA |= 0xc;    // positive flanke einstellen
  EIFR = 2;    // flag loeschen
  EIMSK |= 2;    // und Int1 Interrupt freigeben

Zum Schlafenlegen wird benötigt:

  MCUCR = 0x30;    // Stoppmodus waehlen
  __sleep();    // und stoppen

Das Aufwachen dauert ein paar Millisekunden, bis der Oszillator+Logik
betriebsbereit sind.

Autor: karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank!!

Funktioniert einwandfrei ...

mit freundlichen grüßen
karl

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, ich hab im falaschen Datenblatt geschaut, war Mega32, da geht
nur Level-Interrupt.

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.