-         

Ergebnis 1 bis 6 von 6

Thema: Aufwecken eines atmega48 aus powerdown?

  1. #1

    Aufwecken eines atmega48 aus powerdown?

    Anzeige

    Hallo zusammen,

    vielleicht kann mir hier jemand helfen.
    Ich habe einen atmega48 über den int0 und dem Befehl powerdown schlafen gelegt. Nun möchte ich gerne über den zweiten freien externen Interruptpin (Int1) den Chip wieder aufwecken, aber ich bekomme dies irgendwie nicht hin. Ich habe den Int1 aktiviert und auf change gesetzt. Wenn ich nun den auf ground gelegten Int1 mit einer positiven Spannung (+5V) berühre passiert nichts, obwohl dann doch ein Wechsel stattfindet?

    Für Hilfe wäre ich dankbar!

    Gruß
    Matthias

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    wie weisst du, das nichts passiert ?

    Im DB steht, das die Flanke, oder das Signal, solange anliegen muss, bis der Controller komplett aufgewacht ist, dann erst wird ein IRQ ausgelöst, wenn das Signal nicht mehr da ist, ist er zwar wach, aber es gibt keinen IRQ !
    Wie lange er zum aufwachen braucht wird mit den Fusebits eingestellt.

  3. #3
    Hallo,

    vielen Dank für die Antwort! Das der Chip nicht reagiert kann man meiner Meinung nach am Stromverbrauch erkennen. Nach dem Powerdown-Befehl geht der Stromverbrauch unter 1 mAh. Wenn ich nun einen Interrupt zum Aufwecken auslöse bleibt der Stromverbrauch gleich und der Befehl für einen Reset, in Form des High-Low-Setzens des entsprechenden Ports, wird auch nicht ausgeführt?!

    Gruß
    Matthias

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.04.2005
    Beiträge
    178
    Lies mal im Datenblatt nach!

    Seite 39 - Table 8.1 - Notes 3 :

    For INT1 und INT0 only level interrupt !!

    Bei Change wird der ATmega48 nicht geweckt !!

    felack

  5. #5
    Hallo felack,

    vielen Dank für die Antwort! Ich habe dies in der Zwischenzeit auch gelesen und entsprechend den Interrupt auf low level gesetzt. Doch dies war auch zunächst ohne Erfolg gekrönt.
    Ich habe durch Versuch festgestellt, dass man anscheinend den powerdown-Befehl nicht in der Interruptroutine setzen darf, da er ansonsten nicht mehr zum aufwachen zu bewegen ist?! Warscheinlich springt er immer wieder in den Powerdown-Befehl, sobald man ihn versucht aufzuwecken?! ICh habe es nun anderes gelöst und lasse ihn nur noch über interrupt aufwachen.

    Ansonsten habe ich noch eine interessante Entdeckung gemacht: wenn ich den interrupt auf low level setze brauche ich zusätzlich noch eine Pegeländerung damit es funktioniert. Ich dachte zunächst es wäre auch möglich den Chip zu starten mit schon auf Ground gezogenen Interrupt-Pin, was kein Auslösen ergibt.

    Gruß
    Matthias

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Zitat Zitat von matze32
    Ich habe durch Versuch festgestellt, dass man anscheinend den powerdown-Befehl nicht in der Interruptroutine setzen darf, da er ansonsten nicht mehr zum aufwachen zu bewegen ist?! Warscheinlich springt er immer wieder in den Powerdown-Befehl, sobald man ihn versucht aufzuwecken?!
    Jein. Üblicherweise aktiviert man vor dem Schlafengehen eine INT-IRQ auf "level triggered". Beim Aufwachen wird denn die ISR ausgeführt, die auch leer sein darf, kann also aus lediglich einem RETI bestehen.
    Wenn du in einer ISR schlafen gehst, dann sind dort wahrscheinlich die Interrupts deaktiviert, so daß der AVR nicht wach wird bzw er kann wie ISR nie ausführen (wo werden IQRs global erlaubt???).

    Die IRQs in der ISR zu aktivieren ist auch keine gute Idee, weil es ein level triggered ist...
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •