atmega64 mit ext. int. aufwecken ?

Gast #149077
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
Gast
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.
Gast
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
Gast
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
Gast
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
Gast
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
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.