Forum: Mikrocontroller und Digitale Elektronik ATmega328P -> ATmega328PB BINÄR Code kompatible


von Hendrik L. (lbd)


Lesenswert?

Habe folgenden Artikel gelesen:

https://www.pololu.com/file/0J1464/Atmel-42559-Differences-between-ATmega328P-and-ATmega328PB_ApplicationNote_AT15007.pdf

Darin heisst es: "... Code compiled for ATmega328 variants are 
compatible and can be executed in the ATmega328PB device.  ..."

Damit ist "gelinkte" BINÄRE Kompatibilität gemeint, d.h. 328P.hex Code, 
den ich zuvor in einen 328P geflashed habe, kann nun kopiert werden und 
direkt in einen 328PB geflashed werden ?!

Nur, um ganz sicher zu gehen, dass ich bei einer Fehlersuche keine 
Basics übersehen habe ...!

Danke im voraus & Gruesse

von Veit D. (devil-elec)


Lesenswert?

Ja ist korrekt.

Edit:
Nochmal anders. Solange in deiner Programmierumgebung der Ziel µC ein 
328P bleibt, solange kannst du weiterhin am Programm schreiben. Wird ja 
am Ende für den 328P kompiliert der zum 328PB binärkompatibel ist. Also 
weiterhin auf beide flashbar.
Sobald du aber in deiner Programmierumgebung den Ziel µC auf den 328PB 
umstellst, musst du ggf. dein gesamtes Programm überarbeiten, weil sich 
hier und da paar Registernamen und Bitnamen geändert haben. Weil deine 
Programmierumgebung dann das Headerfile vom 328PB verwendet. Nur auf 
einen 328PB flashbar.

Theoretisch sind Programme vom 328PB auch binär rückwärtskompatibel zum 
328P, solange man die zusätzlichen Features vom 328PB nicht verwendet. 
Also ihn programmiert als hätte man nur einen 328P vor sich. Das kann 
klappen, muss aber nicht.

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Lesenswert?

"Note:  Code compiled for ATmega328 variants are compatible and can be 
executed in the ATmega328PB device. Whereas, reverse code compatibility 
is not guaranteed."

MfG

von Carl D. (jcw2)


Lesenswert?

Der 328PB hat mehr Timer, statt 1x jeweils 2x UART/SPI/TWI, 
QTouch-Controller.
Damit sollte klar sein, daß die Nutzung dieser zusätzlichen Peripherie 
bei einer Ausführung auf dem "Vorgänger" zumindest nicht das gewünschte 
Verhalten zeigen wird. Umgekehrt wohl schon, da man ja dann die 
Zusatzfeatures gar nicht benutzt.

von Hendrik L. (lbd)


Lesenswert?

Veit D. schrieb:
> Ja ist korrekt.
>
> Edit:
> Nochmal anders. Solange in deiner Programmierumgebung der Ziel µC ein
> 328P bleibt, solange kannst du weiterhin am Programm schreiben. Wird ja
> am Ende für den 328P kompiliert der zum 328PB binärkompatibel ist. Also
> weiterhin auf beide flashbar.
> Sobald du aber in deiner Programmierumgebung den Ziel µC auf den 328PB
> umstellst, musst du ggf. dein gesamtes Programm überarbeiten, weil sich
> hier und da paar Registernamen und Bitnamen geändert haben. Weil deine
> Programmierumgebung dann das Headerfile vom 328PB verwendet. Nur auf
> einen 328PB flashbar.
>
> Theoretisch sind Programme vom 328PB auch binär rückwärtskompatibel zum
> 328P, solange man die zusätzlichen Features vom 328PB nicht verwendet.
> Also ihn programmiert als hätte man nur einen 328P vor sich. Das kann
> klappen, muss aber nicht.

Sehr gut - vielen Dank. So habe ich es mir intern auch hergeleitet, aber 
immer besser, andere Meinungen zu hören - kann viel Zeit sparen.

Danke an Alle!

Gruesse

von Peter D. (peda)


Lesenswert?

Problematisch ist nur, wenn der 328P am 20MHz Quarz läuft.
Der 328PB ist nur für 16MHz Quarz zugelassen.

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.