Forum: Mikrocontroller und Digitale Elektronik Kompatibilität µC untereinander, gleiches Programm unterschiedliche AVR's


von Svenson (Gast)


Lesenswert?

Hallo,

wenn ich ein Programm auf einen anderen µC transferiere, kann ich davon 
ausgehen, dass bei gleicher Hardware-Umgebung und gleichem Code alles 
gleich läuft?
Problem: Ich habe das Programm auf einem Atmega8 geschrieben. Dieser ist 
aber nun für das fertige Projekt "überdimensioniert" und ich würde es 
gerne auf einen Attiny24 machen.
Wenn ich den Sourcecode anpasse, also die Registernamen unterscheiden 
sich ja geringfügig, aber das Programm ansich sonst lasse, funktioniert 
das ganze dann? Oder kann dies trotzdem Probleme hervorrufen?

Danke.

Gruß
Sven

von holger (Gast)


Lesenswert?

>Wenn ich den Sourcecode anpasse, also die Registernamen unterscheiden
>sich ja geringfügig, aber das Programm ansich sonst lasse, funktioniert
>das ganze dann? Oder kann dies trotzdem Probleme hervorrufen?

Meine Güte, probier es aus. Dann wirst du schon sehen ob es geht.

von Hannes L. (hannes)


Lesenswert?

Es kommt darauf an, wie die integrierten Hardware-Features genutzt 
werden. Die Ausstattung der verschiedenen AVRs ist sehr unterschiedlich. 
Ein einfaches Programm ohne Verwendung von Interrupts und anderer 
Spezialitäten (z.B. Hardware-PWM) wird vermutlich laufen.

...

von Svenson (Gast)


Lesenswert?

holger schrieb:
> Meine Güte, probier es aus. Dann wirst du schon sehen ob es geht.

Das habe ich. Und es treten Probleme auf, deshalb interessiert mich die 
Frage.
Das Programm läuft mit ein paar Interrupts. Das Input Capture macht 
Probleme. Vorher habe ich mit dem Noise Cancellor auf Atmega 8 saubere 
Signale. Auf dem Atmega44 irgendwie nicht mehr.
Daher meine Besorgnis, ob beim transferieren was schief ging, obwohl ich 
nun schon 2x mit den Datenblättern alles abgeglichen habe.

von Peter D. (peda)


Lesenswert?

Laut Datenblatt soll das Input Capture identisch sein. Der Fehler müßte 
also woanders liegen. Vielleicht nen Pullup am falschen Pin gesetzt?


Peter

von Flo (Gast)


Lesenswert?

Inzwischen versuchen sie bei den neuen AVRs, die kompatibilität über die 
Registernamen zu verbessern.
Allerdings gibts immer Pferdefüße beim Portieren auf andere uCs, wie die 
Interrupteinsprungvektoren, unterschiedliche Anzahl der Peripherie...

von Svenson (Gast)


Lesenswert?

Der Pullup ist extern und zusätzlich noch ein kleiner Kondensator gegen 
GND um Rauschen auch noch etwas hardwareseitig zu unterdrücken. Das 
funktionierte beim Atmega8 prima.
Ein paar Unterschiede gibt es beim Interrupt enable ist es z.B. TIMSK1 
statt TIMSK, aber das habe ich alles beachtet.

Mir geht es prinzipiell darum, ob man so etwas transferieren kann ohne 
Probleme oder ob ich tatsächlich irgendetwas im Code vergessen hätte zu 
ändern/transformieren (was mir bis nach dem jetzigen 3. mal nicht 
aufgefallen ist).

von spess53 (Gast)


Lesenswert?

Hi

>Mir geht es prinzipiell darum, ob man so etwas transferieren kann ohne
>Probleme oder ob ich tatsächlich irgendetwas im Code vergessen hätte zu
>ändern/transformieren (was mir bis nach dem jetzigen 3. mal nicht
>aufgefallen ist).

Z.B. besitzen ATTinys, im Gegensatz zu den ATMegas, keinen 
Hardwaremultiplizierer.

MfG Spess

von Svenson (Gast)


Lesenswert?

spess53 schrieb:
> Z.B. besitzen ATTinys, im Gegensatz zu den ATMegas, keinen
> Hardwaremultiplizierer.
>
> MfG Spess

Was bedeutet das konkret?
In meinem Programm werden nur ein paar eingelesene ADC Werte in einen 
Wert umgerechnet mit einer Multiplikation. Das sollte doch kein Problem 
sein oder? Muss ich hierfür dann eine spezielle library aufrufen bzw. 
includieren?

von (prx) A. K. (prx)


Lesenswert?

Konkret bedeute es, dass die Multipliktion bei Programmierung in C auf 
Tinys etwas langsamer ist als auf Megas, sonst nichts. Das ist Sache des 
Compilers, nicht deine.

von spess53 (Gast)


Lesenswert?

Hi

>Das ist Sache des Compilers, nicht deine.

Wenn man einen benutzt. Sonst schon.

MfG Spess

von Svenson (Gast)


Lesenswert?

Das Programm ist mit GCC geschrieben (Programmers Notepad) und sollte 
daher wohl kein Problem sein.
Naja, ich werde morgen mal das Programm kürzen und die Peripherie 
rausschmeisen und nur das ICP laufen lassen. Mal schauen, wie es sich 
dann verhält...

Trotzdem Danke.

von Svenson (Gast)


Lesenswert?

Hallo,

ich habe heute das Programm reduziert, sodass wirklich nur die Ports und 
der Timer für das Input Capture initialisiert werden.
Ebenso nur der Interrupt für Input Captute, welches bei einer Flanke die 
LED einschaltet, die Flanke wechselt, und wieder ausschaltet. Das 
Hauptprogramm ist eine leere Schleife.
Das Programm ist also wirklich total abgespeckt, aber irgendwie bekomme 
ich trotzdem rauschen, da die LED manchmal nicht an- oder abgeschaltet 
wird.

Kann so etwas sein? Das gleiche Programm bei gleicher Hardware läuft auf 
dem Atmega8 ohne Probleme....

von Grrrr (Gast)


Lesenswert?

Also das ist alles zu spekulativ. Poste mal den Schaltplan und den Code.

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.