Kompatibilität µC untereinander, gleiches Programm unterschiedliche AVR's

Gast #1621275
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
Gast #1621283
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.
Gast #1621290
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.
Gast #1621372
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...
Gast #1621386
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).
Gast #1621391
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
Gast #1621445
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?
Gast #1621484
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.
Gast #1622914
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....

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren