Forum: Mikrocontroller und Digitale Elektronik Von atmega8 auf atmega48, Power down Problem


von Benjamin K. (benkly)


Lesenswert?

Hi,

ich habe ein Programm für den atmega8 geschrieben. Dieses funktioniert 
auch ohne Probleme. Jetzt habe ich aus Kostengründen versucht den 
atmega8 durch einen atmega48 zu ersetzen.

Das Programm habe ich soweit abgeändert und es funktioniert soweit ohne 
Probleme. Bis auf den Power down Mode. Dazu habe ich das 
Powermanagementregister nach Datenblatt angepasst und schicke den 48er 
wie immer in der Main mit Sleep ins Bett, aber ich kann diesen dann mit 
dem Int1 nicht mehr aufwecken. Mit dem atmega8 hat das funktioniert.

Kann mir da einer von euch nen Tipp geben was für eigenarten der 
atmega48 hat?


Gruß, Benny.

von Benjamin K. (benkly)


Lesenswert?

Hi,

juhuuuu, ich habs! Das Problem war dieser Code:

Config Int1 = Falling


Das kann der anscheinend nicht. Der kann im Powerdown Modus anscheinend 
nur:

Config Int1 = Low Level


Ich habe über Google in einem englischen Forum einen Beitrag gefunden in 
dem einer schrieb:

As you can find in the Mega128 datasheet, you CAN'T wake up
from sleep using INT0/1 rising/falling edge.
You have to use INT on LEVEL. So it will works.


Das hab ich mal probiert und siehe da, es geht.
Vielleicht hilft das ja anderen auch die Probleme damit haben, nur doof 
das es beim atmega8 geht und beim atmega48 nicht und dann nicht in 
diesem Dokument steht wo die unterschiede aufgelistet sind.

Aber jetzt geht es ja, puuuhhh, Glück gehabt.


Gruß, Benny.

von Peter D. (peda)


Lesenswert?

Benjamin Klyeisen wrote:
> Vielleicht hilft das ja anderen auch die Probleme damit haben, nur doof
> das es beim atmega8 geht und beim atmega48 nicht und dann nicht in
> diesem Dokument steht wo die unterschiede aufgelistet sind.

Weil es beim Mega8 ja auch nicht geht.

Warscheinlich hat das Config beim Mega8 automatisch den Low-Level 
genommen oder durch nen Fehler bist Du nie in Power-Down gelandet.

Das Problem beim Config-Befehl ist es, daß die Entwickler auch nur 
Menschen sind und daher Fehler machen können bei der Vielzahl der 
AVR-Typen.
Ich würde daher raten, lieber das Datenblatt zu lesen und danach die 
IO-Register mit den entsprechenden Werten zu laden. Das betrifft auch 
das Register zum Setzen des gewünschten Sleep-Mode.


Aber im Gegensatz zum Mega8 kann der Mega48 wirklich mit ner Flanke 
aufwachen und sogar an jedem Pin.
Das nennt sich dann Pin-Change-Interrupt.


Peter

von Benjamin K. (benkly)


Lesenswert?

Hallo Peter,

> Weil es beim Mega8 ja auch nicht geht.
>
> Warscheinlich hat das Config beim Mega8 automatisch den Low-Level
> genommen oder durch nen Fehler bist Du nie in Power-Down gelandet.

Also beim Mega8 ging es auf jeden Fall. Ich habe das Programm nur in 
Bezug auf das Sleep-Register geändert um den Powerdown Modus bei den 
Controllern zu aktivieren. Und im Powerdown bin ich auf jeden Fall beim 
Mega8 gelandet, das sieht man ja allein schon am Stromverbrauch.


> Das Problem beim Config-Befehl ist es, daß die Entwickler auch nur
> Menschen sind und daher Fehler machen können bei der Vielzahl der
> AVR-Typen.
> Ich würde daher raten, lieber das Datenblatt zu lesen und danach die
> IO-Register mit den entsprechenden Werten zu laden. Das betrifft auch
> das Register zum Setzen des gewünschten Sleep-Mode.

Das hab ich jetzt nicht so ganz verstanden. Ich habe bei beiden 
Controllern jeweils mit dem Sleep-Register den jeweiligen Sleepmodus 
Powerdown ausgewählt.


> Aber im Gegensatz zum Mega8 kann der Mega48 wirklich mit ner Flanke
> aufwachen und sogar an jedem Pin.
> Das nennt sich dann Pin-Change-Interrupt.

?!? Bist Du Dir da sicher? Das der das aus dem Powerdown Modus auch 
kann? Wenn das so wäre dann verstehe ich nicht wozu man noch expliziet 
die INT0 und INT1 als externe Interrupts braucht.

Also ich hab das nochmals getestet. Bei mir war es wirklich nur der 
Unterschied zwischen "Low Level" und "Falling" der es funktionieren ließ 
oder auch nicht.


Gruß, Benny.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.