mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega 8 ./. Atmega 16


Autor: Jürgen M. (jmayer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich habe hier zwei kleinere Projekt für die ich einen Atmega-Controller 
aussuchen muss. Die Software wird weitgehend ähnlich sein.

Die Vorauswahl ist jeweils auf den Atmega 8 und auf den Atmega 16 
gefallen.

Wenn ich dir Datenblätter vergleiche finde ich beim oberflächlichem 
Vegleich bis auf die Anzahl der I/O, des Speichers und bei den 
AD-Wandlern keine Unterschiede.

Ich möchte nun bei der Software den selben Quellcode weitgehend in 
beiden Projekten verwenden.

Die Frage ist nun ob es über die von mir oben aufgeführten Unterschiede 
weitere Punkte gibt wenn man eine Software für diese beiden Atemgas 
entwickelt.

Gibt es weitere Fallstricke?

Gruss Jürgen

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Assembler gibt's eine Falle, da die Typen <= 8KB den JMP Befehl nicht 
kennen und die Interrupt-Tabelle anders aussieht. Ist in C jedoch egal.

Autor: Jürgen M. (jmayer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A.K. wrote:
> In Assembler gibt's eine Falle, da die Typen <= 8KB den JMP Befehl nicht
> kennen und die Interrupt-Tabelle anders aussieht. Ist in C jedoch egal.

aha - dachte ich mirs doch ;-()

ist das dann der Unterschied:

Atmega 8:  130 Powerful Instructions
Atmega 16: 131 Powerful Instructions

Jürgen

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Letztlich ja. Es müsste sich allerdings eine Differenz von 2 ergeben, 
weil das gleiche auch für CALL gilt. Kannst ja mal nachzählen ;-).

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Apropos Assembler: Wenn das ein Problem sein sollte - dem ist mit 2 
bedingten Assembler-Makros problemlos abzuhelfen.

Autor: Jürgen M. (jmayer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A.K. wrote:
> Letztlich ja. Es müsste sich allerdings eine Differenz von 2 ergeben,
> weil das gleiche auch für CALL gilt. Kannst ja mal nachzählen ;-).

die zwei Angaben über die Anzahl der Befehle habe ich direkt aus den 
Datenblätter des Atmega 8 bzw. 16.

Jürgen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A.K. wrote:
> Apropos Assembler: Wenn das ein Problem sein sollte - dem ist mit 2
> bedingten Assembler-Makros problemlos abzuhelfen.

Warum so umständlich.
Einfach die Interruptvektoren wie es sich gehört per .org Anweisung 
einstellen und schon ists egal.

Ich finds immer wieder lustig, wenn sich einer bei den RETIs verzählt 
und dann ewig den verschwundenen Interrupt sucht.


Peter

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Einfach die Interruptvektoren wie es sich gehört per .org Anweisung
> einstellen und schon ists egal.

Ich finde es nicht ganz so egal, ob man nun RJMP oder JMP verwendet. 
Nicht im Programm und erst recht nicht in der Interrupt-Tabelle.

Missverstanden, glaube ich.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prinzip:
   macro jump
     if mega8 oder kleiner
         rjmp $1
     else
         jmp $1
     endif
   end macro

Wenn man dann noch die Includes als Quelle der Vektoradressen verwenden, 
dann sieht das ungefähr so aus:
   .org uart_receive
   jump uart_receive_handler

Kann man dann auch im Rest des Programms verwenden, wenn man zu den 
Spezialisten gehört die mehr als 4KB als Assembler-Code fabrizieren (die 
sollten allerdings gerüchteweise in der PIC-Fraktion häufiger zu finden 
sein als bei AVRs). Bis 4KB ist es wieder egal, dann kann man überall 
RJMP verwenden.

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.