www.mikrocontroller.net

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


Autor: Svenson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Svenson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Svenson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Svenson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das ist Sache des Compilers, nicht deine.

Wenn man einen benutzt. Sonst schon.

MfG Spess

Autor: Svenson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Svenson (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das ist alles zu spekulativ. Poste mal den Schaltplan und den Code.

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.