www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wechsel ATmega48PA zu ATmega168PA


Autor: Andreas H. (heilinger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da ich zu wenig Speicherplatz bei dem ATmega48PA habe, bin ich nun zum 
ATmega168PA gewechselt.

Beide haben zwar das gleiche Datenblatt, gibt es aber trotzdem 
Unterschiede, die ich beachten muss?

Wo muss ich diese Umstellung im AVRStudio eingeben?
Bisher habe ich unter Project -> Configuration Options -> Device 
geändert und im Reiter "Main" des AVR Dragon ebenfalls Device auf 
ATmega168P geändert. Habe ich noch was vergessen?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habe ich noch was vergessen?

Probier's einfach aus.  So kann z.B. keiner wissen, ob Du für 
EEProm-Adressen uint8_t bzw. char verwendet hast, das reicht beim 48, 
aber nicht mehr beim 168.  Wenn Du Berechnungen hast, in die die 
EEProm-Größe mit eingeht, gehen die jetzt schief.  Ob sowas vorkommen 
kann, weißt nur Du.

Autor: Michael H. (mha1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt unterscheidet an den kritischen Stellen die verschiedenen 
Typen. Wenn die Programmierung in C erfolgt, sollte der Compiler 
eigentlich alles Notwendige erledigen. Das Programm sollte danach 
zumindest noch funktionieren. Wenn die größeren Speicherbereiche bei RAM 
und EEPROM auch genutzt werden sollen, müssen eventuell Variablen von 8 
Bit auf 16 Bit geändert werden.

Bei Assemblerprogrammierung musst Du aber eventuell selbst aufpassen.

Interrupt Vektoren sind ab 168PA länger (2 Words / 4 Bytes anstelle 1 
Word / 2 Bytes) -> macht insgesamt 52 Bytes zusätzlich. Der Aufruf der 
Interrupt Routine braucht dadurch ebenfalls einen Takt länger.

Zusätzlich zu beachten bei zeit- bzw. platzkritischen Anwendungen:

Aufgrund des größeren Flash funktionieren einige Befehle wie z.B. RJMP 
und RCALL ab 88PA nicht über den gesamten Adressbereich und müssen bei 
Bedarf durch JMP bzw. CALL ersetzt werden. Das erhöht den Speicherbedarf 
pro Aufruf um 2 Bytes und verlängert die Ausführungszeit um einen Takt.

Autor: Andreas H. (heilinger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich programmiere in C.
Den größeren Speicher im EEPROM brauche ich nicht, brauche ihn nur im 
Flash.

Die Variablen, die ich ins EEPROM schreibe sind unsigned int und werden 
gesplittet in 2 Byte und dann jeweils ins EEPROM geschrieben. 
Berechnungen zur EEPROM-Größe habe ich nicht.

Wenn die Programmlaufzeit an der ein oder anderen Stelle nen Takt länger 
läuft, kann ich damit leben.

Autor: schlaumeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür hat Atmel die App-Note AVR095 veröffentlicht!

Autor: Andreas H. (heilinger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schlaumeier schrieb:
> Dafür hat Atmel die App-Note AVR095 veröffentlicht!

Optimal, genau das habe ich gesucht!

Danke

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.