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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.